MrSID Decode SDK for Raster Reference Manual  9.0.0.3864
lti_metadataRecord.h
Go to the documentation of this file.
00001 /* $Id$ */
00002 /* //////////////////////////////////////////////////////////////////////////
00003 //                                                                         //
00004 // This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
00005 // Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
00006 // prohibited.  Access to and use of this code is permitted only under     //
00007 // license from LizardTech, Inc.  Portions of the code are protected by    //
00008 // US and foreign patents and other filings. All Rights Reserved.          //
00009 //                                                                         //
00011 /* PUBLIC */
00012 
00013 #ifndef LTIMETADATARECORD_H
00014 #define LTIMETADATARECORD_H
00015 
00016 // lt_lib_base
00017 #include "lt_base.h"
00018 
00019 // lt_lib_mrsid_metadata
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    // nope
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