OSDN Git Service

* NEWS: Add and adjust release notes for 4.0.
[mingw/mingw-org-wsl.git] / include / comcat.h
1 /**
2  * @file comcat.h
3  * Copyright 2012, 2013 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 #include <_mingw.h>
28
29 #ifndef COM_NO_WINDOWS_H
30 #include <windows.h>
31 #include <ole2.h>
32 #endif
33
34 #ifndef _RC_INVOKED
35
36 #ifdef __cplusplus
37 extern "C"{
38 #endif
39
40 EXTERN_C const IID IID_IEnumGUID;
41 typedef _COM_interface IEnumGUID *LPENUMGUID;
42
43 #define INTERFACE IEnumGUID
44 DECLARE_INTERFACE_(IEnumGUID,IUnknown)
45 {
46         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
47         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
48         STDMETHOD_(ULONG,Release)(THIS) PURE;
49         STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE;
50         STDMETHOD(Skip)(THIS_ ULONG) PURE;
51         STDMETHOD(Reset)(THIS) PURE;
52         STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE;
53 };
54 #undef INTERFACE
55 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
56     && defined (COBJMACROS)
57 #define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
58 #define IEnumGUID_AddRef(p)             (p)->lpVtbl->AddRef(p)
59 #define IEnumGUID_Release(p)            (p)->lpVtbl->Release(p)
60 #define IEnumGUID_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
61 #define IEnumGUID_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
62 #define IEnumGUID_Reset(p)              (p)->lpVtbl->Reset(p)
63 #define IEnumGUID_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
64 #endif
65
66 typedef GUID CATID;
67 typedef REFGUID REFCATID;
68 #define CATID_NULL GUID_NULL
69 #define IsEqualCATID(a, b) IsEqualGUID(a, b)
70
71 typedef struct tagCATEGORYINFO {
72     CATID   catid;              /* category identifier for component */
73     LCID    lcid;               /* locale identifier */
74     OLECHAR szDescription[128]; /* description of the category */
75 } CATEGORYINFO, *LPCATEGORYINFO;
76
77 EXTERN_C const CATID CATID_Insertable;
78 EXTERN_C const CATID CATID_Control;
79 EXTERN_C const CATID CATID_Programmable;
80 EXTERN_C const CATID CATID_IsShortcut;
81 EXTERN_C const CATID CATID_NeverShowExt;
82 EXTERN_C const CATID CATID_DocObject;
83 EXTERN_C const CATID CATID_Printable;
84 EXTERN_C const CATID CATID_RequiresDataPathHost;
85 EXTERN_C const CATID CATID_PersistsToMoniker;
86 EXTERN_C const CATID CATID_PersistsToStorage;
87 EXTERN_C const CATID CATID_PersistsToStreamInit;
88 EXTERN_C const CATID CATID_PersistsToStream;
89 EXTERN_C const CATID CATID_PersistsToMemory;
90 EXTERN_C const CATID CATID_PersistsToFile;
91 EXTERN_C const CATID CATID_PersistsToPropertyBag;
92 EXTERN_C const CATID CATID_InternetAware;
93 EXTERN_C const CATID CATID_DesignTimeUIActivatableControl;
94
95 #define IEnumCATID IEnumGUID
96 #define LPENUMCATID LPENUMGUID
97 #define IID_IEnumCATID IID_IEnumGUID
98
99 #define IEnumCLSID IEnumGUID
100 #define LPENUMCLSID LPENUMGUID
101 #define IID_IEnumCLSID IID_IEnumGUID
102
103 EXTERN_C const IID IID_ICatInformation;
104 typedef _COM_interface ICatInformation *LPCATINFORMATION;
105
106 EXTERN_C const IID IID_ICatRegister;
107 typedef _COM_interface ICatRegister *LPCATREGISTER;
108
109 EXTERN_C const IID IID_IEnumCATEGORYINFO;
110 typedef _COM_interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO;
111
112 EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr;
113
114 #define INTERFACE ICatInformation
115 DECLARE_INTERFACE_(ICatInformation,IUnknown)
116 {
117         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
118         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
119         STDMETHOD_(ULONG,Release)(THIS) PURE;
120         STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE;
121         STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE;
122         STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE;
123         STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE;
124         STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
125         STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
126 };
127 #undef INTERFACE
128 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
129     && defined (COBJMACROS)
130 #define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
131 #define ICatInformation_AddRef(p)             (p)->lpVtbl->AddRef(p)
132 #define ICatInformation_Release(p)            (p)->lpVtbl->Release(p)
133 #define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
134 #define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
135 #define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
136 #define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
137 #define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
138 #define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
139 #endif
140
141 #define INTERFACE ICatRegister
142 DECLARE_INTERFACE_(ICatRegister,IUnknown)
143 {
144         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
145         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
146         STDMETHOD_(ULONG,Release)(THIS) PURE;
147         STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE;
148         STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE;
149         STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
150         STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
151         STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
152         STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
153 };
154 #undef INTERFACE
155 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
156     && defined (COBJMACROS)
157 #define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
158 #define ICatRegister_AddRef(p)             (p)->lpVtbl->AddRef(p)
159 #define ICatRegister_Release(p)            (p)->lpVtbl->Release(p)
160 #define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
161 #define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
162 #define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
163 #define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
164 #define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
165 #define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
166 #endif
167
168 EXTERN_C const IID IID_IEnumCATEGORYINFO;
169 #define INTERFACE IEnumCATEGORYINFO
170 DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown)
171 {
172         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
173         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
174         STDMETHOD_(ULONG,Release)(THIS) PURE;
175         STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE;
176         STDMETHOD(Skip)(THIS_ ULONG) PURE;
177         STDMETHOD(Reset)(THIS) PURE;
178         STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE;
179 };
180 #undef INTERFACE
181 #if (!defined (__cplusplus) || defined (CINTERFACE)) \
182     && defined (COBJMACROS)
183 #define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
184 #define IEnumCATEGORYINFO_AddRef(p)             (p)->lpVtbl->AddRef(p)
185 #define IEnumCATEGORYINFO_Release(p)            (p)->lpVtbl->Release(p)
186 #define IEnumCATEGORYINFO_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
187 #define IEnumCATEGORYINFO_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
188 #define IEnumCATEGORYINFO_Reset(p)              (p)->lpVtbl->Reset(p)
189 #define IEnumCATEGORYINFO_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
190 #endif
191
192 #ifdef __cplusplus
193 }
194 #endif
195
196 #endif /* _RC_INVOKED */
197 #endif