/usr/include/XdmfHDF.h is in libxdmf-dev 2.1.dfsg.1-11+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | /*******************************************************************/
/*                               XDMF                              */
/*                   eXtensible Data Model and Format              */
/*                                                                 */
/*  Id : $Id: XdmfHDF.h,v 1.7 2009-06-23 13:41:05 clarke Exp $  */
/*  Date : $Date: 2009-06-23 13:41:05 $ */
/*  Version : $Revision: 1.7 $ */
/*                                                                 */
/*  Author:                                                        */
/*     Jerry A. Clarke                                             */
/*     clarke@arl.army.mil                                         */
/*     US Army Research Laboratory                                 */
/*     Aberdeen Proving Ground, MD                                 */
/*                                                                 */
/*     Copyright @ 2002 US Army Research Laboratory                */
/*     All Rights Reserved                                         */
/*     See Copyright.txt or http://www.arl.hpc.mil/ice for details */
/*                                                                 */
/*     This software is distributed WITHOUT ANY WARRANTY; without  */
/*     even the implied warranty of MERCHANTABILITY or FITNESS     */
/*     FOR A PARTICULAR PURPOSE.  See the above copyright notice   */
/*     for more information.                                       */
/*                                                                 */
/*******************************************************************/
#ifndef __XdmfHDF_h
#define __XdmfHDF_h
#include "XdmfHeavyData.h"
#define XDMF_H5_DIRECTORY  H5G_GROUP
#define XDMF_H5_DATASET    H5G_DATASET
#define XDMF_H5_UNKNOWN    H5G_UNKNOWN
#define XDMF_H5_OTHER    0xFF
class XdmfArray;
//! Class for Accessing HDF5 Data
/*!
This is a convenience object for reading and writing
HDF5 Files. Use this to remain XDMF compliant.
Datasets in HDF5 are specified by :
  Domain:Filename:Pathname
where
  Domain = NDGM | FILE | CORE | GASS
    if Domain is not specified,
    FILE is assumed
  Filename = UNIX style Pathname of HDF5 file
  Pathname = HDF5 Pathname inside HDF5 File
XdmfHDF confines HDF5 to using only HDF5 Groups and
HDF5 Datasets. HDF5 Attributes (Name=Value pairs) are
not used (that function is served by XML). HDF5 Groups
are treated like "Directories" on a UNIX filesystem.
HDF5 Datasets are treated like "Files" on a UNIX
Filesystem.
Example of Createing an HDF5 File :
\code
        XdmfHDF         *H5 = new XdmfHDF();
        XdmfArray       *MyData = new XdmfArray();
        XdmfConstString DataSetNameConst;
        MyData->SetNumberType(XDMF_FLOAT32_TYPE);
        MyData->SetNumberOfElements(100);
        MyData->Generate(0, 99);
        DataSetNameConst = "FILE:TestFile.h5:/TestDataSets/Values1";
        H5->CopyType( MyData );
        H5->CopyShape( MyData );
        H5->Open( DataSetName, "rw" );
        H5->Write( MyData );
        H5->Close();
\endcode
This would create an HDF5 file with one Group (TestDataSets) and one Dataset in
that Group (Values1). The Dataset would be 100 32 bit floating point values
ranging from 0-99.
*/
class XDMF_EXPORT XdmfHDF : public XdmfHeavyData {
public:
  XdmfHDF();
  ~XdmfHDF();
  XdmfConstString GetClassName() { return ( "XdmfHDF" ) ; };
//! Set Compression Level to 0 - 9 . Level <= 0 is Off
/*!
        Compression level refers to the next dataset that is
        created. Once a dataset is created, the compression
        level does not change.
        Compression Levels 1-9 are progressively slower but
        result in much smaller HDF5 files. Compression uses
        the libz compression and "CHUNKS" the HDF5 file
        in the major dimension.
*/
  XdmfSetValueMacro(Compression, XdmfInt32);
//! Get Compression Level
  XdmfGetValueMacro(Compression, XdmfInt32);
//! Use Serial File Interface even if Parallel is Available
  XdmfSetValueMacro(UseSerialFile, XdmfInt32);
//! Get Value of Use Serial
  XdmfGetValueMacro(UseSerialFile, XdmfInt32);
//! Set the current internal HDF "Group" for creation
  XdmfInt32 SetCwdName( XdmfConstString Directory );
//! Get the current internal HDF "Group"
  XdmfGetValueMacro(CwdName, XdmfString );
//! Go to another HDF5 "Group"
  XdmfInt32 Cd( XdmfConstString Directory = "/"  ) {
    return( this->SetCwdName( Directory ) );
    };
//! Create an HDF5 Gourp
  XdmfInt32 Mkdir( XdmfString Name );
//! Get the number of members in the current HDF5 Group
  XdmfGetValueMacro( NumberOfChildren, XdmfInt64);
//! Get the HDF5 Library Version as Major.Minor.Release
  XdmfConstString GetHDFVersion(void);
//! Get the n'th child in the current group
  XdmfConstString GetChild( XdmfInt64 Index ) {
    if ( Index >= this->NumberOfChildren ) {
      return( "" );
    }
    return( this->Child[ Index ] );
    };
//! Internal Call to set the name of the next child in the list
  void SetNextChild( XdmfConstString Name );
//! Internal HDF5 info
  XdmfInt32 Info( hid_t Group, XdmfConstString Name );
//! Get The Type of the Child : Directory, Dataset, ot Other
  XdmfInt32 GetChildType( XdmfInt64 Index ) {
    switch( this->Info( this->Cwd, this->GetChild( Index ) ) ) {
      case H5G_GROUP :
        return ( XDMF_H5_DIRECTORY );
      case H5G_DATASET :
        return ( XDMF_H5_DATASET );
      case XDMF_FAIL :
        return( XDMF_H5_UNKNOWN );
      default :
        break;
      }
  return( XDMF_H5_OTHER );
  };
//! Get The Type of the Child as a String 
  XdmfConstString GetChildTypeAsString( XdmfInt64 Index ) {
    switch( this->GetChildType( Index ) ) {
      case XDMF_H5_DIRECTORY :
        return("XDMF_H5_DIRECTORY");
      case XDMF_H5_DATASET :
        return("XDMF_H5_DATASET");
      case XDMF_H5_UNKNOWN :
        return("XDMF_H5_UNKNOWN");
      }  
  return("XDMF_H5_OTHER");
  };
//! Create a new dataset in the current Group
  XdmfInt32 CreateDataset( XdmfConstString Path = NULL );
//! Open an existing Dataset in a currently open HDF5 file
  XdmfInt32 OpenDataset();
//! Open an HDF5 file and OpenDataset = DataSetName
/*!
    \verbatim
    Access is one of :
        "rw" | "wr" - Open for reading and writing. Create if necessary.
        "r+"        - Open for reading and writing.
        "w"         - Open for Writing. Create if necessary. This will truncate the file.
        "w+"        - Open for Writing. This will truncate the file.
        "r"         - Open for Read Only.
    \endverbatim
*/
  virtual XdmfInt32 DoOpen( 
    XdmfConstString DataSetName,
    XdmfConstString Access );
/*!
Read the curently open dataset into and Array.
*/
  virtual XdmfArray* DoRead( XdmfArray *Array );
/*!
Write to the curently open dataset from and Array.
*/
  virtual XdmfInt32 DoWrite( XdmfArray *Array );
//! Close the HDF5  File
  virtual XdmfInt32 DoClose();
protected:
  hid_t    File;
  hid_t    Cwd;
  hid_t    Dataset;
  hid_t    CreatePlist;
  hid_t    AccessPlist;
  char    CwdName[XDMF_MAX_STRING_LENGTH];
  XdmfInt32  Compression;
  XdmfInt32  UseSerialFile;
  XdmfInt64  NumberOfChildren;
  XdmfString  Child[1024];
};
/*
extern XdmfArray *CreateArrayFromType( XdmfType *Type,
  XdmfInt64 NumberOfElements = 10 );
*/
extern XDMF_EXPORT XdmfArray *CopyArray( XdmfArray *Source, XdmfArray *Target = NULL );
#endif // __XdmfHDF_h
 |