OpendTect  6.6
hdf5reader.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: Bert
7  Date: March 2018
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "hdf5access.h"
13 #include "ranges.h"
14 
15 
16 namespace OD {
17  namespace JSON {
18  class ValueSet;
19  };
20 };
21 
22 namespace HDF5
23 {
24 
33 mExpClass(General) Reader : public Access
35 public:
36 
37  typedef TypeSet<NDPosBuf> NDPosBufSet;
38 
39  virtual void getGroups(BufferStringSet&) const = 0;
41  virtual void getDataSets(const char* fullgrpnm,
42  BufferStringSet&) const = 0;
44 
47  nr_dims_type getNrDims(const DataSetKey&,uiRetVal&) const;
48  nr_dims_type nrDims() const { return gtNrDims(); }
49  size_type dimSize(const DataSetKey&,dim_idx_type,uiRetVal&) const;
50 
51  uiRetVal getSlab(const DataSetKey&,const SlabSpec&,void*) const;
52  uiRetVal getAll(const DataSetKey&,void*) const;
54  template <class T>
55  uiRetVal get(const DataSetKey&,TypeSet<T>&) const;
57  uiRetVal getValue(const DataSetKey&,NDPos,void*) const;
59  uiRetVal getValues(const DataSetKey&,const NDPosBufSet&,
60  void*) const;
62 
63  // null = root scope
64  virtual bool hasAttribute(const char*,
65  const DataSetKey* =nullptr) const = 0;
66  virtual int getNrAttributes(const DataSetKey* = nullptr ) const = 0;
68  const DataSetKey* = nullptr) const;
69  virtual bool getAttribute(const char*,BufferString&,
70  const DataSetKey* =nullptr) const = 0;
71 #define mHDF5DeclFns(type) \
72  virtual bool getAttribute(const char*,type&, \
73  const DataSetKey* =nullptr) const = 0;
80  mHDF5DeclFns(float);
81  mHDF5DeclFns(double);
82 #undef mHDF5DeclFns
83  uiRetVal get(IOPar&,const DataSetKey* =nullptr) const;
84  virtual uiRetVal readJSonAttribute(const char*,
86  const DataSetKey* =nullptr) const = 0;
87 
88  virtual bool isReader() const { return true; }
89 
90 protected:
91 
93  { return sHDF5Err(tr("Unexpected DataSet found")); }
94 
95 private:
96 
97  virtual ODDataType gtDataType(const H5::DataSet&) const = 0;
98  virtual ArrayNDInfo* gtDataSizes(const H5::DataSet&) const = 0;
99  virtual nr_dims_type gtNrDims() const = 0;
100  size_type dimSize(const H5::DataSet&,dim_idx_type) const;
101 
102  virtual void gtSlab(const H5::DataSet&,const SlabSpec&,void*,
103  uiRetVal&) const = 0;
104  virtual void gtAll(const H5::DataSet&,void*,uiRetVal&) const = 0;
105  virtual void gtStrings(const H5::DataSet&,BufferStringSet&,
106  uiRetVal&) const = 0;
107  virtual void gtValues(const H5::DataSet&,const NDPosBufSet&,void*,
108  uiRetVal&) const = 0;
109 
110  virtual void gtAttribNames(const H5::H5Object&,
111  BufferStringSet&) const = 0;
112 
113  virtual void gtInfo(const H5::H5Object&,IOPar&,
114  uiRetVal&) const = 0;
115 
116 };
117 
118 
119 template <class T>
120 inline uiRetVal Reader::get( const DataSetKey& dsky, TypeSet<T>& vals ) const
121 {
122  uiRetVal uirv;
123  if ( getNrDims(dsky,uirv) != 1 )
124  { pErrMsg("Only read TypeSet from 1-D dataset"); return uirv; }
125  if ( getDataType(dsky,uirv) != OD::GetDataRepType<T>() )
126  { pErrMsg("Wrong type"); return uirv; }
127 
128  const size_type sz = dimSize( dsky, 0, uirv );
129  if ( sz < 1 )
130  return uirv;
131 
132  vals.setSize( sz );
133  uirv = getAll( dsky, vals.arr() );
134  return uirv;
135 }
136 
137 } // namespace HDF5
138 
od_uint64
#define od_uint64
Definition: plftypes.h:36
HDF5::Reader::getAttributeNames
uiRetVal getAttributeNames(BufferStringSet &, const DataSetKey *=nullptr) const
HDF5::Reader::gtNrDims
virtual nr_dims_type gtNrDims() const =0
HDF5::Reader::gtAttribNames
virtual void gtAttribNames(const H5::H5Object &, BufferStringSet &) const =0
ArrayNDInfo
Contains the information about the size of ArrayND, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:25
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
od_int64
#define od_int64
Definition: plftypes.h:35
HDF5::Reader
Reads HDF5 file data.
Definition: hdf5reader.h:34
OD
OpendTect.
Definition: commontypes.h:28
HDF5::Reader::getAll
uiRetVal getAll(const DataSetKey &, void *) const
Get the entire data set in current scope.
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
HDF5
Definition: hdf5access.h:22
HDF5::Reader::getNrDims
nr_dims_type getNrDims(const DataSetKey &, uiRetVal &) const
HDF5::Reader::get
uiRetVal get(IOPar &, const DataSetKey *=nullptr) const
sKey::DataSet
FixedString DataSet()
Definition: keystrs.h:56
HDF5::Reader::getDataSizes
ArrayNDInfo * getDataSizes(const DataSetKey &, uiRetVal &) const
HDF5::Reader::getDataType
ODDataType getDataType(const DataSetKey &, uiRetVal &) const
uiRetVal
Definition: uistringset.h:105
HDF5::Reader::hasAttribute
virtual bool hasAttribute(const char *, const DataSetKey *=nullptr) const =0
HDF5::Reader::getDataSets
virtual void getDataSets(const char *fullgrpnm, BufferStringSet &) const =0
Pass a full group name.
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
HDF5::Reader::getSlab
uiRetVal getSlab(const DataSetKey &, const SlabSpec &, void *) const
HDF5::Reader::isReader
virtual bool isReader() const
Definition: hdf5reader.h:88
HDF5::Reader::readJSonAttribute
virtual uiRetVal readJSonAttribute(const char *, OD::JSON::ValueSet &, const DataSetKey *=nullptr) const =0
HDF5::Reader::gtSlab
virtual void gtSlab(const H5::DataSet &, const SlabSpec &, void *, uiRetVal &) const =0
HDF5::Reader::nrDims
nr_dims_type nrDims() const
Definition: hdf5reader.h:48
HDF5::Reader::dimSize
size_type dimSize(const H5::DataSet &, dim_idx_type) const
HDF5::Access
Definition: hdf5access.h:164
HDF5::Reader::gtDataType
virtual ODDataType gtDataType(const H5::DataSet &) const =0
HDF5::Reader::getValues
uiRetVal getValues(const DataSetKey &, const NDPosBufSet &, void *) const
Get a set of distinct points' values.
HDF5::Reader::getGroups
virtual mODTextTranslationClass(HDF5::Reader) public void getGroups(BufferStringSet &) const =0
All groups with full names (recursive)
HDF5::Reader::getValue
uiRetVal getValue(const DataSetKey &, NDPos, void *) const
Get a single point value.
HDF5::Reader::get
uiRetVal get(const DataSetKey &, TypeSet< T > &) const
Definition: hdf5reader.h:120
od_int16
#define od_int16
Definition: plftypes.h:26
HDF5::Reader::getAttribute
virtual bool getAttribute(const char *, BufferString &, const DataSetKey *=nullptr) const =0
hdf5access.h
HDF5::Reader::dimSize
size_type dimSize(const DataSetKey &, dim_idx_type, uiRetVal &) const
pErrMsg
#define pErrMsg(msg)
Usual access point for programmer error messages.
Definition: errmsg.h:37
od_uint16
#define od_uint16
Definition: plftypes.h:27
HDF5::Reader::gtAll
virtual void gtAll(const H5::DataSet &, void *, uiRetVal &) const =0
mHDF5DeclFns
#define mHDF5DeclFns(type)
Definition: hdf5reader.h:71
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
OD::DataRepType
DataRepType
Definition: commontypes.h:49
od_int32
#define od_int32
Definition: plftypes.h:30
HDF5::Reader::gtInfo
virtual void gtInfo(const H5::H5Object &, IOPar &, uiRetVal &) const =0
HDF5::Reader::get
uiRetVal get(const DataSetKey &, BufferStringSet &) const
HDF5::Reader::gtStrings
virtual void gtStrings(const H5::DataSet &, BufferStringSet &, uiRetVal &) const =0
OD::JSON::ValueSet
holds values and sets of values. Is base class for either Array or Object.
Definition: odjson.h:95
HDF5::Reader::getNrAttributes
virtual int getNrAttributes(const DataSetKey *=nullptr) const =0
HDF5::DataSetKey
Definition: hdf5access.h:42
ranges.h
od_uint32
#define od_uint32
Definition: plftypes.h:31
HDF5::Reader::gtDataSizes
virtual ArrayNDInfo * gtDataSizes(const H5::DataSet &) const =0
HDF5::Reader::gtValues
virtual void gtValues(const H5::DataSet &, const NDPosBufSet &, void *, uiRetVal &) const =0
HDF5::Reader::sBadDataSpace
static uiString sBadDataSpace()
Definition: hdf5reader.h:92
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
HDF5::SlabSpec
Definition: hdf5access.h:109
TypeSet
Sets of (small) copyable elements.
Definition: commontypes.h:29

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021