OSDN Git Service

Redo the filters based on assumptions discussed in mingw-dvlpr list.
[mingw/mingw-org-wsl.git] / include / comcat.h
1 /**
2  * @file comcat.h
3  * @copy 2012 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _COMCAT_H
25 #define _COMCAT_H
26 #pragma GCC system_header
27
28 #ifndef COM_NO_WINDOWS_H
29 #include <windows.h>
30 #include <ole2.h>
31 #endif
32
33 #ifndef _RC_INVOKED
34
35 #ifdef __cplusplus
36 extern "C"{
37 #endif
38
39 EXTERN_C const IID IID_IEnumGUID;
40 typedef _COM_interface IEnumGUID *LPENUMGUID;
41
42 #define INTERFACE IEnumGUID
43 DECLARE_INTERFACE_(IEnumGUID,IUnknown)
44 {
45         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
46         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
47         STDMETHOD_(ULONG,Release)(THIS) PURE;
48         STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE;
49         STDMETHOD(Skip)(THIS_ ULONG) PURE;
50         STDMETHOD(Reset)(THIS) PURE;
51         STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE;
52 };
53 #undef INTERFACE
54 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
55     && defined (COBJMACROS)
56 #define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
57 #define IEnumGUID_AddRef(p)             (p)->lpVtbl->AddRef(p)
58 #define IEnumGUID_Release(p)            (p)->lpVtbl->Release(p)
59 #define IEnumGUID_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
60 #define IEnumGUID_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
61 #define IEnumGUID_Reset(p)              (p)->lpVtbl->Reset(p)
62 #define IEnumGUID_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
63 #endif
64
65 typedef GUID CATID;
66 typedef REFGUID REFCATID;
67 #define CATID_NULL GUID_NULL
68 #define IsEqualCATID(a, b) IsEqualGUID(a, b)
69
70 typedef struct tagCATEGORYINFO {
71     CATID   catid;              /* category identifier for component */
72     LCID    lcid;               /* locale identifier */
73     OLECHAR szDescription[128]; /* description of the category */
74 } CATEGORYINFO, *LPCATEGORYINFO;
75
76 EXTERN_C const CATID CATID_Insertable;
77 EXTERN_C const CATID CATID_Control;
78 EXTERN_C const CATID CATID_Programmable;
79 EXTERN_C const CATID CATID_IsShortcut;
80 EXTERN_C const CATID CATID_NeverShowExt;
81 EXTERN_C const CATID CATID_DocObject;
82 EXTERN_C const CATID CATID_Printable;
83 EXTERN_C const CATID CATID_RequiresDataPathHost;
84 EXTERN_C const CATID CATID_PersistsToMoniker;
85 EXTERN_C const CATID CATID_PersistsToStorage;
86 EXTERN_C const CATID CATID_PersistsToStreamInit;
87 EXTERN_C const CATID CATID_PersistsToStream;
88 EXTERN_C const CATID CATID_PersistsToMemory;
89 EXTERN_C const CATID CATID_PersistsToFile;
90 EXTERN_C const CATID CATID_PersistsToPropertyBag;
91 EXTERN_C const CATID CATID_InternetAware;
92 EXTERN_C const CATID CATID_DesignTimeUIActivatableControl;
93
94 #define IEnumCATID IEnumGUID
95 #define LPENUMCATID LPENUMGUID
96 #define IID_IEnumCATID IID_IEnumGUID
97
98 #define IEnumCLSID IEnumGUID
99 #define LPENUMCLSID LPENUMGUID
100 #define IID_IEnumCLSID IID_IEnumGUID
101
102 EXTERN_C const IID IID_ICatInformation;
103 typedef _COM_interface ICatInformation *LPCATINFORMATION;
104
105 EXTERN_C const IID IID_ICatRegister;
106 typedef _COM_interface ICatRegister *LPCATREGISTER;
107
108 EXTERN_C const IID IID_IEnumCATEGORYINFO;
109 typedef _COM_interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO;
110
111 EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr;
112
113 #define INTERFACE ICatInformation
114 DECLARE_INTERFACE_(ICatInformation,IUnknown)
115 {
116         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
117         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
118         STDMETHOD_(ULONG,Release)(THIS) PURE;
119         STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE;
120         STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE;
121         STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE;
122         STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE;
123         STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
124         STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
125 };
126 #undef INTERFACE
127 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
128     && defined (COBJMACROS)
129 #define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
130 #define ICatInformation_AddRef(p)             (p)->lpVtbl->AddRef(p)
131 #define ICatInformation_Release(p)            (p)->lpVtbl->Release(p)
132 #define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
133 #define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
134 #define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
135 #define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
136 #define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
137 #define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
138 #endif
139
140 #define INTERFACE ICatRegister
141 DECLARE_INTERFACE_(ICatRegister,IUnknown)
142 {
143         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
144         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
145         STDMETHOD_(ULONG,Release)(THIS) PURE;
146         STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE;
147         STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE;
148         STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
149         STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
150         STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
151         STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
152 };
153 #undef INTERFACE
154 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
155     && defined (COBJMACROS)
156 #define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
157 #define ICatRegister_AddRef(p)             (p)->lpVtbl->AddRef(p)
158 #define ICatRegister_Release(p)            (p)->lpVtbl->Release(p)
159 #define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
160 #define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
161 #define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
162 #define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
163 #define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
164 #define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
165 #endif
166
167 EXTERN_C const IID IID_IEnumCATEGORYINFO;
168 #define INTERFACE IEnumCATEGORYINFO
169 DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown)
170 {
171         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
172         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
173         STDMETHOD_(ULONG,Release)(THIS) PURE;
174         STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE;
175         STDMETHOD(Skip)(THIS_ ULONG) PURE;
176         STDMETHOD(Reset)(THIS) PURE;
177         STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE;
178 };
179 #undef INTERFACE
180 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
181     && defined (COBJMACROS)
182 #define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
183 #define IEnumCATEGORYINFO_AddRef(p)             (p)->lpVtbl->AddRef(p)
184 #define IEnumCATEGORYINFO_Release(p)            (p)->lpVtbl->Release(p)
185 #define IEnumCATEGORYINFO_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
186 #define IEnumCATEGORYINFO_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
187 #define IEnumCATEGORYINFO_Reset(p)              (p)->lpVtbl->Reset(p)
188 #define IEnumCATEGORYINFO_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
189 #endif
190
191 #ifdef __cplusplus
192 }
193 #endif
194
195 #endif /* _RC_INVOKED */
196 #endif