+#include <stdio.h> // For sprintf
+
+namespace gdcm
+{
+
+//-----------------------------------------------------------------------------
+// Constructor / Destructor
+/**
+ * \brief The Dictionary Set obtained with this constructor simply
+ * contains the Default Public dictionary.
+ */
+DictSet::DictSet()
+{
+ DictPath = BuildDictPath();
+ std::string pubDictFile(DictPath);
+ pubDictFile += PUB_DICT_FILENAME;
+ Dicts[PUB_DICT_NAME] = new Dict(pubDictFile);
+}
+
+/**
+ * \brief Destructor
+ */
+DictSet::~DictSet()
+{
+ // Remove dictionaries
+ for (DictSetHT::iterator tag = Dicts.begin(); tag != Dicts.end(); ++tag)
+ {
+ Dict *entryToDelete = tag->second;
+ if ( entryToDelete )
+ {
+ delete entryToDelete;
+ }
+ tag->second = NULL;
+ }
+ Dicts.clear();
+
+ // Remove virtual dictionary entries
+ VirtualEntries.clear();
+}
+
+//-----------------------------------------------------------------------------
+// Public
+/**
+ * \brief Loads a dictionary from a specified file, and add it
+ * to already the existing ones contained in this DictSet.
+ * @param filename Absolute or relative filename containing the
+ * dictionary to load.
+ * @param name Symbolic name that be used as identifier of the newly
+ * created dictionary.
+ */
+Dict *DictSet::LoadDictFromFile(std::string const &filename,
+ DictKey const &name)
+{
+ Dict *newDict = new Dict(filename);
+ AppendDict(newDict, name);