123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /***************************************************************************
- * 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
|