]> Creatis software - gdcm.git/blob - src/gdcmDictSet.h
* src/*.h : add comments
[gdcm.git] / src / gdcmDictSet.h
1 // gdcmDictSet.h
2
3 #ifndef GDCMDICTSET_H
4 #define GDCMDICTSET_H
5
6 #include "gdcmDict.h"
7 #include <map>
8 #include <list>
9
10 typedef std::string DictKey;
11 typedef std::map<DictKey, gdcmDict*> DictSetHT;
12
13 /*
14  * \defgroup gdcmDictSet
15  * \brief  Container for managing a set of loaded dictionaries.
16  * \note   Hopefully, sharing dictionaries should avoid
17  * \par    reloading an already loaded dictionary (saving time)
18  * \par    having many in memory representations of the same dictionary
19  *        (saving memory).
20  */
21 class GDCM_EXPORT gdcmDictSet {
22 private:
23    /// Hash table of all dictionaries contained in this gdcmDictSet
24         DictSetHT Dicts;
25    /// Directory path to dictionaries
26    std::string DictPath;
27
28         int AppendDict(gdcmDict* NewDict);
29         void LoadDictFromFile(std::string FileName, DictKey Name);
30    std::string BuildDictPath(void);
31
32 public:
33    std::list<std::string> * GetPubDictTagNames(void);
34    std::map<std::string, std::list<std::string> >*
35        GetPubDictTagNamesByCategory(void);
36
37         // TODO Swig int LoadDictFromFile(std::string filename);
38    // QUESTION: the following function might not be thread safe !? Maybe
39    //           we need some mutex here, to avoid concurent creation of
40    //           the same dictionary !?!?!
41         // TODO Swig int LoadDictFromName(std::string filename);
42         // TODO Swig int LoadAllDictFromDirectory(std::string DirectoryName);
43         // TODO Swig std::string* GetAllDictNames();
44         gdcmDictSet(void);
45         ~gdcmDictSet(void);
46         void Print(std::ostream& os);
47
48         gdcmDict* GetDict(DictKey DictName);
49         gdcmDict* GetDefaultPubDict(void);
50 };
51
52 #endif