/****************************************************************************** * $Id: hdf5dataset.h,v 1.6 2006/04/04 03:27:19 fwarmerdam Exp $ * * Project: Hierarchical Data Format Release 5 (HDF5) * Purpose: Header file for HDF5 datasets reader. * Author: Denis Nadeau (denis.nadeau@gmail.com) * ****************************************************************************** * Copyright (c) 2005, Frank Warmerdam * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: hdf5dataset.h,v $ * Revision 1.6 2006/04/04 03:27:19 fwarmerdam * Fixed copyright holder line. * * Revision 1.5 2006/01/23 14:16:31 dnadeau * Add pszUnderscorePath variable to HDF5Dataset class * * Revision 1.4 2005/08/23 20:11:46 dnadeau * HDF5 add Metadata * * Revision 1.3 2005/07/27 16:42:13 dnadeau * change variable to hdf5imagedataset class * * * */ #ifndef _HDF5DATASET_H_INCLUDED_ #define _HDF5DATASET_H_INCLUDED_ #include "cpl_list.h" typedef struct HDF5GroupObjects { char *pszName; char *pszPath; char *pszUnderscorePath; char *pszTemp; int nType; int nIndex; int nbObjs; int nbAttrs; int nRank; hsize_t *paDims; hid_t native; hid_t HDatatype; struct HDF5GroupObjects *poHparent; struct HDF5GroupObjects *poHchild; } HDF5GroupObjects; herr_t HDF5CreateGroupObjs(hid_t, const char *,void *); /************************************************************************/ /* ==================================================================== */ /* HDF5Dataset */ /* ==================================================================== */ /************************************************************************/ class HDF5Dataset : public GDALDataset { protected: FILE *fp; hid_t hHDF5; hid_t hDatasetID; hid_t hGroupID; /* H handler interface */ char **papszSubDatasets; int bIsHDFEOS; int nDatasetType; int nSubDataCount; char *pszFilename; HDF5GroupObjects *poH5RootGroup; /* Contain hdf5 Groups information */ CPLErr ReadGlobalAttributes(int); CPLErr HDF5ListGroupObjects(HDF5GroupObjects *, int ); CPLErr CreateMetadata( HDF5GroupObjects *, int ); HDF5GroupObjects* HDF5FindDatasetObjects( HDF5GroupObjects *, char * ); HDF5GroupObjects* HDF5FindDatasetObjectsbyPath( HDF5GroupObjects *, char * ); char* CreatePath(HDF5GroupObjects *); void DestroyH5Objects(HDF5GroupObjects *); GDALDataType GetDataType(hid_t); const char * GetDataTypeName(hid_t); public: char **papszMetadata; HDF5GroupObjects *poH5CurrentObject; HDF5Dataset(); ~HDF5Dataset(); virtual char **GetMetadata(const char * pszDomain = ""); static GDALDataset *Open(GDALOpenInfo *); }; #endif /* _HDF5DATASET_H_INCLUDED_ */