37 M3StreamHeader(
const std::string& aSource, uint32_t aNumber, uint32_t aNChannels, uint32_t aFirstChannel, uint32_t aFormat,
38 uint32_t anAcqRate, uint32_t aRecSize, uint32_t aSampleSize,
39 uint32_t aDataTypeSize, uint32_t aDataFormat,
40 uint32_t aBitDepth, uint32_t aBitAlignment );
47 void SetNumber( uint32_t aNumber )
const;
76 void WriteToHDF5( HAS_GRP_IFC* aParent );
77 void ReadFromHDF5(
const HAS_GRP_IFC* aParent,
const std::string& aLabel )
const;
80 void WriteChannels( HAS_ATTR_IFC* aLoc );
81 void ReadChannels(
const HAS_ATTR_IFC* aLoc )
const;
97 uint32_t anAcqRate, uint32_t aRecSize, uint32_t aSampleSize,
98 uint32_t aDataTypeSize, uint32_t aDataFormat,
99 uint32_t aBitDepth, uint32_t aBitAlignment );
106 void SetNumber( uint32_t aNumber )
const;
135 void WriteToHDF5( HAS_GRP_IFC* aParent );
136 void ReadFromHDF5(
const HAS_GRP_IFC* aParent,
const std::string& aLabel )
const;
162 void CopyBasicInfo(
const M3Header& aOrig );
181 void SetCoherence(
unsigned aChanA,
unsigned aChanB,
bool aCoherence );
184 std::vector< M3ChannelHeader >& GetChannelHeaders();
187 std::vector< M3StreamHeader >& GetStreamHeaders();
192 unsigned AddStream(
const std::string& aSource,
193 uint32_t anAcqRate, uint32_t aRecSize, uint32_t aSampleSize,
194 uint32_t aDataTypeSize, uint32_t aDataFormat,
195 uint32_t aBitDepth, uint32_t aBitAlignment,
196 std::vector< unsigned >* aChanVec = NULL );
199 unsigned AddStream(
const std::string& aSource, uint32_t aNChannels, uint32_t aFormat,
200 uint32_t anAcqRate, uint32_t aRecSize, uint32_t aSampleSize,
201 uint32_t aDataTypeSize, uint32_t aDataFormat,
202 uint32_t aBitDepth, uint32_t aBitAlignment,
203 std::vector< unsigned >* aChanVec = NULL );
206 void WriteToHDF5( H5::H5File* aFile );
207 void ReadFromHDF5(
const H5::H5File* aFile )
const;
209 const H5::Group* GetStreamsGroup()
const;
210 H5::Group* GetStreamsGroup();
212 const H5::Group* GetChannelsGroup()
const;
213 H5::Group* GetChannelsGroup();
216 void WriteChannelStreams( HAS_ATTR_IFC* aLoc );
217 void ReadChannelStreams(
const HAS_ATTR_IFC* aLoc )
const;
219 void WriteChannelCoherence( HAS_ATTR_IFC* aLoc );
220 void ReadChannelCoherence(
const HAS_ATTR_IFC* aLoc )
const;
227 static void WriteScalarToHDF5( HAS_ATTR_IFC* aLoc,
const std::string& aName,
const std::string& aValue );
228 template<
typename XType >
229 static void WriteScalarToHDF5( HAS_ATTR_IFC* aLoc,
const std::string& aName, XType aValue );
234 template<
typename XType >
235 static XType ReadScalarFromHDF5(
const HAS_ATTR_IFC* aLoc,
const std::string& aName );
237 template<
typename XType >
238 static XType ReadScalarFromHDF5(
const HAS_ATTR_IFC* aLoc,
const std::string& aName,
const XType& aDefault );
247 return fStreamsGroup;
252 return fStreamsGroup;
257 return fChannelsGroup;
262 return fChannelsGroup;
267 return fChannelHeaders;
272 return fStreamHeaders;
278 LTRACE(
mlog_mheader,
"Writing string to new scalar metadata <" << aName <<
">: " << aValue <<
"; size = " << aValue.size() );
281 aLoc->createAttribute( aName.c_str(), tType, H5::DataSpace( H5S_SCALAR ) ).write( tType, aValue.c_str() );
285 template<
typename XType >
288 LTRACE(
mlog_mheader,
"Writing value to new scalar metadata <" << aName <<
">: " << aValue );
324 char tBuffer[ 65536 ];
325 H5::Attribute* tAttr =
new H5::Attribute( aLoc->openAttribute( aName.c_str() ) );
327 tAttr->read( tAttr->getDataType(), tBuffer );
329 std::string tValue( tBuffer );
330 LTRACE(
mlog_mheader,
"Reading string <" << aName <<
">: " << tValue <<
"; size = " << tValue.size() );
335 template<
typename XType >
339 H5::Attribute* tAttr =
new H5::Attribute( aLoc->openAttribute( aName.c_str() ) );
340 tAttr->read( tAttr->getDataType(), &tValue );
342 LTRACE(
mlog_mheader,
"Reading value <" << aName <<
">: " << tValue );
353 if( ! aLoc->attrExists( aName.c_str() ) )
return aDefaultValue;
355 char tBuffer[ 65536 ];
356 H5::Attribute* tAttr =
new H5::Attribute( aLoc->openAttribute( aName.c_str() ) );
358 tAttr->read( tAttr->getDataType(), tBuffer );
360 std::string tValue( tBuffer );
361 LTRACE(
mlog_mheader,
"Reading string <" << aName <<
">: " << tValue <<
"; size = " << tValue.size() );
366 template<
typename XType >
369 if( ! aLoc->attrExists( aName.c_str() ) )
return aDefaultValue;
371 H5::Attribute* tAttr =
new H5::Attribute( aLoc->openAttribute( aName.c_str() ) );
372 tAttr->read( tAttr->getDataType(), &tValue );
374 LTRACE(
mlog_mheader,
"Reading value <" << aName <<
">: " << tValue );
static scarab::logger mlog_mheader("M3Header.hh")
#define M3MEMBERVARIABLE_PTR
#define M3MEMBERVARIABLE_REF
#define M3MEMBERVARIABLE_REF_CONST
#define M3MEMBERVARIABLE_NOSET
static H5::DataType H5(T)