]> Creatis software - gdcm.git/blob - src/gdcmDicomDirElement.h
Fix mistypings
[gdcm.git] / src / gdcmDicomDirElement.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomDirElement.h,v $
5   Language:  C++
6   Date:      $Date: 2007/08/22 16:14:03 $
7   Version:   $Revision: 1.41 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18
19 #ifndef _GDCMDICOMDIRELEMENT_H_
20 #define _GDCMDICOMDIRELEMENT_H_
21
22 #include "gdcmRefCounter.h"
23 #include "gdcmVRKey.h"
24
25 #include <list>
26
27 namespace GDCM_NAME_SPACE 
28 {
29
30 //-----------------------------------------------------------------------------
31
32 typedef std::list<DicomElement> ListDicomDirElem;
33 typedef std::list<DicomElement> ListDicomDirMetaElem;
34 typedef std::list<DicomElement> ListDicomDirPatientElem;
35 typedef std::list<DicomElement> ListDicomDirStudyElem;
36 typedef std::list<DicomElement> ListDicomDirVisitElem;
37 typedef std::list<DicomElement> ListDicomDirSerieElem;
38 typedef std::list<DicomElement> ListDicomDirImageElem;
39 typedef std::list<DicomElement> ListDicomDirPrivateElem; // For "CSA Non Image"
40
41 // For future use (Full DICOMDIR)
42
43 /*
44 typedef std::list<DicomElement> ListDicomDirResultElem;
45 typedef std::list<DicomElement> ListDicomDirStudyComponentElem;
46
47 typedef std::list<DicomElement> ListDicomDirOverlayElem;
48 typedef std::list<DicomElement> ListDicomDirModalityLutElem;
49 typedef std::list<DicomElement> ListDicomDirModalityLutElem;
50 typedef std::list<DicomElement> ListDicomDirCurveElem;
51 typedef std::list<DicomElement> ListDicomDirStoredPrintElem;
52 typedef std::list<DicomElement> ListDicomDirRtDoseElem;
53 typedef std::list<DicomElement> ListDicomDirRtStructureSetElem;
54 typedef std::list<DicomElement> ListDicomDirRtPlanElem;
55 typedef std::list<DicomElement> ListDicomDirRtTreatRecordElem;
56 typedef std::list<DicomElement> ListDicomDirPresentationElem;
57 typedef std::list<DicomElement> ListDicomDirSrDocumentElem;
58 typedef std::list<DicomElement> ListDicomDirKeyObjectDocElem;
59 typedef std::list<DicomElement> ListDicomDirSpectroscopyElem;
60 typedef std::list<DicomElement> ListDicomDirRawDataElem;
61 typedef std::list<DicomElement> ListDicomDirRegistrationElem;
62 typedef std::list<DicomElement> ListDicomDirFiducialElem;
63 */
64
65 //-----------------------------------------------------------------------------
66 /**
67  * \brief   Represents elements contained in a DicomDir class
68  *          for the chained lists from the file 'Dicts/DicomDir.dic'
69  */
70 class GDCM_EXPORT DicomDirElement : public RefCounter
71 {
72    gdcmTypeMacro(DicomDirElement);
73
74 public:
75 /// \brief Contructs a DicomDirElement with a RefCounter
76    static DicomDirElement *New() {return new DicomDirElement();}
77
78    /**
79     * \brief   canonical Printer 
80     */ 
81    virtual void Print(std::ostream &os = std::cout, 
82                       std::string const &indent = "" );
83
84    /**
85     * \brief   returns a reference to the chained List 
86     *          related to the META Elements of a DICOMDIR.
87     */
88    ListDicomDirMetaElem const &GetDicomDirMetaElements() const
89       { return DicomDirMetaList; }
90
91    /**
92     * \brief   returns a reference to the chained List 
93     *          related to the PATIENT Elements of a DICOMDIR.
94     */      
95    ListDicomDirPatientElem const &GetDicomDirPatientElements() const
96       { return DicomDirPatientList; }
97
98    /**
99     * \brief   returns a reference to the chained List 
100     *          related to the STUDY Elements of a DICOMDIR.
101     */      
102    ListDicomDirStudyElem const &GetDicomDirStudyElements() const
103       { return DicomDirStudyList; }
104
105    /**
106     * \brief   returns a reference to the chained List 
107     *          related to the VISIT Elements of a DICOMDIR.
108     */      
109    ListDicomDirVisitElem const &GetDicomDirVisitElements() const
110       { return DicomDirVisitList; }
111    /**
112     * \brief   returns a reference to the chained List 
113     *          related to the SERIE Elements of a DICOMDIR.
114     */
115    ListDicomDirSerieElem const &GetDicomDirSerieElements() const
116       { return DicomDirSerieList; }
117
118    /**
119     * \brief   returns a reference to the chained List 
120     *          related to the IMAGE Elements of a DICOMDIR.
121     */
122    ListDicomDirImageElem const &GetDicomDirImageElements() const
123       { return DicomDirImageList; }
124
125    /**
126     * \brief   returns a reference to the chained List 
127     *          related to the PRIVATE Elements of a DICOMDIR.
128     */      
129    ListDicomDirPrivateElem const &GetDicomDirPrivateElements() const
130       { return DicomDirPrivateList; }
131  
132       
133    // Public method to add an element
134    bool AddEntry(DicomDirType type, DicomElement const &elem);
135
136    // Only one instance of ddElem 
137    void AddDicomDirElement(DicomDirType type,
138                            uint16_t group, uint16_t elem, VRKey vr);
139
140 protected:
141    DicomDirElement();
142    ~DicomDirElement();
143
144 private:
145    /// Elements chained list, related to the MetaElements of DICOMDIR
146    ListDicomDirMetaElem    DicomDirMetaList;
147    /// Elements chained list, related to the PatientElements of DICOMDIR
148    ListDicomDirPatientElem DicomDirPatientList;
149    /// Elements chained list, related to the StudyElements of DICOMDIR
150    ListDicomDirStudyElem   DicomDirStudyList;
151    /// Elements chained list, related to the VisitElements of DICOMDIR
152    ListDicomDirVisitElem   DicomDirVisitList;
153    /// Elements chained list, related to the SerieElements of DICOMDIR
154    ListDicomDirSerieElem   DicomDirSerieList;
155    /// Elements chained list, related to the ImageElements of DICOMDIR
156    ListDicomDirImageElem   DicomDirImageList;
157    /// Elements chained list, related to the PrivateElements of DICOMDIR
158    ListDicomDirPrivateElem   DicomDirPrivateList;
159 };
160 } // end namespace gdcm
161 //-----------------------------------------------------------------------------
162 #endif