a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync/*
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * Copyright (C) 2000 Alexandre Julliard
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync *
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * This library is free software; you can redistribute it and/or
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * modify it under the terms of the GNU Lesser General Public
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * License as published by the Free Software Foundation; either
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * version 2.1 of the License, or (at your option) any later version.
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync *
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * This library is distributed in the hope that it will be useful,
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * Lesser General Public License for more details.
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync *
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * You should have received a copy of the GNU Lesser General Public
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * License along with this library; if not, write to the Free Software
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync/*
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
98744bb362e14debc292b1cf9e11f0d32b37338avboxsync * a choice of LGPL license versions is made available with the language indicating
65697a26b524640b83828b715160c798c43a0424vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync * of the LGPL is applied is otherwise unspecified.
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync */
65697a26b524640b83828b715160c798c43a0424vboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#ifndef GUID_DEFINED
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define GUID_DEFINED
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef struct _GUID
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync{
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#ifdef _MSC_VER
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync unsigned long Data1;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#else
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync unsigned int Data1;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync unsigned short Data2;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync unsigned short Data3;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync unsigned char Data4[ 8 ];
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync} GUID;
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#endif
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#undef DEFINE_GUID
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#ifdef INITGUID
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#ifdef __cplusplus
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync EXTERN_C const GUID name DECLSPEC_HIDDEN; \
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync EXTERN_C const GUID name = \
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#else
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync const GUID name DECLSPEC_HIDDEN; \
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync const GUID name = \
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#else
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync EXTERN_C const GUID name DECLSPEC_HIDDEN
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define DEFINE_OLEGUID(name, l, w1, w2) \
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#ifndef _GUIDDEF_H_
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define _GUIDDEF_H_
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#ifndef __LPGUID_DEFINED__
97fd7338a708a1cdb63fbdf823f6e508dc0d914dvboxsync#define __LPGUID_DEFINED___
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef GUID *LPGUID;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#ifndef __LPCGUID_DEFINED__
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define __LPCGUID_DEFINED__
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef const GUID *LPCGUID;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#ifndef __IID_DEFINED__
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define __IID_DEFINED__
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef GUID IID,*LPIID;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef GUID CLSID,*LPCLSID;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsynctypedef GUID FMTID,*LPFMTID;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define IID_NULL GUID_NULL
5cece736b63cc917f3781c8c7e46fd3ea98c4e20vboxsync#define CLSID_NULL GUID_NULL
5cece736b63cc917f3781c8c7e46fd3ea98c4e20vboxsync#define FMTID_NULL GUID_NULL
5cece736b63cc917f3781c8c7e46fd3ea98c4e20vboxsync
5cece736b63cc917f3781c8c7e46fd3ea98c4e20vboxsync#ifdef __midl_proxy
65697a26b524640b83828b715160c798c43a0424vboxsync#define __MIDL_CONST
65697a26b524640b83828b715160c798c43a0424vboxsync#else
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define __MIDL_CONST const
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif /* ndef __IID_DEFINED__ */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#if defined(__cplusplus) && !defined(CINTERFACE)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFGUID const GUID &
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFCLSID const CLSID &
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFIID const IID &
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFFMTID const FMTID &
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#else /* !defined(__cplusplus) && !defined(CINTERFACE) */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFGUID const GUID* __MIDL_CONST
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFCLSID const CLSID* __MIDL_CONST
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFIID const IID* __MIDL_CONST
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define REFFMTID const FMTID* __MIDL_CONST
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#if defined(__cplusplus) && !defined(CINTERFACE)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
98744bb362e14debc292b1cf9e11f0d32b37338avboxsync#else /* defined(__cplusplus) && !defined(CINTERFACE) */
98744bb362e14debc292b1cf9e11f0d32b37338avboxsync#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif /* defined(__cplusplus) && !defined(CINTERFACE) */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#if defined(__cplusplus) && !defined(CINTERFACE)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#include <string.h>
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsyncinline bool operator==(const GUID& guidOne, const GUID& guidOther)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync{
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync return !memcmp(&guidOne,&guidOther,sizeof(GUID));
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync}
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsyncinline bool operator!=(const GUID& guidOne, const GUID& guidOther)
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync{
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync return !(guidOne == guidOther);
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync}
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync#endif
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
65697a26b524640b83828b715160c798c43a0424vboxsyncextern const IID GUID_NULL;
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync
65697a26b524640b83828b715160c798c43a0424vboxsync#endif /* _GUIDDEF_H_ */
a4ba1fc5788b1fb4c078587d5f55936e1b83098dvboxsync