X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmCommon.h;h=30d087ed1037403b88d2ceaa3151d66b507e8019;hb=fdca8d2cc7f1a716e591540de386c88dabbf6031;hp=056fdbc53cc4dfead7c1d8be7fdc028048aa1738;hpb=6f137a54919af02b06781171b9bbe672fe2ae0ef;p=gdcm.git diff --git a/src/gdcmCommon.h b/src/gdcmCommon.h index 056fdbc5..30d087ed 100644 --- a/src/gdcmCommon.h +++ b/src/gdcmCommon.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmCommon.h,v $ Language: C++ - Date: $Date: 2005/07/11 08:19:37 $ - Version: $Revision: 1.70 $ + Date: $Date: 2005/07/11 15:20:46 $ + Version: $Revision: 1.73 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -85,6 +85,16 @@ typedef unsigned int uint32_t; #endif #include +#define FASTTAGKEY 0 + +// FIXME: Should rewrite this: +#if FASTTAGKEY +#include +#endif +#if defined(_MSC_VER) && (_MSC_VER == 1200) +/* ostream operator for std::string since VS6 does not provide it*/ +#include +#endif /// \brief namespace for Grass root DiCoM namespace gdcm @@ -115,7 +125,43 @@ GDCM_EXPORT extern const std::string GDCM_UNREAD; /// We'll fix the mess up -without any change in the API- as soon as the bench /// marks are fully performed. +#if FASTTAGKEY +typedef union { + uint16_t tab[2]; + uint32_t tagkey; + } TagKey; +/* ostream operator for TagKey */ +inline std::ostream& operator<<(std::ostream& _O, TagKey _val) +{ + return ( _O << std::ios::hex << _val.tab[0] + << "|" << std::ios::hex << _val.tab[1] ); +}; +inline bool operator==(TagKey _self, TagKey _val) +{ + return _self.tagkey == _val.tagkey; +}; +inline bool operator<(TagKey _self, TagKey _val) +{ + return _self.tagkey < _val.tagkey; +}; +// FIXME +// This one is clearly weird, see gdcmDocument:918 +inline TagKey operator+(TagKey _self, TagKey _val) +{ + TagKey r; + r.tagkey = _self.tagkey + _val.tagkey; + return r; +}; +#else typedef std::string TagKey; +#endif +#if defined(_MSC_VER) && (_MSC_VER == 1200) +// Doing everything within gdcm namespace to avoid polluting 3d party software +inline std::ostream& operator<<(std::ostream& _O, std::string _val) +{ + return _O << _val.c_str(); +}; +#endif typedef std::string TagName; enum FileType {