bes  Updated for version 3.20.13
HDFSP.h
1 // This file is part of the hdf4 data handler for the OPeNDAP data server.
12 // TRMM version 7 Level2
13 // TRMM version 7 Level3
23 
32 
33 
34 //#include <libdap/InternalErr.h>
35 #ifndef _HDFSP_H
36 #define _HDFSP_H
37 
38 #include <iostream>
39 #include <sstream>
40 #include <string>
41 #include <vector>
42 #include <map>
43 #include <set>
44 #include <list>
45 #include "mfhdf.h"
46 #include "hdf.h"
47 
48 #include "HDFSPEnumType.h"
49 
50 #define MAX_FULL_PATH_LEN 1024
51 //#define EOS_DATA_PATH "Data Fields"
52 //#define EOS_GEO_PATH "Geolocation Fields"
53 
54 #define _HDF_CHK_TBL_CLASS "_HDF_CHK_TBL_"
55 #define CERE_META_NAME "CERES_metadata"
56 #define CERE_META_FIELD_NAME "LOCALGRANULEID"
57 #define SENSOR_NAME "Sensor Name"
58 #define PRO_NAME "Product Name"
59 #define CER_AVG_NAME "CER_AVG"
60 #define CER_ES4_NAME "CER_ES4"
61 #define CER_CDAY_NAME "CER_ISCCP-D2like-Day"
62 #define CER_CGEO_NAME "CER_ISCCP-D2like-GEO"
63 #define CER_SRB_NAME "CER_SRBAVG3"
64 #define CER_SYN_NAME "CER_SYN"
65 #define CER_ZAVG_NAME "CER_ZAVG"
66 
67 
82 
83 
84 
85 namespace HDFSP
86 {
89  class File;
90  class SD;
91  class VDATA;
92 
93  class Exception:public std::exception
94  {
95  public:
96 
98  explicit Exception (const std::string & msg)
99  : message (msg)
100  {
101  }
102 
104  ~ Exception () throw () override = default;
105 
107  const char *what () const throw () override
108  {
109  return this->message.c_str ();
110  }
111 
113  virtual void setException (const std::string &exception_message)
114  {
115  this->message = exception_message;
116  }
117 
118 
119  private:
121  std::string message;
122  };
123 
124 
127  class Dimension
128  {
129  public:
130 
132  const std::string & getName () const
133  {
134  return this->name;
135  }
136 
138  int32 getSize () const
139  {
140  return this->dimsize;
141  }
142 
145  int32 getType () const
146  {
147  return this->dimtype;
148  }
149 
150  protected:
151  Dimension (const std::string & dim_name, int32 hdf4_dimsize, int32 hdf4_dimtype)
152  : name (dim_name), dimsize (hdf4_dimsize), dimtype (hdf4_dimtype)
153  {
154  }
155 
156  private:
157  // dimension name
158  std::string name;
159 
160  // dimension size
161  int32 dimsize;
162 
164  int32 dimtype;
165 
166  friend class SD;
167  friend class File;
168  friend class SDField;
169  };
170 
172  class Attribute
173  {
174  public:
175 
177  const std::string & getName () const
178  {
179  return this->name;
180  }
181 
183  const std::string & getNewName () const
184  {
185  return this->newname;
186  }
187 
189  int32 getType () const
190  {
191  return this->type;
192  }
193 
195  int32 getCount () const
196  {
197  return this->count;
198  }
199 
201  const std::vector < char >&getValue () const
202  {
203  return this->value;
204  }
205 
206  private:
207 
209  std::string name;
210 
212  std::string newname;
213 
215  int32 type;
216 
218  int32 count;
219 
221  std::vector < char >value;
222 
223  friend class SD;
224  friend class VDATA;
225  friend class File;
226  friend class Field;
227  friend class VDField;
228  };
229 
235 
236  public:
237  AttrContainer() = default;
238  ~AttrContainer();
239 
240 
242  const std::string & getName () const
243  {
244  return this->name;
245  }
246 
249 #if 0
250  // const std::string & getNewName () const
251  //{
252  // return this->newname;
253  //}
254 #endif
255  const std::vector < Attribute * >&getAttributes () const
256  {
257  return this->attrs;
258  }
259 
260  private:
261 
262  // The name of this attribute container(an attribute container is a DAP DAS table)
263  std:: string name;
264 
265  // The attributes in this attribute container
266  std::vector < Attribute * >attrs;
267  friend class SD;
268  friend class File;
269 
270  };
271 
272 
273  // This field class describes SDS or Vdata fields.
274  class Field
275  {
276  public:
277  Field () = default;
278 
279  virtual ~ Field ();
280 
282  const std::string & getName () const
283  {
284  return this->name;
285  }
286 
288  const std::string & getNewName () const
289  {
290  return this->newname;
291  }
292 
294  int32 getRank () const
295  {
296  return this->rank;
297  }
298 
300  int32 getType () const
301  {
302  return this->type;
303  }
304 
306  const std::vector < Attribute * >&getAttributes () const
307  {
308  return this->attrs;
309  }
310 
311 
312  protected:
313 
315  std::string newname;
316 
318  std::string name;
319 
321  int32 type = -1;
322 
324  int32 rank = -1;
325 
327  std::vector < Attribute * >attrs;
328 
329  friend class SD;
330  friend class VDATA;
331  friend class File;
332  };
333 
335 
336  class SDField:public Field
337  {
338  public:
339  SDField () = default;
340  ~SDField () override;
341 
342 
344  const std::vector < Dimension * >&getCorrectedDimensions () const
345  {
346  return this->correcteddims;
347  }
348 
350  std::vector < Dimension * >*getCorrectedDimensionsPtr ()
351  {
352  return &(this->correcteddims);
353  }
354 
356  void setCorrectedDimensions (const std::vector < Dimension * > &cor_dims)
357  {
358  correcteddims = cor_dims;
359  }
360 
362  std::string getCoordinate () const
363  {
364  return this->coordinates;
365  }
366 
368  void setCoordinates (const std::string& coor)
369  {
370  coordinates = coor;
371  }
372 
374  std::string getUnits () const
375  {
376  return this->units;
377  }
378 
379  // Set the "units" attribute
380  void setUnits (const std::string &uni)
381  {
382  units = uni;
383  }
384 
385  // Get the field type
386  int getFieldType () const
387  {
388  return this->fieldtype;
389  }
390 
391  // Get the SDS reference number
392  int32 getFieldRef () const
393  {
394  return this->fieldref;
395  }
396 
398  const std::vector < Dimension * >&getDimensions () const
399  {
400  return this->dims;
401  }
402 
404  const std::vector < AttrContainer * >&getDimInfo () const
405  {
406  return this->dims_info;
407  }
408 
409 
411  bool IsDimNoScale() const
412  {
413  return is_noscale_dim;
414  }
415 
417  bool IsDimScale() const
418  {
419  return is_dim_scale;
420  }
421 
423  std::string getSpecFullPath() const
424  {
425  return special_product_fullpath;
426  }
427  private:
428 
430  std::vector < Dimension * >dims;
431 
435  std::vector < Dimension * >correcteddims;
436 
438  std::vector<AttrContainer *>dims_info;
439 
440  std::string coordinates;
441 
448  int fieldtype = 0;
449 
451  std::string units;
452 
463  std::string special_product_fullpath;
464 
466  int32 fieldref = -1;
467 
468 #if 0
470  bool condenseddim = false;
471 #endif
472 
475  bool is_noscale_dim = false;
476 
478  bool is_dim_scale = false;
479 
482  std::string rootfieldname;
483 
484  friend class File;
485  friend class SD;
486  };
487 
489  class VDField:public Field
490  {
491  public:
492  VDField () = default;
493  ~VDField () override = default;
494 
496  int32 getFieldOrder ()const
497  {
498  return this->order;
499  }
500 
502  int32 getFieldsize () const
503  {
504  return this->size;
505  }
506 
508  int32 getNumRec () const
509  {
510  return this->numrec;
511  }
512 
514  const std::vector < char >&getValue () const
515  {
516  return this->value;
517  }
518 
520  void ReadAttributes (int32 vdata_id, int32 fieldindex) throw (Exception);
521 
522  private:
523 
525  int32 order = -1;
526 
528  int32 numrec = -1;
529 
531  int32 size = -1;
532 
534  std::vector < char >value;
535 
536  friend class File;
537  friend class VDATA;
538  };
539 
541  class SD
542  {
543  public:
544 
546  static SD *Read (int32 sdfileid, int32 hfileid) throw (Exception);
547 
549  static SD *Read_Hybrid (int32 sdfileid, int32 hfileid) throw (Exception);
550 
552 #if 0
554  const std::string & getPath () const
555  {
556  return this->path;
557  }
558 #endif
559 
561  const std::vector < SDField * >&getFields () const
562  {
563  return this->sdfields;
564  }
565 
567  const std::vector < Attribute * >&getAttributes () const
568  {
569  return this->attrs;
570  }
571 
573  void obtain_noneos2_sds_path(int32,char*,int32) throw(Exception);
574 
575 
577  ~SD ();
578 
579  SD() = default;
580 #if 0
581  SD (int32 sdfileid, int32 hfileid)
582  : sdfd (sdfileid), fileid (hfileid)
583  {
584  }
585 #endif
586 
587  private:
589  std::vector < SDField * >sdfields;
590 
592  std::vector < Attribute * >attrs;
593 
595  std::list <int32> sds_ref_list;
596 
598  std::map < int32, int >refindexlist;
599 
602  std::map < std::string, int32 > n1dimnamelist;
603 
605  std::map < std::string, std::string > n2dimnamelist;
606 
608  std::set < std::string > fulldimnamelist;
609 
613  std::set < std::string > nonmisscvdimnamelist;
614 
616  std::map < std::string, std::string > dimcvarlist;
617 
618 #if 0
619  private:
620 
622  int32 sdfd;
624  int32 fileid;
625 #endif
626  friend class File;
627  };
628 
630  class VDATA
631  {
632  public:
633 
634  ~VDATA ();
635 
637  static VDATA *Read (int32 vdata_id, int32 obj_ref) throw (Exception);
638 
640  void ReadAttributes (int32 vdata_id) throw (Exception);
641 
643  const std::string & getNewName () const
644  {
645  return this->newname;
646  }
647 
649  const std::string & getName () const
650  {
651  return this->name;
652  }
653 
655  const std::vector < VDField * >&getFields () const
656  {
657  return this->vdfields;
658  }
659 
661  const std::vector < Attribute * >&getAttributes () const
662  {
663  return this->attrs;
664  }
665 
669  bool getTreatAsAttrFlag () const
670  {
671  return TreatAsAttrFlag;
672  }
673 
675  int32 getObjRef () const
676  {
677  return vdref;
678  }
679 
680 #if 0
681  VDATA (int32 vdata_myid, int32 obj_ref)
682  :vdref(obj_ref),vdata_id (vdata_myid) {
683  }
684 #endif
685  VDATA (int32 obj_ref)
686  :vdref(obj_ref){
687  }
688 
689  private:
691  std::string newname;
692 
694  std::string name;
695 
697  std::vector < VDField * >vdfields;
698 
700  std::vector < Attribute * >attrs;
701 
703  int32 vdref;
704 
706  bool TreatAsAttrFlag = true;
707 
708 #if 0
710  int32 vdata_id;
711 #endif
712 
713  friend class File;
714  };
715 
718  class File
719  {
720  public:
721 
723  static File *Read (const char *path, int32 sdid,int32 fileid) throw (Exception);
724 
727  static File *Read_Hybrid (const char *path, int32 sdid,
728  int32 fileid) throw (Exception);
729 
733  void Prepare() throw(Exception);
734 
735  bool Check_update_special(const std::string &gridname) throw(Exception);
736 
737  void Handle_AIRS_L23() throw(Exception);
738 
739 
741  SPType getSPType () const
742  {
743  return this->sptype;
744  }
745 
747 
749  {
750  return this->OTHERHDF_Has_Dim_NoScale_Field;
751  }
752 
753  // Destructor
754  ~File ();
755 
757  const std::string & getPath () const
758  {
759  return this->path;
760  }
761 
763  SD *getSD () const
764  {
765  return this->sd;
766  }
767 
769  const std::vector < VDATA * >&getVDATAs () const
770  {
771  return this->vds;
772  }
773 
775  const std::vector<AttrContainer *> &getVgattrs () const
776  {
777  return this->vg_attrs;
778  }
779 
780 
781 
782  protected:
783  explicit File (const char *hdf4file_path)
784  : path (hdf4file_path)
785  {
786  }
787 
788 
789 #if 0
791  std::string path;
792 
794  SD *sd;
795 
797  std::vector < VDATA * >vds;
798 
800  std::vector<AttrContainer *>vg_attrs;
801 #endif
802 
805  void handle_sds_fakedim_names() throw(Exception);
806 
809 
812 
814  void handle_sds_final_dim_names() throw(Exception);
815 
817  void handle_sds_names(bool & COARDFLAG , std::string & lldimname1, std::string &lldimname2) throw(Exception);
818 
820  void handle_sds_coords(bool & COARDFLAG, std::string &lldimname1,std::string &lldimname2) throw(Exception);
821 
823  void handle_vdata() throw(Exception);
824 
826  void CheckSDType () throw (Exception);
827 
829  void PrepareTRMML2_V6 () throw (Exception);
830 
832  void PrepareTRMML3A_V6 () throw (Exception);
833 
835  void PrepareTRMML3B_V6 () throw (Exception);
836 
838  void PrepareTRMML3C_V6 () throw (Exception);
839 
841  void Obtain_TRMML3S_V7_latlon_size(int &latsize, int&lonsize);
842 
843  bool Obtain_TRMM_V7_latlon_name(const SDField* sdfield, const int latsize, const int lonsize, std::string& latname, std::string& lonname) throw(Exception);
844 
846  void PrepareTRMML2_V7 () throw (Exception);
847 
849  void PrepareTRMML3S_V7 () throw (Exception);
850 
852  void PrepareTRMML3M_V7 () ;
853 
854 
857  void PrepareCERAVGSYN () throw (Exception);
858 
861  void PrepareCERES4IG () throw (Exception);
862 
866  void PrepareCERSAVGID () throw (Exception);
867 
869  void PrepareCERZAVG () throw (Exception);
870 
872  void PrepareOBPGL2 () throw (Exception);
873 
875  void PrepareOBPGL3 () throw (Exception);
876 
879  void PrepareMODISARNSS () throw (Exception);
880 
882  void PrepareOTHERHDF () throw (Exception);
883 
885  void ReadLoneVdatas(File*) throw(Exception);
886 
889  void ReadHybridNonLoneVdatas(File*) throw(Exception);
890 
892  void ReadVgattrs(int32 vgroup_id, const char *fullpath) throw(Exception);
893 
895  void InsertOrigFieldPath_ReadVgVdata () throw (Exception);
896 
898  void obtain_path (int32 file_id, int32 sd_id, char *full_path, int32 pobj_ref) throw (Exception);
899 
901  void obtain_vdata_path(int32 file_id, char *full_path, int32 pobj_ref) throw (Exception);
902 
903 
904  private:
905 
907  std::string path;
908 
910  SD *sd = nullptr;
911 
913  std::vector < VDATA * >vds;
914 
916  std::vector<AttrContainer *>vg_attrs;
917 
918 
920  int32 sdfd = -1;
921 
923  int32 fileid = -1;
924 
926  SPType sptype = OTHERHDF;
927 
929  bool OTHERHDF_Has_Dim_NoScale_Field = false;
930 
933  bool EOS2Swathflag = false;
934  };
935 
936 }
937 
938 
939 #endif
const std::vector< Attribute * > & getAttributes() const
Definition: HDFSP.h:255
const std::string & getName() const
Get the name of this attribute container.
Definition: HDFSP.h:242
Representing one attribute in grid or swath.
Definition: HDFSP.h:173
const std::string & getNewName() const
Get the CF attribute name(special characters are replaced by underscores)
Definition: HDFSP.h:183
const std::vector< char > & getValue() const
Get the attribute value.
Definition: HDFSP.h:201
int32 getType() const
Get the attribute datatype.
Definition: HDFSP.h:189
int32 getCount() const
Get the number of elements of this attribute.
Definition: HDFSP.h:195
const std::string & getName() const
Get the attribute name.
Definition: HDFSP.h:177
int32 getSize() const
Get dimension size.
Definition: HDFSP.h:138
const std::string & getName() const
Get dimension name.
Definition: HDFSP.h:132
int32 getType() const
Definition: HDFSP.h:145
~ Exception() override=default
Destructor.
const char * what() const override
Return exception message.
Definition: HDFSP.h:107
Exception(const std::string &msg)
Constructor.
Definition: HDFSP.h:98
virtual void setException(const std::string &exception_message)
Set exception message.
Definition: HDFSP.h:113
const std::vector< Attribute * > & getAttributes() const
Get the attributes of this field.
Definition: HDFSP.h:306
const std::string & getName() const
Get the name of this field.
Definition: HDFSP.h:282
int32 rank
The rank of this field.
Definition: HDFSP.h:324
std::vector< Attribute * > attrs
The attributes of this field.
Definition: HDFSP.h:327
std::string newname
The CF full path(special characters replaced by underscores) of this field.
Definition: HDFSP.h:315
int32 type
The datatype of this field.
Definition: HDFSP.h:321
int32 getType() const
Get the data type of this field.
Definition: HDFSP.h:300
const std::string & getNewName() const
Get the CF name(special characters replaced by underscores) of this field.
Definition: HDFSP.h:288
std::string name
The original name of this field.
Definition: HDFSP.h:318
int32 getRank() const
Get the dimension rank of this field.
Definition: HDFSP.h:294
static File * Read(const char *path, int32 sdid, int32 fileid)
Retrieve SDS and Vdata information from the HDF4 file.
Definition: HDFSP.cc:208
void handle_sds_final_dim_names()
Create the final CF-compliant dimension name list for each field.
Definition: HDFSP.cc:3720
void PrepareTRMML3M_V7()
Special method to prepare TRMM multiple grid Level 3 geolocation fields(latitude,longitude,...
Definition: HDFSP.cc:4785
void handle_sds_coords(bool &COARDFLAG, std::string &lldimname1, std::string &lldimname2)
Create "coordinates", "units" CF attributes.
Definition: HDFSP.cc:3953
void handle_vdata()
Handle Vdata.
Definition: HDFSP.cc:4037
void Prepare()
Definition: HDFSP.cc:4089
void PrepareMODISARNSS()
Definition: HDFSP.cc:6198
void handle_sds_missing_fields()
Add the missing coordinate variables based on the corrected dimension name list.
Definition: HDFSP.cc:3684
void PrepareTRMML3S_V7()
Special method to prepare TRMM single grid Level 3 geolocation fields(latitude,longitude,...
Definition: HDFSP.cc:4449
bool Has_Dim_NoScale_Field() const
This file has a field that is a SDS dimension but no dimension scale.
Definition: HDFSP.h:748
void CheckSDType()
This method will check if the HDF4 file is one of TRMM or OBPG products we supported.
Definition: HDFSP.cc:1283
SD * getSD() const
Public interface to Obtain SD.
Definition: HDFSP.h:763
void ReadVgattrs(int32 vgroup_id, const char *fullpath)
Obtain vgroup attributes.
Definition: HDFSP.cc:2654
void PrepareTRMML2_V7()
Latitude and longitude are stored in different fields. Need to separate.
Definition: HDFSP.cc:4299
void PrepareCERAVGSYN()
Definition: HDFSP.cc:5775
void Obtain_TRMML3S_V7_latlon_size(int &latsize, int &lonsize)
void Obtain_TRMML3S_V7_latlon_size(int &latsize, int&lonsize) throw(Exception);
Definition: HDFSP.cc:4249
void PrepareTRMML3C_V6()
Special method to prepare TRMM Level 3 CSH latitude,longitude and Height information.
Definition: HDFSP.cc:5372
const std::vector< VDATA * > & getVDATAs() const
Public interface to Obtain Vdata.
Definition: HDFSP.h:769
static File * Read_Hybrid(const char *path, int32 sdid, int32 fileid)
Definition: HDFSP.cc:263
void handle_sds_fakedim_names()
Definition: HDFSP.cc:3592
void PrepareOBPGL3()
Special method to prepare OBPG Level 3 latitude and longitude information. The latitude and longitude...
Definition: HDFSP.cc:5616
void ReadHybridNonLoneVdatas(File *)
Definition: HDFSP.cc:564
void obtain_vdata_path(int32 file_id, char *full_path, int32 pobj_ref)
The internal function used to obtain the path for hybrid non-lone vdata.
Definition: HDFSP.cc:3372
void handle_sds_names(bool &COARDFLAG, std::string &lldimname1, std::string &lldimname2)
Create the final CF-compliant field name list.
Definition: HDFSP.cc:3768
SPType getSPType() const
Obtain special HDF4 product type.
Definition: HDFSP.h:741
void PrepareCERES4IG()
Definition: HDFSP.cc:5862
const std::vector< AttrContainer * > & getVgattrs() const
Get attributes for all vgroups.
Definition: HDFSP.h:775
void PrepareOTHERHDF()
We still provide a hook for other HDF data product although no CF compliant is followed.
Definition: HDFSP.cc:6250
void ReadLoneVdatas(File *)
Handle non-attribute lone vdatas.
Definition: HDFSP.cc:329
void PrepareTRMML3A_V6()
Special method to prepare TRMM Level 3A46 latitude and longitude information.
Definition: HDFSP.cc:5202
void PrepareTRMML3B_V6()
Special method to prepare TRMM Level 3B latitude and longitude information.
Definition: HDFSP.cc:5094
void InsertOrigFieldPath_ReadVgVdata()
The full path of SDS and Vdata will be obtained.
Definition: HDFSP.cc:2708
void PrepareCERSAVGID()
Definition: HDFSP.cc:6002
void PrepareOBPGL2()
Special method to prepare OBPG Level 2 latitude and longitude information. The latitude and longitude...
Definition: HDFSP.cc:5531
void create_sds_dim_name_list()
Create the new dimension name set and the dimension name to size map.
Definition: HDFSP.cc:3664
void obtain_path(int32 file_id, int32 sd_id, char *full_path, int32 pobj_ref)
The internal function used by InsertOrigFieldPath_ReadVgVdata.
Definition: HDFSP.cc:3033
void PrepareCERZAVG()
Special method to prepare CERES Zonal Average latitude and longitude information.
Definition: HDFSP.cc:6147
void PrepareTRMML2_V6()
Latitude and longitude are stored in one array(geolocation). Need to separate.
Definition: HDFSP.cc:4937
const std::string & getPath() const
Obtain the path of the file.
Definition: HDFSP.h:757
One instance of this class represents one SDS object.
Definition: HDFSP.h:337
void setCorrectedDimensions(const std::vector< Dimension * > &cor_dims)
Set the list of the corrected dimensions.
Definition: HDFSP.h:356
std::vector< Dimension * > * getCorrectedDimensionsPtr()
Get the list of the corrected dimension ptrs.
Definition: HDFSP.h:350
std::string getSpecFullPath() const
This function returns the full path of some special products that have a very long path.
Definition: HDFSP.h:423
bool IsDimScale() const
Is this field a dimension scale field?
Definition: HDFSP.h:417
const std::vector< Dimension * > & getCorrectedDimensions() const
Get the list of the corrected dimensions.
Definition: HDFSP.h:344
const std::vector< Dimension * > & getDimensions() const
Get the list of dimensions.
Definition: HDFSP.h:398
std::string getCoordinate() const
Get the "coordinates" attribute.
Definition: HDFSP.h:362
std::string getUnits() const
Get the "units" attribute.
Definition: HDFSP.h:374
const std::vector< AttrContainer * > & getDimInfo() const
Get the list of OHTERHDF dimension attribute container information.
Definition: HDFSP.h:404
bool IsDimNoScale() const
Is this field a dimension without dimension scale(or empty[no data]dimension variable)
Definition: HDFSP.h:411
void setCoordinates(const std::string &coor)
Set the coordinate attribute.
Definition: HDFSP.h:368
This class retrieves all SDS objects and SD file attributes.
Definition: HDFSP.h:542
~SD()
Destructor.
Definition: HDFSP.cc:161
const std::vector< SDField * > & getFields() const
Redundant member function.
Definition: HDFSP.h:561
const std::vector< Attribute * > & getAttributes() const
Public interface to obtain the SD(file) attributes.
Definition: HDFSP.h:567
static SD * Read_Hybrid(int32 sdfileid, int32 hfileid)
Read the information of all hybrid SDS objects from the HDF4 file.
Definition: HDFSP.cc:1921
static SD * Read(int32 sdfileid, int32 hfileid)
Read the information of all SDS objects from the HDF4 file.
Definition: HDFSP.cc:1575
void obtain_noneos2_sds_path(int32, char *, int32)
Obtain SDS path, this is like a clone of obtain_path in File class, except the Vdata and some minor p...
Definition: HDFSP.cc:3265
This class retrieves all information of one Vdata.
Definition: HDFSP.h:631
bool getTreatAsAttrFlag() const
Definition: HDFSP.h:669
int32 getObjRef() const
Obtain Vdata reference number, this is necessary for retrieving Vdata information from HDF4.
Definition: HDFSP.h:675
const std::vector< VDField * > & getFields() const
Obtain Vdata fields.
Definition: HDFSP.h:655
const std::string & getNewName() const
Obtain new names(with the path and special characters and name clashing handlings)
Definition: HDFSP.h:643
void ReadAttributes(int32 vdata_id)
Retrieve all attributes of this Vdata.
Definition: HDFSP.cc:2528
const std::string & getName() const
Obtain the original vdata name.
Definition: HDFSP.h:649
const std::vector< Attribute * > & getAttributes() const
Obtain Vdata attributes.
Definition: HDFSP.h:661
static VDATA * Read(int32 vdata_id, int32 obj_ref)
Retrieve all information of this Vdata.
Definition: HDFSP.cc:2346
One instance of this class represents one Vdata field.
Definition: HDFSP.h:490
void ReadAttributes(int32 vdata_id, int32 fieldindex)
Read vdata field attributes.
Definition: HDFSP.cc:2590
int32 getNumRec() const
Get the number of record.
Definition: HDFSP.h:508
const std::vector< char > & getValue() const
Get the vdata field values.
Definition: HDFSP.h:514
int32 getFieldOrder() const
Get the order of this field.
Definition: HDFSP.h:496
int32 getFieldsize() const
Get the field size.
Definition: HDFSP.h:502
Definition: HDFSP.h:86