OpendTect  6.6
hdf5writer.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 
14 
15 namespace HDF5
16 {
17 
42 mExpClass(General) Writer : public Access
44 public:
45 
46  uiRetVal open4Edit(const char*);
48 
49  virtual void setCompressionLevel(unsigned) {}
53  virtual H5::Group* ensureGroup(const char* grpnm,uiRetVal&) = 0;
55 
57  ODDataType);
60  const ArrayNDInfo& addedsz,
61  const ArrayNDInfo& changedir,
62  PtrMan<ArrayNDInfo>* existsinfo =nullptr);
67  int addedsz,int changedir=1,
68  int* existsnrsamples =nullptr);
72 
73  uiRetVal putSlab(const DataSetKey&,const SlabSpec&,const void*);
74  uiRetVal putAll(const DataSetKey&,const void*);
75  template <class T>
76  uiRetVal put(const DataSetKey&,const T*,int sz);
77  template <class T>
78  uiRetVal put(const DataSetKey&,const TypeSet<T>&);
80 
81  // null = root scope
82  virtual void setAttribute(const char* ky,const char* val,
83  const DataSetKey* =nullptr) = 0;
85  const DataSetKey* = nullptr);
87 #define mHDF5DeclFns(fnnm,type) \
88  virtual void fnnm##Attribute(const char*,type,\
89  const DataSetKey* =nullptr) = 0;
96  mHDF5DeclFns(set,float);
97  mHDF5DeclFns(set,double);
98 #undef mHDF5DeclFns
99  uiRetVal set(const IOPar&,const DataSetKey* =nullptr);
100 
101  bool deleteObject(const DataSetKey&);
104 
105  virtual bool isReader() const { return false; }
106  virtual Reader* createCoupledReader() const = 0;
107 
108  mDeprecated("Set from DataSetKey")
109  virtual void setChunkSize(int) = 0;
110  mDeprecated("Set per dataset, not globally")
111  virtual void setEditableCreation(bool yn) = 0;
113 
114 private:
115 
116  virtual H5::DataSet* crDS(const DataSetKey&,const ArrayNDInfo&,
117  ODDataType,uiRetVal&) = 0;
118  virtual H5::DataSet* crTxtDS(const DataSetKey&,uiRetVal&) = 0;
119  virtual void reSzDS(const ArrayNDInfo&,H5::DataSet&,
120  uiRetVal&) = 0;
121  virtual void ptSlab(const SlabSpec&,const void*,
122  H5::DataSet&,uiRetVal&) = 0;
123  virtual void ptAll(const void*,H5::DataSet&,uiRetVal&) = 0;
124  virtual void ptStrings(const BufferStringSet&,
125  H5::Group&,H5::DataSet*,
126  const char* dsnm,uiRetVal&) = 0;
127  virtual void rmAttrib(const char*,H5::H5Object&) = 0;
128  virtual void rmAllAttribs(H5::H5Object&) = 0;
129 
130  virtual void ptInfo(const IOPar&,H5::H5Object&,uiRetVal&) = 0;
131 
132  virtual bool rmObj(const DataSetKey&) = 0;
133 
134 };
135 
136 
137 template <class T>
138 inline uiRetVal Writer::put( const DataSetKey& dsky, const TypeSet<T>& vals )
139 {
140  return put( dsky, vals.arr(), vals.size() );
141 }
142 
143 
144 template <class T>
145 inline uiRetVal Writer::put( const DataSetKey& dsky, const T* vals, int sz )
146 {
147  uiRetVal uirv;
148  if ( !vals )
149  return uirv;
150  else if ( !hasDataSet(dsky) )
151  uirv = createDataSet( dsky, sz, OD::GetDataRepType<T>() );
152  if ( uirv.isOK() )
153  uirv = putAll( dsky, vals );
154 
155  return uirv;
156 }
157 
158 } // namespace HDF5
od_uint64
#define od_uint64
Definition: plftypes.h:36
HDF5::Writer::ensureGroup
virtual H5::Group * ensureGroup(const char *grpnm, uiRetVal &)=0
Creates a new group if necessary.
HDF5::Writer::removeAttribute
uiRetVal removeAttribute(const char *, const DataSetKey *=nullptr)
ArrayNDInfo
Contains the information about the size of ArrayND, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:25
HDF5::Writer::setCompressionLevel
virtual mODTextTranslationClass(Writer) public void setCompressionLevel(unsigned)
< For normal 'create', use 'open()
Definition: hdf5writer.h:49
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
mHDF5DeclFns
#define mHDF5DeclFns(fnnm, type)
Definition: hdf5writer.h:87
od_int64
#define od_int64
Definition: plftypes.h:35
HDF5::Writer
writes to HDF5 file
Definition: hdf5writer.h:43
HDF5::Writer::put
uiRetVal put(const DataSetKey &, const T *, int sz)
Definition: hdf5writer.h:145
HDF5::Reader
Reads HDF5 file data.
Definition: hdf5reader.h:34
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
HDF5::Writer::putAll
uiRetVal putAll(const DataSetKey &, const void *)
HDF5
Definition: hdf5access.h:22
HDF5::Access::hasDataSet
bool hasDataSet(const DataSetKey &) const
HDF5::Writer::mDeprecated
mDeprecated("Set from DataSetKey") virtual void setChunkSize(int)=0
sKey::DataSet
FixedString DataSet()
Definition: keystrs.h:56
HDF5::Writer::createTextDataSet
uiRetVal createTextDataSet(const DataSetKey &)
uiRetVal
Definition: uistringset.h:105
HDF5::Writer::isReader
virtual bool isReader() const
Definition: hdf5writer.h:105
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
HDF5::Writer::createDataSetIfMissing
uiRetVal createDataSetIfMissing(const DataSetKey &, ODDataType, int addedsz, int changedir=1, int *existsnrsamples=nullptr)
HDF5::Access
Definition: hdf5access.h:164
HDF5::Writer::putSlab
uiRetVal putSlab(const DataSetKey &, const SlabSpec &, const void *)
mDeprecated
#define mDeprecated(msg)
Definition: plfdefs.h:215
HDF5::Writer::put
uiRetVal put(const DataSetKey &, const BufferStringSet &)
od_int16
#define od_int16
Definition: plftypes.h:26
HDF5::Writer::createDataSet
uiRetVal createDataSet(const DataSetKey &, int, ODDataType)
uiRetVal::isOK
bool isOK() const
PtrMan
Definition: ptrman.h:121
hdf5access.h
H5
Definition: hdf5access.h:16
HDF5::Writer::deleteObject
bool deleteObject(const DataSetKey &)
od_uint16
#define od_uint16
Definition: plftypes.h:27
Conv::set
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
HDF5::Writer::set
uiRetVal set(const IOPar &, const DataSetKey *=nullptr)
HDF5::Writer::createDataSet
uiRetVal createDataSet(const DataSetKey &, const ArrayNDInfo &, ODDataType)
OD::DataRepType
DataRepType
Definition: commontypes.h:49
od_int32
#define od_int32
Definition: plftypes.h:30
HDF5::Writer::resizeDataSet
uiRetVal resizeDataSet(const DataSetKey &, const ArrayNDInfo &)
You cannot change the 'rank', just the dim sizes.
HDF5::Writer::createDataSetIfMissing
uiRetVal createDataSetIfMissing(const DataSetKey &, ODDataType, const ArrayNDInfo &addedsz, const ArrayNDInfo &changedir, PtrMan< ArrayNDInfo > *existsinfo=nullptr)
HDF5::DataSetKey
Definition: hdf5access.h:42
od_uint32
#define od_uint32
Definition: plftypes.h:31
private
#define private
Definition: winstreambuf.h:13
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
HDF5::Writer::createCoupledReader
virtual Reader * createCoupledReader() const =0
HDF5::Writer::removeAllAttributes
uiRetVal removeAllAttributes(const DataSetKey *=nullptr)
HDF5::Writer::setAttribute
virtual void setAttribute(const char *ky, const char *val, const DataSetKey *=nullptr)=0
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