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: 2025-01-18 12:42:00 Functions: 1 1 100.0 %

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

Generated by: LCOV version 1.14