+/// \brief TagKey is made to hold the standard Dicom Tag (Group number, Element
+/// number)
+/// Instead of using the two '16 bits integers' as the Hask Table key, we
+/// converted into a string (e.g. 0x0018,0x0050 converted into "0018|0050")
+/// It appears to be a huge waste of time.
+/// 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