]> Creatis software - gdcm.git/blobdiff - src/gdcmDictSet.cxx
* Adaptation for porting to VC++:
[gdcm.git] / src / gdcmDictSet.cxx
index ed4bdf9be3a8aecc3d371380fe7c0bf3887b35a9..3e0cc03678c6a58a993b25629a54cd2752d4d899 100644 (file)
@@ -1,22 +1,41 @@
 #include <fstream>
+#include <stdlib.h>  // For getenv
 #include "gdcm.h"
 #include "gdcmUtil.h"
 
+#define PUB_DICT_NAME     "DicomV3Dict"
+#define PUB_DICT_PATH     "../Dicts/"
+#define PUB_DICT_FILENAME "dicomV3.dic"
 
 gdcmDictSet::gdcmDictSet(void) {
+       SetDictPath();
        if (! LoadDicomV3Dict())
                          return;
 }
 
+void gdcmDictSet::SetDictPath(void) {
+       const char* EnvPath = (char*)0;
+       EnvPath = getenv("GDCM_DICT_PATH");
+       if (EnvPath && (strlen(EnvPath) != 0)) {
+               DictPath = EnvPath;
+               if (DictPath[DictPath.length() -1] != '/' )
+                       DictPath += '/';
+               dbg.Verbose(1, "gdcmDictSet::SetDictPath:",
+                     "Dictionary path set from environnement");
+       } else
+               DictPath = PUB_DICT_PATH;
+}
+
 int gdcmDictSet::LoadDicomV3Dict(void) {
-       if (dicts.count(PUBDICTNAME))
+       if (dicts.count(PUB_DICT_NAME))
                return 1;
-       return LoadDictFromFile(PUBDICTFILENAME, PUBDICTNAME);
+       return LoadDictFromFile(DictPath + PUB_DICT_FILENAME, PUB_DICT_NAME);
 }
 
-int gdcmDictSet::LoadDictFromFile(char * FileName, DictKey Name) {
-       gdcmDict *NewDict = new gdcmDict(FileName);
-       dicts[Name] = NewDict; 
+int gdcmDictSet::LoadDictFromFile(string FileName, DictKey Name) {
+       gdcmDict *NewDict = new gdcmDict(FileName.c_str());
+       dicts[Name] = NewDict;
+       return 0;   //FIXME if this is a dummy return make the method void
 }
 
 void gdcmDictSet::Print(ostream& os) {
@@ -32,5 +51,5 @@ gdcmDict * gdcmDictSet::GetDict(DictKey DictName) {
 }
 
 gdcmDict * gdcmDictSet::GetDefaultPublicDict() {
-       return GetDict(PUBDICTNAME);
+       return GetDict(PUB_DICT_NAME);
 }