/*************************************************************************** * E-Com Technology Ltd. * * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta ***************************************************************************/ #ifndef __DICOM_UID__ #define __DICOM_UID__ class DString; ////////////////////////////////////////////////////////////////////// // class UID class DICOM_API UID { private: char uid[65]; UINT Length; public: UID () { uid[0] = 0; Length = 0; } UID (const BYTE *s) { Set (s); } UID (const char *s) { Set ((BYTE*)s); } UID (const DString & str) { Set (str); } void Get (UID & u) { u = (*this); } void Set (const UID & u) { (*this) = u; } void Set (const char *s) { this->Set ((BYTE *) s); } void Set (const DString & s) { (*this) = s; } void Set (const BYTE *s) { Reset (); if (! s) return; Length = strlen ((char*) s); Length %= 65; memcpy ((char *) uid, (char *) s, Length); uid[Length] = 0; }; // void Set (const VR * vr) { (*this) = (*vr); }; const char * GetBuffer (UINT Min) const { return (&uid[0]); } ; void SetLength (UINT L) { Length = L; while (L < 65) uid[L++] = '\0'; }; UINT GetLength (void) const { return (Length); } ; operator const char * () const { return (&uid[0]); } // TRUE if zero length BOOL IsEmpty () const { return (Length == 0); } void Reset (void) { uid[0] = 0; Length = 0; } BOOL IsValid (void) const { if (uid[0] == 0) return false; else return true; } BOOL Lookup (char * TypeDesc, int DescLength) const ; DString Lookup (void) const { DString str; int l = 1024; Lookup (str.GetBufferSetLength (l), l); return str; } int Compare (const UID & uid) const { return strcmp (GetBuffer(1), uid.GetBuffer(1)); } int Compare (const char * lpszUIDStr) const { return strcmp (GetBuffer(1), lpszUIDStr); } UID & operator = (const char * lpszUIDStr) { Set (lpszUIDStr); return (*this); } UID & operator = (const UID & ud) { memcpy (uid, ud.GetBuffer (1), sizeof (uid)); SetLength (ud.GetLength ()); return (*this); } UID & operator = (const DString & s) { const char * ps = (const char *)s; memcpy (uid, ps, s.GetLength()%65); SetLength (s.GetLength ()%65); return (*this); } static void GetUID (UID & uid); }; DICOM_API inline bool __stdcall operator == (const UID & s1, const UID & s2) { return s1.Compare (s2) == 0; } DICOM_API inline bool __stdcall operator == (const UID & s1, const char * s2) { return s1.Compare (s2) == 0; } DICOM_API inline bool __stdcall operator == (const char * s1, const UID & s2) { return s2.Compare (s1) == 0; } DICOM_API inline bool __stdcall operator != (const UID & s1, const UID & s2) { return s1.Compare (s2) != 0; } DICOM_API inline bool __stdcall operator != (const UID & s1, const char * s2) { return s1.Compare (s2) != 0; } DICOM_API inline bool __stdcall operator != (const char * s1, const UID & s2) { return s2.Compare (s1) != 0; } DICOM_API inline bool __stdcall operator < (const UID & s1, const UID & s2) { return s1.Compare (s2) < 0; } DICOM_API inline bool __stdcall operator < (const UID & s1, const char * s2) { return s1.Compare (s2) < 0; } DICOM_API inline bool __stdcall operator < (const char * s1, const UID & s2) { return s2.Compare (s1) > 0; } DICOM_API inline bool __stdcall operator > (const UID & s1, const UID & s2) { return s1.Compare (s2) > 0; } DICOM_API inline bool __stdcall operator > (const UID & s1, const char * s2) { return s1.Compare (s2) > 0; } DICOM_API inline bool __stdcall operator > (const char * s1, const UID & s2) { return s2.Compare (s1) < 0; } DICOM_API inline bool __stdcall operator <= (const UID & s1, const UID & s2) { return s1.Compare (s2) <= 0; } DICOM_API inline bool __stdcall operator <= (const UID & s1, const char * s2) { return s1.Compare (s2) <= 0; } DICOM_API inline bool __stdcall operator <= (const char * s1 , const UID & s2) { return s2.Compare (s1) >= 0; } DICOM_API inline bool __stdcall operator >= (const UID & s1, const UID & s2) { return s1.Compare (s2) >= 0; } DICOM_API inline bool __stdcall operator >= (const UID & s1, const char * s2) { return s1.Compare (s2) >= 0; } DICOM_API inline bool __stdcall operator >= (const char * s1 , const UID & s2) { return s2.Compare (s1) <= 0; } #endif