Program: gdcm
Module: $RCSfile: gdcmDictSet.h,v $
Language: C++
- Date: $Date: 2004/12/16 13:46:37 $
- Version: $Revision: 1.30 $
+ Date: $Date: 2007/08/22 16:14:04 $
+ Version: $Revision: 1.55 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
-#ifndef GDCMDICTSET_H
-#define GDCMDICTSET_H
+#ifndef _GDCMDICTSET_H
+#define _GDCMDICTSET_H
-#include "gdcmBase.h"
+#include "gdcmRefCounter.h"
#include "gdcmDict.h"
+#include "gdcmGlobal.h"
#include <map>
#include <list>
-namespace gdcm
+namespace GDCM_NAME_SPACE
{
+//-----------------------------------------------------------------------------
typedef std::map<DictKey, Dict*> DictSetHT;
//-----------------------------------------------------------------------------
-/*
- * \defgroup DictSet
- * \brief Container for managing a set of loaded dictionaries.
+/**
+ * \brief Container for managing a set of loaded dictionaries (Dict).
* \note Hopefully, sharing dictionaries should avoid
- * \par reloading an already loaded dictionary (saving time)
- * \par having many in memory representations of the same dictionary
+ * - reloading an already loaded dictionary (saving time)
+ * - having many in memory representations of the same dictionary
* (saving memory).
*/
-class GDCM_EXPORT DictSet : public Base
+class GDCM_EXPORT DictSet : public RefCounter
{
-public:
- DictSet();
- ~DictSet();
+ gdcmTypeMacro(DictSet);
- void Print(std::ostream& os);
+public:
+/// \brief Contructs a DictSet with a RefCounter
+ static DictSet *New() {return new DictSet();}
- EntryNamesList * GetPubDictEntryNames();
- EntryNamesByCatMap * GetPubDictEntryNamesByCategory();
+ void Print(std::ostream &os = std::cout, std::string const &indent = "" );
- Dict* LoadDictFromFile( std::string const & fileName,
- DictKey const & name );
+ // Probabely useless !
+ //EntryNamesList *GetPubDictEntryNames();
+ //EntryNamesByCatMap *GetPubDictEntryNamesByCategory();
- Dict* GetDict( DictKey const & DictName );
+ Dict *LoadDictFromFile( std::string const &fileName,
+ DictKey const &name );
- /// \brief Retrieve the default reference DICOM V3 public dictionary.
- Dict* GetDefaultPubDict() { return GetDict(PUB_DICT_NAME); };
+ Dict *GetDict( DictKey const &DictName );
- // \brief Retrieve the virtual reference DICOM dictionary.
- // \warning : not end user intended
- // Dict* GetVirtualDict() { return &VirtualEntry; };
+ /// \brief Returns the default reference DICOM V3 public dictionary.
+ //Dict* GetDefaultPubDict() { return GetDict(PUB_DICT_NAME); }
+ Dict* GetDefaultPubDict() { return Global::DefaultPubDict; }
+
+ // \ brief Returns the virtual references DICOM dictionary.
+ // \ warning : not end user intended
+ // Dict *GetVirtualDict() { return &VirtualEntries; }
- DictEntry* NewVirtualDictEntry(uint16_t group, uint16_t element,
- TagName vr = "Unknown",
- TagName fourth = "Unknown",
- TagName name = "Unknown");
+ Dict *GetFirstDict();
+ Dict *GetNextDict();
static std::string BuildDictPath();
protected:
- bool AppendDict(Dict *NewDict, DictKey const & name);
+ DictSet();
+ ~DictSet();
private:
/// Hash table of all dictionaries contained in this DictSet
DictSetHT Dicts;
+ /// Iterator to visit the Dictionaries of a given DictSet
+ DictSetHT::iterator ItDictHt;
/// Directory path to dictionaries
std::string DictPath;
-
- /// H table for the on the fly created DictEntries
- TagKeyHT VirtualEntry;
};
} // end namespace gdcm