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 "gdcmBase.h"
00023 #include <fstream>
00024
00025 namespace gdcm
00026 {
00027
00028 class DocEntry;
00029 class ValEntry;
00030 class BinEntry;
00031 class SeqEntry;
00032 class DictEntry;
00033
00034 typedef std::string BaseTagKey;
00035
00036
00059 class GDCM_EXPORT DocEntrySet : public Base
00060 {
00061 public:
00063 DocEntrySet() {};
00065 virtual ~DocEntrySet() {};
00066
00068 virtual void WriteContent (std::ofstream *fp, FileType filetype) = 0;
00069
00071 virtual void ClearEntry() = 0;
00073 virtual bool AddEntry(DocEntry *Entry) = 0;
00075 virtual bool RemoveEntry(DocEntry *EntryToRemove) = 0;
00077 virtual bool RemoveEntryNoDestroy(DocEntry *EntryToRemove) = 0;
00079 virtual DocEntry *GetFirstEntry()=0;
00081 virtual DocEntry *GetNextEntry()=0;
00082
00083 virtual std::string GetEntryValue(uint16_t group, uint16_t elem);
00084 virtual void *GetEntryBinArea(uint16_t group, uint16_t elem);
00085 virtual int GetEntryLength(uint16_t group, uint16_t elem);
00086 virtual std::string GetEntryVR(uint16_t group, uint16_t elem);
00087
00089 virtual DocEntry *GetDocEntry(uint16_t group, uint16_t elem) = 0;
00091 ValEntry *GetValEntry(uint16_t group, uint16_t elem);
00093 BinEntry *GetBinEntry(uint16_t group, uint16_t elem);
00095 SeqEntry *GetSeqEntry(uint16_t group, uint16_t elem);
00096
00097 bool SetValEntry(std::string const &content,
00098 uint16_t group, uint16_t elem);
00099 bool SetBinEntry(uint8_t *content, int lgth,
00100 uint16_t group, uint16_t elem);
00101 bool SetValEntry(std::string const &content, ValEntry *entry);
00102 bool SetBinEntry(uint8_t *content, int lgth, BinEntry *entry);
00103
00104 ValEntry *InsertValEntry(std::string const &value,
00105 uint16_t group, uint16_t elem,
00106 TagName const &vr = GDCM_UNKNOWN);
00107 BinEntry *InsertBinEntry(uint8_t *binArea, int lgth,
00108 uint16_t group, uint16_t elem,
00109 TagName const &vr = GDCM_UNKNOWN);
00110 SeqEntry *InsertSeqEntry(uint16_t group, uint16_t elem);
00112 virtual bool IsEmpty() = 0;
00113 virtual bool CheckIfEntryExist(uint16_t group, uint16_t elem);
00114
00115
00116 ValEntry *NewValEntry(uint16_t group,uint16_t elem,
00117 TagName const &vr = GDCM_UNKNOWN);
00118 BinEntry *NewBinEntry(uint16_t group, uint16_t elem,
00119 TagName const &vr = GDCM_UNKNOWN);
00120 SeqEntry *NewSeqEntry(uint16_t group, uint16_t elem);
00121
00122
00123 DictEntry *NewVirtualDictEntry(uint16_t group,uint16_t elem,
00124 TagName const &vr = GDCM_UNKNOWN,
00125 TagName const &vm = GDCM_UNKNOWN,
00126 TagName const &name = GDCM_UNKNOWN );
00127
00128 protected:
00129
00130 DictEntry *GetDictEntry(uint16_t group, uint16_t elem);
00131 DictEntry *GetDictEntry(uint16_t group, uint16_t elem,
00132 TagName const &vr);
00133
00134 private:
00135 };
00136
00137 }
00138
00139 #endif
00140