+//-----------------------------------------------------------------------------
+/**
+ * \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
+ * (saving memory).
+ */
+class GDCM_EXPORT DictSet : public Base
+{
+public:
+ DictSet();
+ ~DictSet();
+
+ void Print(std::ostream &os = std::cout, std::string const &indent = "" );
+
+ // Probabely useless !
+ //EntryNamesList *GetPubDictEntryNames();
+ //EntryNamesByCatMap *GetPubDictEntryNamesByCategory();
+
+ Dict *LoadDictFromFile( std::string const &fileName,
+ DictKey const &name );
+
+ Dict *GetDict( DictKey const &DictName );
+
+ /// \brief Returns the default reference DICOM V3 public dictionary.
+ Dict* GetDefaultPubDict() { return GetDict(PUB_DICT_NAME); }
+
+ // \ brief Returns the virtual references DICOM dictionary.
+ // \ warning : not end user intended
+ // Dict *GetVirtualDict() { return &VirtualEntries; }
+
+ DictEntry *NewVirtualDictEntry(uint16_t group, uint16_t elem,
+ TagName vr = GDCM_UNKNOWN,
+ TagName vm = GDCM_UNKNOWN,
+ TagName name = GDCM_UNKNOWN);
+
+ Dict *GetFirstEntry();
+ Dict *GetNextEntry();
+
+ static std::string BuildDictPath();
+
+protected:
+ bool AppendDict(Dict *NewDict, DictKey const &name);