+// 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);
+
+ 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);
+
+// System access
+ inline int GetSwapCode(void) { return sw; }
+ guint16 SwapShort(guint16); // needed by gdcmFile
+ guint32 SwapLong(guint32); // for JPEG Files
+
+protected:
+ bool CheckIfExistByNumber(guint16 Group, guint16 Elem );
+
+ gdcmHeaderEntry *GetHeaderEntryByName (std::string Name);
+ gdcmHeaderEntry *GetHeaderEntryByNumber(guint16 group, guint16 element);
+
+ int write(std::ostream&);
+ int anonymize(std::ostream&); // FIXME : anonymize should be a friend ?
+
+ size_t GetPubEntryOffsetByNumber (guint16 Group, guint16 Elem);
+ void * GetPubEntryVoidAreaByNumber(guint16 Group, guint16 Elem);
+ void * LoadEntryVoidArea (guint16 Group, guint16 Element);
+
+
+// Variables
+ FILE * fp;
+ FileType filetype; // ACR, ACR_LIBIDO, ExplicitVR, ImplicitVR, Unknown
+
+private:
+ // Read
+ void LoadHeaderEntries (void);
+ void LoadHeaderEntry (gdcmHeaderEntry *);
+ void LoadHeaderEntrySafe (gdcmHeaderEntry *);
+ void FindHeaderEntryLength(gdcmHeaderEntry *);
+ void FindHeaderEntryVR (gdcmHeaderEntry *);
+
+ void SkipHeaderEntry (gdcmHeaderEntry *);
+ void FixHeaderEntryFoundLength(gdcmHeaderEntry *, guint32);
+ bool IsHeaderEntryAnInteger (gdcmHeaderEntry *);
+
+ guint32 FindHeaderEntryLengthOB(void);
+
+ guint16 ReadInt16(void);
+ guint32 ReadInt32(void);
+ void SkipBytes(guint32);
+
+ void Initialise(void);
+ void CheckSwap(void);
+ void SwitchSwapToBigEndian(void);
+ void SetMaxSizeLoadElementValue(long);
+
+ // Dict
+ gdcmDictEntry *GetDictEntryByName (std::string Name);
+ gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
+
+ // HeaderEntry related utilities
+ gdcmHeaderEntry *ReadNextHeaderEntry (void);
+ gdcmHeaderEntry *NewHeaderEntryByNumber(guint16 group, guint16 element);
+ gdcmHeaderEntry *NewHeaderEntryByName (std::string Name);
+
+ // Deprecated (Not used)
+ gdcmHeaderEntry *NewManualHeaderEntryToPubDict(std::string NewTagName,
+ std::string VR);
+
+// Variables
+ // Pointer to the Value Representation Hash Table which contains all
+ // the VR of the DICOM version3 public dictionary.
+ gdcmVR *dicom_vr; // Not a class member for thread-safety reasons
+
+ // Pointer to the Transfert Syntax Hash Table which contains all
+ // the TS of the DICOM version3 public dictionary.
+ gdcmTS *dicom_ts; // Not a class member for thread-safety reasons