+// Ordering of Documents
+ bool operator<(Document &document);
+
+public:
+// File I/O
+ /// Accessor to \ref Filename
+ const std::string &GetFileName() const { return Filename; }
+ /// Accessor to \ref Filename
+ void SetFileName(std::string const &fileName) { Filename = fileName; }
+
+ std::ifstream *OpenFile();
+ bool CloseFile();
+ void WriteContent( std::ofstream *fp, FileType type );
+
+// Content entries
+
+ virtual bool SetEntry(std::string const &content,
+ uint16_t group, uint16_t element);
+ virtual bool SetEntry(uint8_t *content, int lgth,
+ uint16_t group, uint16_t element);
+ virtual bool SetEntry(std::string const &content, ValEntry *entry);
+ virtual bool SetEntry(uint8_t *content, int lgth, BinEntry *entry);
+
+ virtual void *GetEntryBinArea(uint16_t group, uint16_t elem);
+
+ virtual std::string GetEntry (uint16_t group, uint16_t elem);
+ virtual std::string GetEntryVR(uint16_t group, uint16_t elem);
+ virtual int GetEntryLength(uint16_t group, uint16_t elem);
+
+ DocEntry *GetDocEntry(uint16_t group, uint16_t element);
+ ValEntry *GetValEntry(uint16_t group, uint16_t element);
+ BinEntry *GetBinEntry(uint16_t group, uint16_t element);
+
+ ValEntry *ReplaceOrCreate(std::string const &value,
+ uint16_t group, uint16_t elem,
+ TagName const &vr = GDCM_UNKNOWN);
+ BinEntry *ReplaceOrCreate(uint8_t* binArea, int lgth,
+ uint16_t group, uint16_t elem,
+ TagName const &vr = GDCM_UNKNOWN);
+ SeqEntry *ReplaceOrCreate(uint16_t group, uint16_t elem);
+
+ bool ReplaceIfExist(std::string const &value,
+ uint16_t group, uint16_t elem );