#include <string>
#include <list>
#include "gdcmCommon.h"
-
-
+#include "gdcmHeaderEntry.h"
+#include "gdcmParser.h"
+#include "gdcmDicomDirElement.h"
//-----------------------------------------------------------------------------
-
-typedef std::list<std::string> lstring;
+class gdcmObject;
+typedef std::list<gdcmObject *> ListContent;
//-----------------------------------------------------------------------------
-
-class gdcmObject {
+class GDCM_EXPORT gdcmObject
+{
public:
+ gdcmObject(ListTag::iterator begin,ListTag::iterator end,
+ TagHeaderEntryHT *ptagHT, ListTag *plistEntries);
+ ~gdcmObject(void);
- virtual std::string GetEntryByNumber(guint16 group, guint16 element)=0;
- virtual std::string GetEntryByName(TagName name)=0;
+ void SetPrintLevel(int level) { printLevel = level; };
+ virtual void Print(std::ostream &os = std::cout);
+ std::string GetEntryByNumber(guint16 group, guint16 element);
+ std::string GetEntryByName(TagName name);
+ bool SetEntryByNumber(std::string val,guint16 group,guint16 element);
+
+ TagHeaderEntryHT GetEntry(void);
+ ListTag GetListEntry(void);
+/**
+ * \ingroup gdcmObject
+ * \brief returns an iterator on the first Header Entry (i.e Dicom Element),
+ * inside the DICOMDIR chained list,
+ * related to this 'Object'
+ * @return
+ */
+ ListTag::iterator debut(void)
+ { return(beginObj);}
+/**
+ * \ingroup gdcmObject
+ * \brief returns an iterator on the last Header Entry (i.e Dicom Element),
+ * inside the DICOMDIR chained list,
+ * related to this 'Object'
+ * @return
+ */
+ ListTag::iterator fin (void)
+ { return(endObj); }
+
protected:
- //to modify (I don't know the list type) : both iterators (beginning and end)
- lstring::iterator beginIter;
- lstring::iterator endIter;
+void FillObject(std::list<gdcmElement> elemList);
+
+/**
+* \brief iterator on the first Header Entry (i.e Dicom Element),
+* inside the DICOMDIR chained list,
+* related to this 'Object'
+*/
+ ListTag::iterator beginObj;
+/**
+* \brief iterator on the last Header Entry (i.e Dicom Element),
+* inside the DICOMDIR chained list,
+* related to this 'Object'
+*/
+ ListTag::iterator endObj;
+/**
+* \brief pointer to the HTable of the gdcmParser,
+* (because we don't know it within any gdcmObject)
+*/
+ TagHeaderEntryHT *ptagHT;
+/**
+* \brief pointer to the Chained List of the gdcmParser,
+* (because we don't know it within any gdcmObject)
+*/
+ ListTag *plistEntries;
+/**
+* \brief
+*/
+ int printLevel;
+
+/// used to pass variables to FillObject function
+/// Work as 'global' variables
+ std::list<gdcmHeaderEntry *>::iterator debInsertion, finInsertion, i,j;
- //pointer to the data list
- lstring *objectData;
+private:
};