+// Standard values and informations contained in the header
+ inline std::string GetFileName(void) {return filename;}
+
+ bool IsReadable(void);
+ bool IsImplicitVRLittleEndianTransferSyntax(void);
+ bool IsExplicitVRLittleEndianTransferSyntax(void);
+ bool IsDeflatedExplicitVRLittleEndianTransferSyntax(void);
+ bool IsExplicitVRBigEndianTransferSyntax(void);
+ bool IsJPEGBaseLineProcess1TransferSyntax(void);
+ bool IsJPEGExtendedProcess2_4TransferSyntax(void);
+ bool IsJPEGExtendedProcess3_5TransferSyntax(void);
+ bool IsJPEGSpectralSelectionProcess6_8TransferSyntax(void);
+ bool IsRLELossLessTransferSyntax(void);
+ bool IsJPEGLossless(void);
+ bool IsJPEG2000(void);
+ bool IsDicomV3(void);
+ FileType GetFileType(void);
+
+ // Some heuristic based accessors, end user intended
+ // (to be move to gdcmHeaderHelper?)
+ int GetXSize(void);
+ int GetYSize(void);
+ int GetZSize(void);
+ int GetBitsStored(void);
+ int GetBitsAllocated(void);
+ int GetSamplesPerPixel(void);
+ int GetPlanarConfiguration(void);
+
+ int GetPixelSize(void);
+ std::string GetPixelType(void);
+ size_t GetPixelOffset(void);
+ size_t GetPixelAreaLength(void);
+
+ bool HasLUT(void);
+ int GetLUTNbits(void);
+ unsigned char * GetLUTRGBA(void);
+
+ std::string GetTransfertSyntaxName(void);
+
+ // When some proprietary shadow groups are disclosed, we can set up
+ // an additional specific dictionary to access extra information.
+
+ // OK : we still have *ONE* ElValSet,
+ // with both Public and Shadow Elements
+ // parsed against THE Public Dictionary and A (single) Shadow Dictionary
+
+ // TODO Swig int SetShaDict(std::string filename);
+ // TODO Swig int SetPubDict(std::string filename);
+
+// Public element value
+ std::string GetPubElValByName (std::string tagName);
+ std::string GetPubElValRepByName (std::string tagName);
+ std::string GetPubElValByNumber (guint16 group, guint16 element);
+ std::string GetPubElValRepByNumber(guint16 group, guint16 element);
+
+ bool SetPubElValByName (std::string content, std::string tagName);
+ bool SetPubElValByNumber(std::string content, guint16 group, guint16 element);
+ bool SetPubElValLengthByNumber(guint32 lgr, guint16 group, guint16 element);
+
+ inline ListTag & GetPubListElem(void) { return PubElValSet.GetListElem();};
+ inline TagElValueHT & GetPubElVal(void) { return PubElValSet.GetTagHt(); };
+
+ void PrintPubElVal(std::ostream & os = std::cout);
+ void PrintPubDict (std::ostream & os = std::cout);
+
+// Element value
+ std::string GetElValByName (std::string tagName);
+ std::string GetElValRepByName (std::string tagName);
+ std::string GetElValByNumber (guint16 group, guint16 element);
+ std::string GetElValRepByNumber(guint16 group, guint16 element);
+
+ bool SetElValueByName(std::string content,std::string tagName);
+// bool SetElValueByNumber(std::string content,guint16 group, guint16 element);
+
+// inline ListTag & GetListElem(void) { return PubElValSet.GetListElem();};
+// inline TagElValueHT & GetElVal(void) { return PubElValSet.GetTagHt(); };
+
+// Read (used in gdcmFile)
+ FILE *OpenFile(bool exception_on_error = false) throw(gdcmFileError);
+ bool CloseFile(void);
+ virtual void ParseHeader(bool exception_on_error = false) throw(gdcmFormatError);
+
+// Write (used in gdcmFile)
+ bool Write(FILE *, FileType);
+ void SetImageDataSize(size_t ExpectedSize);
+
+// System access
+ inline int GetSwapCode(void) { return sw; }
+ guint16 SwapShort(guint16); // needed by gdcmFile
+ guint32 SwapLong(guint32); // for JPEG Files
+
+ // was protected
+ bool ReplaceOrCreateByNumber(std::string Value, guint16 Group, guint16 Elem);
+ bool ReplaceOrCreateByNumber( char * Value, guint16 Group, guint16 Elem);
+ bool ReplaceIfExistByNumber ( char * Value, guint16 Group, guint16 Elem);
+
+protected:
+ bool CheckIfExistByNumber(guint16 Group, guint16 Elem );
+ gdcmElValue * GetElValueByNumber(guint16 group, guint16 element);
+
+ int write(std::ostream&);
+ int anonymize(std::ostream&); // FIXME : anonymize should be a friend ?
+
+ size_t GetPubElValOffsetByNumber (guint16 Group, guint16 Elem);
+ void * GetPubElValVoidAreaByNumber(guint16 Group, guint16 Elem);
+ void * LoadElementVoidArea (guint16 Group, guint16 Element);
+
+
+// Variables