LCOV - code coverage report
Current view: top level - frmts/hdf4 - hdf4dataset.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 2 2 100.0 %
Date: 2024-11-21 22:18:42 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  * $Id$
       3             :  *
       4             :  * Project:  Hierarchical Data Format Release 4 (HDF4)
       5             :  * Purpose:  Header file for HDF4 datasets reader.
       6             :  * Author:   Andrey Kiselev, dron@ak4719.spb.edu
       7             :  *
       8             :  ******************************************************************************
       9             :  * Copyright (c) 2002, Andrey Kiselev <dron@ak4719.spb.edu>
      10             :  *
      11             :  * SPDX-License-Identifier: MIT
      12             :  ****************************************************************************/
      13             : 
      14             : #ifndef HDF4DATASET_H_INCLUDED_
      15             : #define HDF4DATASET_H_INCLUDED_
      16             : 
      17             : #include "hdf.h"
      18             : #include "mfhdf.h"
      19             : 
      20             : #include "cpl_list.h"
      21             : #include "gdal_pam.h"
      22             : 
      23             : typedef enum  // Types of dataset:
      24             : {
      25             :     HDF4_SDS,  // Scientific Dataset
      26             :     HDF4_GR,   // General Raster Image
      27             :     HDF4_EOS,  // HDF EOS
      28             :     HDF4_UNKNOWN
      29             : } HDF4DatasetType;
      30             : 
      31             : typedef enum  // Types of data products:
      32             : {
      33             :     H4ST_GDAL,            // HDF written by GDAL
      34             :     H4ST_EOS_GRID,        // HDF-EOS Grid
      35             :     H4ST_EOS_SWATH,       // HDF-EOS Swath
      36             :     H4ST_EOS_SWATH_GEOL,  // HDF-EOS Swath Geolocation Array
      37             :     H4ST_SEAWIFS_L1A,     // SeaWiFS Level-1A Data
      38             :     H4ST_SEAWIFS_L2,      // SeaWiFS Level-2 Data
      39             :     H4ST_SEAWIFS_L3,      // SeaWiFS Level-3 Standard Mapped Image
      40             :     H4ST_HYPERION_L1,     // Hyperion L1 Data Product
      41             :     H4ST_UNKNOWN
      42             : } HDF4SubdatasetType;
      43             : 
      44             : /************************************************************************/
      45             : /* ==================================================================== */
      46             : /*                              HDF4Dataset                             */
      47             : /* ==================================================================== */
      48             : /************************************************************************/
      49             : 
      50             : class HDF4Dataset CPL_NON_FINAL : public GDALPamDataset
      51             : {
      52             : 
      53             :   private:
      54             :     bool bIsHDFEOS;
      55             :     std::shared_ptr<GDALGroup> m_poRootGroup{};
      56             : 
      57             :     static char **HDF4EOSTokenizeAttrs(const char *pszString);
      58             :     static char **HDF4EOSGetObject(char **papszAttrList, char **ppszAttrName,
      59             :                                    char **ppszAttrClass, char **ppszAttrValue);
      60             : 
      61             :     void OpenMultiDim(const char *pszFilename, CSLConstList papszOpenOptionsIn);
      62             : 
      63             :   protected:
      64             :     int32 hGR;
      65             :     int32 hSD;
      66             :     int32 nImages;
      67             :     HDF4SubdatasetType iSubdatasetType;
      68             :     const char *pszSubdatasetType;
      69             : 
      70             :     char **papszGlobalMetadata;
      71             :     char **papszSubDatasets;
      72             : 
      73             :     CPLErr ReadGlobalAttributes(int32);
      74             : 
      75             :   public:
      76             :     static GDALDataType GetDataType(int32);
      77             :     static const char *GetDataTypeName(int32);
      78             :     static int GetDataTypeSize(int32);
      79             :     static double AnyTypeToDouble(int32, void *);
      80             :     static char **TranslateHDF4Attributes(int32, int32, char *, int32, int32,
      81             :                                           char **);
      82             :     static char **TranslateHDF4EOSAttributes(int32, int32, int32, char **);
      83             : 
      84             :   public:
      85             :     HDF4Dataset();
      86             :     virtual ~HDF4Dataset();
      87             : 
      88           6 :     std::shared_ptr<GDALGroup> GetRootGroup() const override
      89             :     {
      90           6 :         return m_poRootGroup;
      91             :     }
      92             : 
      93             :     virtual char **GetMetadataDomainList() override;
      94             :     virtual char **GetMetadata(const char *pszDomain = "") override;
      95             :     static GDALDataset *Open(GDALOpenInfo *);
      96             : };
      97             : 
      98             : char *SPrintArray(GDALDataType eDataType, const void *paDataArray, int nValues,
      99             :                   const char *pszDelimiter);
     100             : 
     101             : #endif /* HDF4DATASET_H_INCLUDED_ */

Generated by: LCOV version 1.14