00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GDCMDOCENTRYSET_H
00020 #define GDCMDOCENTRYSET_H
00021
00022 #include "gdcmRefCounter.h"
00023 #include "gdcmVRKey.h"
00024 #include "gdcmTagKey.h"
00025
00026 #include <fstream>
00027
00028 namespace gdcm
00029 {
00030
00031 class DocEntry;
00032 class DataEntry;
00033 class SeqEntry;
00034 class DictEntry;
00035
00036
00061 class GDCM_EXPORT DocEntrySet : public RefCounter
00062 {
00063 gdcmTypeMacro(DocEntrySet);
00064
00065 public:
00067 virtual void WriteContent (std::ofstream *fp, FileType filetype) = 0;
00068
00070 virtual void ClearEntry() = 0;
00072 virtual bool AddEntry(DocEntry *entry) = 0;
00074 virtual bool RemoveEntry(DocEntry *entryToRemove) = 0;
00076 virtual DocEntry *GetFirstEntry()=0;
00078 virtual DocEntry *GetNextEntry()=0;
00079
00080 virtual std::string GetEntryString(uint16_t group, uint16_t elem);
00081 virtual void *GetEntryBinArea(uint16_t group, uint16_t elem);
00082 virtual int GetEntryLength(uint16_t group, uint16_t elem);
00083
00085 virtual DocEntry *GetDocEntry(uint16_t group, uint16_t elem) = 0;
00087 DataEntry *GetDataEntry(uint16_t group, uint16_t elem);
00089 SeqEntry *GetSeqEntry(uint16_t group, uint16_t elem);
00090
00091 bool SetEntryString(std::string const &content,
00092 uint16_t group, uint16_t elem);
00093 bool SetEntryBinArea(uint8_t *content, int lgth,
00094 uint16_t group, uint16_t elem);
00095 bool SetEntryString(std::string const &content, DataEntry *entry);
00096 bool SetEntryBinArea(uint8_t *content, int lgth, DataEntry *entry);
00097
00098 DataEntry *InsertEntryString(std::string const &value,
00099 uint16_t group, uint16_t elem,
00100 VRKey const &vr = GDCM_VRUNKNOWN);
00101 DataEntry *InsertEntryBinArea(uint8_t *binArea, int lgth,
00102 uint16_t group, uint16_t elem,
00103 VRKey const &vr = GDCM_VRUNKNOWN);
00104 SeqEntry *InsertSeqEntry(uint16_t group, uint16_t elem);
00106 virtual bool IsEmpty() = 0;
00107 virtual bool CheckIfEntryExist(uint16_t group, uint16_t elem);
00108
00109
00110 DataEntry *NewDataEntry(uint16_t group,uint16_t elem,
00111 VRKey const &vr = GDCM_VRUNKNOWN);
00112 SeqEntry *NewSeqEntry(uint16_t group, uint16_t elem);
00113
00114 virtual void Copy(DocEntrySet *) {};
00115
00116 protected:
00118 DocEntrySet();
00120 virtual ~DocEntrySet() {}
00121
00122
00123 DictEntry *GetDictEntry(uint16_t group, uint16_t elem);
00124 DictEntry *GetDictEntry(uint16_t group, uint16_t elem,
00125 VRKey const &vr);
00127 DocEntry *PreviousDocEntry;
00128
00129 private:
00130 };
00131
00132 }
00133
00134 #endif
00135