]> Creatis software - gdcm.git/blob - src/gdcmGlobal.cxx
* Some classes inherit now from gdcm::RefCounter
[gdcm.git] / src / gdcmGlobal.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmGlobal.cxx,v $
5   Language:  C++
6   Date:      $Date: 2005/10/25 14:52:35 $
7   Version:   $Revision: 1.28 $
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 #include "gdcmGlobal.h"
20
21 #include "gdcmDebug.h"
22 #include "gdcmVR.h"
23 #include "gdcmTS.h"
24 #include "gdcmDictGroupName.h"
25 #include "gdcmDictSet.h"
26 #include "gdcmDicomDirElement.h"
27
28 namespace gdcm 
29 {
30 //-----------------------------------------------------------------------------
31 /// \brief Those global string that are returned by reference everywhere in 
32 /// gdcm code used to be in gdcmCommon.h but due to a 'bug' in gcc/MacOSX
33 /// you cannot have static initialization in a multithreaded environment
34 /// since there is a lazy construction everything got skrew up somehow
35 /// Therefore the actual initialization is done in a cxx file (avoid
36 /// duplicated symbol), and an extern is used in gdcmCommon.h
37
38 const std::string GDCM_UNKNOWN   = "gdcm::Unknown";
39 const std::string GDCM_UNFOUND   = "gdcm::Unfound";
40 const std::string GDCM_BINLOADED = "gdcm::Binary data loaded";
41 const std::string GDCM_NOTLOADED = "gdcm::NotLoaded";
42 const std::string GDCM_UNREAD    = "gdcm::UnRead";
43 const std::string GDCM_NOTASCII  = "gdcm::NotAscii";
44 const std::string GDCM_PIXELDATA = "gdcm::Pixel Data to be loaded";
45
46 const std::string GDCM_VRUNKNOWN = "  ";
47
48 //-----------------------------------------------------------------------------
49 DictSet         *Global::Dicts     = (DictSet *)0;
50 VR              *Global::ValRes    = (VR *)0;
51 TS              *Global::TranSyn   = (TS *)0;
52 DictGroupName   *Global::GroupName = (DictGroupName *)0;
53 DicomDirElement *Global::ddElem    = (DicomDirElement *)0;
54
55 //-----------------------------------------------------------------------------
56 /**
57  * \brief   Global container
58  */
59 Global Glob;
60
61 //-------------------------------------------------------------------------
62 // Constructor / Destructor
63 /**
64  * \brief   constructor : populates the various H Tables
65  */
66 Global::Global()
67 {
68    if (ValRes || TranSyn || Dicts || ddElem)
69    {
70       gdcmWarningMacro( "VR or TS or Dicts already allocated");
71       return;
72    }
73    Dicts     = DictSet::New();
74    ValRes    = VR::New();
75    TranSyn   = TS::New();
76    GroupName = DictGroupName::New();
77    ddElem    = DicomDirElement::New();
78 }
79
80 /**
81  * \brief   canonical destructor 
82  */
83 Global::~Global()
84 {
85    Dicts->Delete();
86    ValRes->Delete();
87    TranSyn->Delete();
88    GroupName->Delete();
89    ddElem->Delete();
90 }
91
92 //-----------------------------------------------------------------------------
93 // Public
94 /**
95  * \brief   returns a pointer to Dictionaries Table 
96  */
97 DictSet *Global::GetDicts()
98 {
99    return Dicts;
100 }
101
102 /**
103  * \brief   returns a pointer to the 'Value Representation Table' 
104  */
105 VR *Global::GetVR()
106 {
107    return ValRes;
108 }
109
110 /**
111  * \brief   returns a pointer to the 'Transfer Syntax Table' 
112  */
113 TS *Global::GetTS()
114 {
115    return TranSyn;
116 }
117
118 /**
119  * \brief   returns a pointer to the Group name correspondance table
120  */
121 DictGroupName *Global::GetDictGroupName()
122 {
123    return GroupName;
124 }
125
126 /**
127  * \brief   returns a pointer to the DicomDir related elements Table 
128  */
129 DicomDirElement *Global::GetDicomDirElements()
130 {
131    return ddElem;
132 }
133
134 //-----------------------------------------------------------------------------
135 // Protected
136
137 //-----------------------------------------------------------------------------
138 // Private
139
140 //-----------------------------------------------------------------------------
141 // Print
142
143 //-----------------------------------------------------------------------------
144 } // end namespace gdcm