]> Creatis software - gdcm.git/blobdiff - src/gdcmUtil.cxx
COMP: How the f* did it ever work before...
[gdcm.git] / src / gdcmUtil.cxx
index e792e0a2fa0d14bf8d8ee991d9f088345c821cf5..4657435af579b7b59cc7ef5045f93215e9382e39 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmUtil.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/06/04 01:57:36 $
-  Version:   $Revision: 1.151 $
+  Date:      $Date: 2005/06/08 12:24:53 $
+  Version:   $Revision: 1.154 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -36,7 +36,7 @@
 
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__)
    #include <winsock.h>  // for gethostname and gethostbyname and GetTickCount...
-#ifdef _MSC_VER
+#ifndef __BORLANDC__
    #undef GetCurrentTime
 #endif
 #else
@@ -94,6 +94,7 @@ const std::string Util::GDCM_UID = "1.2.826.0.1.3680043.2.1143";
 std::string Util::RootUID        = GDCM_UID;
 const uint16_t Util::FMIV = 0x0001;
 uint8_t *Util::FileMetaInformationVersion = (uint8_t *)&FMIV;
+std::string Util::GDCM_MAC_ADRESS = GetMACAddress();
 
 //-------------------------------------------------------------------------
 // Public
@@ -320,10 +321,11 @@ std::string Util::GetCurrentDateTime()
    strftime (tmp, sizeof (tmp), "%Y%m%d%H%M%S", ptm);
 
    // Add milliseconds
-   std::string r = tmp;
-   r += Format("%03ld", milliseconds);
+   // Don't use Util::Format to accelerate execution of code
+   char tmpAll[80];
+   sprintf(tmpAll,"%s%03ld",tmp,milliseconds);
 
-   return r;
+   return tmpAll;
 }
 
 unsigned int Util::GetCurrentThreadID()
@@ -389,7 +391,7 @@ std::string Util::DicomString(const char *s, size_t l)
  * \brief Create a /DICOM/ string:
  * It should a of even length (no odd length ever)
  * It can contain as many (if you are reading this from your
- * editor the following character is is backslash followed by zero
+ * editor the following character is backslash followed by zero
  * that needed to be escaped with an extra backslash for doxygen) \\0
  * as you want.
  * This function is similar to DicomString(const char*), 
@@ -789,13 +791,17 @@ std::string Util::CreateUniqueUID(const std::string &root)
 
    // A root was specified use it to forge our new UID:
    append += ".";
-   append += Util::GetMACAddress();
+   //append += Util::GetMACAddress(); // to save CPU time
+   append += Util::GDCM_MAC_ADRESS;
    append += ".";
    append += Util::GetCurrentDateTime();
 
    //Also add a mini random number just in case:
+   char tmp[10];
    int r = (int) (100.0*rand()/RAND_MAX);
-   append += Format("%02d", r);
+   // Don't use Util::Format to accelerate the execution
+   sprintf(tmp,"%02d", r);
+   append += tmp;
 
    // If append is too long we need to rehash it
    if( (prefix + append).size() > 64 )