1/////////////////////////////////////////////////////////////////////////////// 2// Name: ole/uuid.h 3// Purpose: encapsulates an UUID with some added helper functions 4// Author: Vadim Zeitlin 5// Modified by: 6// Created: 11.07.97 7// RCS-ID: $Id: uuid.h 55113 2008-08-18 11:30:10Z VZ $ 8// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 9// Licence: wxWindows licence 10// 11// Notes: you should link your project with RPCRT4.LIB! 12/////////////////////////////////////////////////////////////////////////////// 13 14#ifndef _WX_OLEUUID_H 15#define _WX_OLEUUID_H 16 17#include "wx/wxchar.h" 18// ------------------------------------------------------------------ 19// UUID (Universally Unique IDentifier) definition 20// ------------------------------------------------------------------ 21 22// ----- taken from RPC.H 23#ifndef UUID_DEFINED // in some cases RPC.H will be already 24 #ifdef __WIN32__ // included, so avoid redefinition 25 typedef struct 26 { 27 unsigned long Data1; 28 unsigned short Data2; 29 unsigned short Data3; 30 unsigned char Data4[8]; 31 } UUID; // UUID = GUID = CLSID = LIBID = IID 32 #endif // WIN32 33#endif // UUID_DEFINED 34 35#ifndef GUID_DEFINED 36 typedef UUID GUID; 37 #define UUID_DEFINED // prevent redefinition 38#endif // GUID_DEFINED 39 40typedef unsigned char uchar; 41 42// ------------------------------------------------------------------ 43// a class to store UUID and it's string representation 44// ------------------------------------------------------------------ 45 46// uses RPC functions to create/convert Universally Unique Identifiers 47class WXDLLEXPORT Uuid 48{ 49private: 50 UUID m_uuid; 51 wxUChar *m_pszUuid; // this string is alloc'd and freed by RPC 52 wxChar *m_pszCForm; // this string is allocated in Set/Create 53 54 void UuidToCForm(); 55 56 // function used to set initial state by all ctors 57 void Init() { m_pszUuid = NULL; m_pszCForm = NULL; } 58 59public: 60 // ctors & dtor 61 Uuid() { Init(); } 62 Uuid(const wxChar *pc) { Init(); Set(pc); } 63 Uuid(const UUID &uuid) { Init(); Set(uuid); } 64 ~Uuid(); 65 66 // copy ctor and assignment operator needed for this class 67 Uuid(const Uuid& uuid); 68 Uuid& operator=(const Uuid& uuid); 69 70 // create a brand new UUID 71 void Create(); 72 73 // set value of UUID 74 bool Set(const wxChar *pc); // from a string, returns true if ok 75 void Set(const UUID& uuid); // from another UUID (never fails) 76 77#if wxABI_VERSION >= 20809 78 // comparison operators 79 bool operator==(const Uuid& uuid) const; 80 bool operator!=(const Uuid& uuid) const; 81#endif // wxABI_VERSION >= 2.8.9 82 83 // accessors 84 operator const UUID*() const { return &m_uuid; } 85 operator const wxChar*() const { return (wxChar *)(m_pszUuid); } 86 87 // return string representation of the UUID in the C form 88 // (as in DEFINE_GUID macro) 89 const wxChar *CForm() const { return m_pszCForm; } 90}; 91 92#endif //_WX_OLEUUID_H 93