Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright (C) 2009 Maarten Lankhorst
      3  *
      4  * This library is free software; you can redistribute it and/or
      5  * modify it under the terms of the GNU Lesser General Public
      6  * License as published by the Free Software Foundation; either
      7  * version 2.1 of the License, or (at your option) any later version.
      8  *
      9  * This library is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12  * Lesser General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU Lesser General Public
     15  * License along with this library; if not, write to the Free Software
     16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     17  */
     18 
     19 #ifndef PID_FIRST_USABLE
     20 #define PID_FIRST_USABLE 2
     21 #endif
     22 
     23 #ifndef REFPROPERTYKEY
     24 #ifdef __cplusplus
     25 #define REFPROPERTYKEY const PROPERTYKEY &
     26 #else /*!__cplusplus*/
     27 #define REFPROPERTYKEY const PROPERTYKEY * __MIDL_CONST
     28 #endif
     29 #endif
     30 
     31 #undef DEFINE_PROPERTYKEY
     32 
     33 #ifdef INITGUID
     34 #ifdef __cplusplus
     35 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \
     36         EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY name  = \
     37         { { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
     38 #else
     39 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \
     40         const PROPERTYKEY DECLSPEC_SELECTANY name  = \
     41         { { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
     42 #endif
     43 #else
     44 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \
     45     EXTERN_C const PROPERTYKEY name
     46 #endif
     47 
     48 #ifndef IsEqualPropertyKey
     49 #ifdef __cplusplus
     50 #define IsEqualPropertyKey(a,b) (((a).pid == (b).pid) && IsEqualIID((a).fmtid,(b).fmtid))
     51 #else
     52 #define IsEqualPropertyKey(a,b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid,&(b).fmtid))
     53 #endif
     54 #endif
     55 
     56 #ifndef _PROPERTYKEY_EQUALITY_OPERATORS_
     57 #define _PROPERTYKEY_EQUALITY_OPERATORS_
     58 #ifdef __cplusplus
     59 extern "C++"
     60 {
     61 
     62 inline bool operator==(REFPROPERTYKEY guidOne, REFPROPERTYKEY guidOther)
     63 {
     64     return IsEqualPropertyKey(guidOne, guidOther);
     65 }
     66 inline bool operator!=(REFPROPERTYKEY guidOne, REFPROPERTYKEY guidOther)
     67 {
     68     return !(guidOne == guidOther);
     69 }
     70 
     71 }
     72 #endif
     73 #endif
     74