[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