]> Creatis software - gdcm.git/blobdiff - src/gdcmUtil.cxx
* More memmory link related corrections and documentation fixes.
[gdcm.git] / src / gdcmUtil.cxx
index c6a7576e6485b7d8e92841610b75daba9df99877..207b66f13351b1d435182b411c09947c9838565c 100644 (file)
@@ -1,6 +1,11 @@
-#include <ctype.h>
+// gdcmUtil.cxx
+
+#include <ctype.h>   // For isspace
 #include "gdcmUtil.h"
 
+// Library globals.
+gdcmDebug dbg;
+
 gdcmDebug::gdcmDebug(int level) {
        DebugLevel = level;
 }
@@ -23,18 +28,51 @@ void gdcmDebug::Error( bool Test, const char * Msg1, const char * Msg2) {
        if (!Test)
                return;
        std::cerr << Msg1 << ' ' << Msg2 << '\n';
-       exit(1);
+       Exit(1);
 }
 
 void gdcmDebug::Error(const char* Msg1, const char* Msg2,
                       const char* Msg3) {
        std::cerr << Msg1 << ' ' << Msg2 << ' ' << Msg3 << '\n';
-       exit(1);
+       Exit(1);
 }
 
-gdcmDebug dbg;
+void gdcmDebug::Exit(int a) {
+#ifdef __GNUC__
+       std::exit(a);
+#endif
+#ifdef _MSC_VER
+       exit(a);    // Found in #include <stdlib.h>
+#endif
+}
+
+///////////////////////////////////////////////////////////////////////////
+gdcmVR      * gdcmGlobal::VR    = (gdcmVR*)0;
+gdcmDictSet * gdcmGlobal::Dicts = (gdcmDictSet*)0;
+gdcmGlobal gdcmGlob;
+
+gdcmGlobal::gdcmGlobal(void) {
+   if (VR || Dicts)
+      dbg.Verbose(0, "gdcmGlobal::gdcmGlobal: VR or Dicts allready allocated");
+   VR = new gdcmVR();
+   Dicts = new gdcmDictSet();
+}
 
-// Because is not yet available in g++2.06
+gdcmGlobal::~gdcmGlobal() {
+   delete VR;
+   delete Dicts;
+}
+
+gdcmVR * gdcmGlobal::GetVR(void) {
+   return VR;
+}
+
+gdcmDictSet * gdcmGlobal::GetDicts(void) {
+   return Dicts;
+}
+
+///////////////////////////////////////////////////////////////////////////
+// Because is not yet available in g++2.96
 istream& eatwhite(istream& is) {
        char c;
        while (is.get(c)) {
@@ -46,3 +84,14 @@ istream& eatwhite(istream& is) {
        return is;
 }
 
+void Tokenize (const string& str,
+               vector<string>& tokens,
+               const string& delimiters) {
+   string::size_type lastPos = str.find_first_not_of(delimiters,0);
+   string::size_type pos     = str.find_first_of(delimiters,lastPos);
+   while (string::npos != pos || string::npos != lastPos) {
+      tokens.push_back(str.substr(lastPos, pos - lastPos));
+      lastPos = str.find_first_not_of(delimiters, pos);
+      pos = str.find_first_of(delimiters, lastPos);
+   }
+}