]> Creatis software - gdcm.git/blob - src/gdcmDicomDir.h
* FIX : amelioration of code
[gdcm.git] / src / gdcmDicomDir.h
1 // gdcmDicomDir.h
2 //-----------------------------------------------------------------------------
3 #ifndef GDCMDICOMDIR_H
4 #define GDCMDICOMDIR_H
5
6 #include "gdcmHeader.h"
7 #include "gdcmCommon.h"
8 #include "gdcmPatient.h"
9 #include "gdcmDicomDirElement.h"
10
11 //-----------------------------------------------------------------------------
12 typedef std::list<gdcmPatient *> ListPatient;
13 typedef std::list<gdcmHeader *>  ListHeader;
14
15 //-----------------------------------------------------------------------------
16 /*
17  * \defgroup gdcmDicomDir
18  * \brief    gdcmDicomDir defines an object representing a DICOMDIR in memory.
19  *
20  */
21 class GDCM_EXPORT gdcmDicomDir: public gdcmParser
22 {
23 public:
24 //   gdcmDicomDir(ListTag *l,          bool exception_on_error = false);
25    gdcmDicomDir(const char *FileName, bool parseDir = false,
26                 bool exception_on_error = false);
27    
28    ~gdcmDicomDir(void);
29
30    void SetPrintLevel(int level) { printLevel = level; };
31    virtual void Print(std::ostream &os = std::cout);
32
33    inline ListPatient &GetPatients() {return patients;};
34
35 // Write
36    bool Write(std::string fileName);
37    void ParseDirectory(void);
38
39 // Types
40    typedef enum
41    {
42       GDCM_NONE,
43       GDCM_PATIENT,
44       GDCM_STUDY,
45       GDCM_SERIE,
46       GDCM_IMAGE,
47    } gdcmDicomDirType;
48    
49 protected:
50    void NewDicomDir(std::string path);
51    std::string GetPath(void);
52
53 private:
54    void CreateDicomDir(void);
55    void AddObjectToEnd(gdcmDicomDirType type,ListTag::iterator begin,ListTag::iterator end);
56    void AddPatientToEnd(ListTag::iterator begin,ListTag::iterator end);
57    void AddStudyToEnd(ListTag::iterator begin,ListTag::iterator end);
58    void AddSerieToEnd(ListTag::iterator begin,ListTag::iterator end);
59    void AddImageToEnd(ListTag::iterator begin,ListTag::iterator end);
60
61    void SetElements(std::string &path,ListHeader &list);
62    void SetElement(std::string &path,gdcmDicomDirType type,gdcmHeader *header);
63
64    ListPatient patients;
65 };
66
67 //-----------------------------------------------------------------------------
68 #endif