00001 /*======================================================================= 00002 ** VSG_COPYRIGHT_TAG 00003 **=======================================================================*/ 00004 00005 #pragma once 00006 00007 #include <Inventor/devices/SoBufferObject.h> 00008 #include <VolumeViz/readers/dicom/SoDicomTag.h> 00009 00010 class SiDicomElement; 00011 class SiDicomValue; 00012 00041 class SiDicomDataSet 00042 { 00043 public: 00047 virtual ~SiDicomDataSet() {} 00048 00055 virtual SiDicomDataSet* clone() const = 0; 00056 00060 virtual size_t getLength() const = 0; 00061 00068 virtual const SiDicomElement* getElement( const SoDicomTag& tag ) const = 0; 00069 00077 virtual const SiDicomElement* getElement( const size_t idx ) const = 0; 00078 00086 virtual const SiDicomValue* getElementValue( const SoDicomTag& tag ) const = 0; 00087 00096 virtual bool getElementBufferValue( const SoDicomTag& tag, SoBufferObject* buffer ) const = 0; 00097 00111 virtual SbString getElementStringValue( const SoDicomTag& tag, const size_t idx, const SbString& defaultValue ) const = 0; 00112 00126 virtual int64_t getElementIntValue( const SoDicomTag& tag, const size_t idx, const int64_t defaultValue ) const = 0; 00127 00142 virtual uint64_t getElementUIntValue( const SoDicomTag& tag, const size_t idx, const uint64_t defaultValue ) const = 0; 00143 00157 virtual double getElementDoubleValue( const SoDicomTag& tag, const size_t idx, const double defaultValue ) const = 0; 00158 }; 00159