[Creatis-hackers] Re: [Dcmlib] gdcm: string + map

Jean-Pierre Roux Jean-Pierre.Roux at creatis.insa-lyon.fr
Fri Nov 14 18:13:12 CET 2003


>
> J'utilise des string et des listes de strings sans modération dans mes
> codes sans rencontrer de lenteur particulière de compilation donc je
> doute que ce soit un problème.
> Les symboles trop long génèrent des 100aines de warning sous visual c++
> mais je n'ai jamais rencontré d'autre problèmes avec ça.
>
> Johan
>


C'est une fonction de qq lignes qui prend 10 ou 15 mn a compiler:

gdcmTS.h
--------------------------
typedef std::string TSKey;
typedef std::string TSAtr;
typedef std::map<TSKey, TSAtr> TSHT;    // Transfert Syntax Hash Table

/// Container for dicom Transfert Syntax Hash Table
/// \note   This is a singleton
class GDCM_EXPORT gdcmTS {
private:
   TSHT ts;

public:
   gdcmTS(void);
   ~gdcmTS();
   int Count(TSKey key);
   std::string GetValue(TSKey key);
};
-------------------------------
gdcmTS.cxx

#include <stdio.h>

#include "gdcmTS.h"

gdcmTS::gdcmTS(void) {
   ts["1.2.840.10008.1.2"]      = "Implicit VR - Little Endian";
   ts["1.2.840.10008.1.2.1"]    = "Explicit VR - Little Endian";
   ts["1.2.840.10008.1.2.1.99"] = "Deflated Explicit VR - Little Endian";
   ts["1.2.840.10008.1.2.2"]    = "Explicit VR - Big Endian";
   ts["1.2.840.10008.1.2.4.50"] = "JPEG Baseline (Process 1)";
   ts["1.2.840.10008.1.2.4.51"] = "JPEG Extended (Process 2 & 4)";
   ts["1.2.840.10008.1.2.4.52"] = "JPEG Extended (Process 3 & 5) (Retired)";

etc.
etc.
etc
 }

gdcmTS::~gdcmTS() {
   ts.clear();
}

int gdcmTS::Count(TSKey key) {
   return ts.count(key);
}

std::string gdcmTS::GetValue(TSKey key) {
   if (ts.count(key) == 0)
      return (GDCM_UNFOUND);
   return ts[key];
}

et rien d'autre.

Ca prenait qq secondes à compiler lorsqu'il y avait 20 entrees ds la H table.
J'en ai ajouté 100 de plus, et c'est l'horeur .

Any idea?

JPRx






More information about the Dcmlib mailing list