00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013 #ifndef LTIMETADATARECORD_H
00014 #define LTIMETADATARECORD_H
00015
00016
00017 #include "lt_base.h"
00018
00019
00020 #include "lti_metadataTypes.h"
00021
00022 LT_BEGIN_NAMESPACE(LizardTech)
00023
00024 #if defined(LT_COMPILER_MS)
00025 #pragma warning(push,4)
00026 #endif
00027
00028
00047 class LTIMetadataRecord
00048 {
00049 public:
00062 LTIMetadataRecord(LTIMetadataTag tag,
00063 LTIMetadataDataType type,
00064 const void* data);
00065
00078 LTIMetadataRecord(const char* tagName,
00079 LTIMetadataDataType type,
00080 const void* data);
00081
00095 LTIMetadataRecord(LTIMetadataTag tag,
00096 LTIMetadataDataType type,
00097 const void* data,
00098 lt_uint32 vecLen);
00112 LTIMetadataRecord(const char* tagName,
00113 LTIMetadataDataType type,
00114 const void* data,
00115 lt_uint32 vecLen);
00116
00131 LTIMetadataRecord(LTIMetadataTag tag,
00132 LTIMetadataDataType type,
00133 const void* data,
00134 lt_uint32 numDims,
00135 const lt_uint32* dims);
00136
00151 LTIMetadataRecord(const char* tagName,
00152 LTIMetadataDataType type,
00153 const void* data,
00154 lt_uint32 numDims,
00155 const lt_uint32* dims);
00156
00160 LTIMetadataRecord(const LTIMetadataRecord&);
00161
00165 ~LTIMetadataRecord();
00166
00174 LTIMetadataTag getTag() const;
00175
00183 const char* getTagName() const;
00184
00192 LTIMetadataDataType getDataType() const;
00193
00204 lt_uint32 getNumDims() const;
00205
00219 const lt_uint32* getDims() const;
00220 lt_uint32 getNumValues(void) const;
00221
00230 bool isScalar() const;
00231
00239 bool isVector() const;
00240
00248 bool isArray() const;
00249
00262 const void* getScalarData() const;
00263
00277 const void* getVectorData(lt_uint32& vecLen) const;
00278
00294 const void* getArrayData(lt_uint32& numDims, const lt_uint32*& dims) const;
00295
00304 lt_int32 getApproximateSize() const;
00305
00306 private:
00307 void initialize(LTIMetadataTag tag,
00308 const void* data, const lt_uint32* dims);
00309 void initialize(const char* tagName,
00310 const void* data, const lt_uint32* dims);
00311
00312 lt_uint32 computeLen() const;
00313
00314 char* m_tagName;
00315 LTIMetadataDataType m_type;
00316 lt_uint32 m_numDims;
00317 lt_uint32* m_dims;
00318 lt_uint8* m_data;
00319
00320
00321 LTIMetadataRecord& operator=(const LTIMetadataRecord&);
00322 };
00323
00324
00325 LT_END_NAMESPACE(LizardTech)
00326
00327 #if defined(LT_COMPILER_MS)
00328 #pragma warning(pop)
00329 #endif
00330
00331 #endif // LTIMETADATARECORD_H