Added varargs support for 16-bit entry points.
[wine] / include / wine / obj_comcat.h
1 /*
2  * Defines the COM interfaces and APIs related to Component Category Manager
3  *
4  * Depends on 'obj_enumguid.h'.
5  *
6  * Copyright (C) 2002 John K. Hohm
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #ifndef __WINE_WINE_OBJ_COMCAT_H
24 #define __WINE_WINE_OBJ_COMCAT_H
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
29
30 /*****************************************************************************
31  * Types
32  */
33 typedef GUID CATID;
34 typedef REFGUID REFCATID;
35 #define CATID_NULL GUID_NULL
36 #define IsEqualCATID(a, b) IsEqualGUID(a, b)
37
38 typedef struct tagCATEGORYINFO {
39     CATID   catid;              /* category identifier for component */
40     LCID    lcid;               /* locale identifier */
41     OLECHAR szDescription[128]; /* description of the category */
42 } CATEGORYINFO, *LPCATEGORYINFO;
43
44 /*****************************************************************************
45  * Category IDs
46  */
47 DEFINE_GUID(CATID_Insertable,                     0x40FC6ED3, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
48 DEFINE_GUID(CATID_Control,                        0x40FC6ED4, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
49 DEFINE_GUID(CATID_Programmable,                   0x40FC6ED5, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
50 DEFINE_GUID(CATID_IsShortcut,                     0x40FC6ED6, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
51 DEFINE_GUID(CATID_NeverShowExt,                   0x40FC6ED7, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
52 DEFINE_GUID(CATID_DocObject,                      0x40FC6ED8, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
53 DEFINE_GUID(CATID_Printable,                      0x40FC6ED9, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
54 DEFINE_GUID(CATID_RequiresDataPathHost,           0x0DE86A50, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
55 DEFINE_GUID(CATID_PersistsToMoniker,              0x0DE86A51, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
56 DEFINE_GUID(CATID_PersistsToStorage,              0x0DE86A52, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
57 DEFINE_GUID(CATID_PersistsToStreamInit,           0x0DE86A53, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
58 DEFINE_GUID(CATID_PersistsToStream,               0x0DE86A54, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
59 DEFINE_GUID(CATID_PersistsToMemory,               0x0DE86A55, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
60 DEFINE_GUID(CATID_PersistsToFile,                 0x0DE86A56, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
61 DEFINE_GUID(CATID_PersistsToPropertyBag,          0x0DE86A57, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
62 DEFINE_GUID(CATID_InternetAware,                  0x0DE86A58, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
63 DEFINE_GUID(CATID_DesignTimeUIActivatableControl, 0xF2BB56D1, 0xDB07, 0x11D1, 0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39);
64
65 /*****************************************************************************
66  * Aliases for EnumGUID
67  */
68 #define IEnumCATID IEnumGUID
69 #define LPENUMCATID LPENUMGUID
70 #define IID_IEnumCATID IID_IEnumGUID
71
72 #define IEnumCLSID IEnumGUID
73 #define LPENUMCLSID LPENUMGUID
74 #define IID_IEnumCLSID IID_IEnumGUID
75
76 /*****************************************************************************
77  * Predeclare the interfaces
78  */
79 DEFINE_OLEGUID(IID_ICatInformation, 0x0002E013L, 0, 0);
80 typedef struct ICatInformation ICatInformation, *LPCATINFORMATION;
81
82 DEFINE_OLEGUID(IID_ICatRegister, 0x0002E012L, 0, 0);
83 typedef struct ICatRegister ICatRegister, *LPCATREGISTER;
84
85 DEFINE_OLEGUID(IID_IEnumCATEGORYINFO, 0x0002E011L, 0, 0);
86 typedef struct IEnumCATEGORYINFO IEnumCATEGORYINFO, *LPENUMCATEGORYINFO;
87
88 /* The Component Category Manager */
89 DEFINE_OLEGUID(CLSID_StdComponentCategoriesMgr, 0x0002E005L, 0, 0);
90
91 /*****************************************************************************
92  * ICatInformation
93  */
94 #define INTERFACE ICatInformation
95 #define ICatInformation_METHODS \
96     IUnknown_METHODS \
97     STDMETHOD(EnumCategories)(THIS_ LCID  lcid, IEnumCATEGORYINFO ** ppenumCatInfo) PURE; \
98     STDMETHOD(GetCategoryDesc)(THIS_ REFCATID  rcatid, LCID  lcid, PWCHAR * ppszDesc) PURE; \
99     STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG  cImplemented, CATID * rgcatidImpl, ULONG  cRequired, CATID * rgcatidReq, IEnumCLSID ** ppenumCLSID) PURE; \
100     STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID  rclsid, ULONG  cImplemented, CATID * rgcatidImpl, ULONG  cRequired, CATID * rgcatidReq) PURE; \
101     STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID  rclsid, IEnumCATID ** ppenumCATID) PURE; \
102     STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID  rclsid, IEnumCATID ** ppenumCATID) PURE;
103 ICOM_DEFINE(ICatInformation,IUnknown)
104 #undef INTERFACE
105
106 #ifdef COBJMACROS
107 /*** IUnknown methods ***/
108 #define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
109 #define ICatInformation_AddRef(p)             (p)->lpVtbl->AddRef(p)
110 #define ICatInformation_Release(p)            (p)->lpVtbl->Release(p)
111 /*** ICatInformation methods ***/
112 #define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
113 #define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
114 #define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
115 #define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
116 #define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
117 #define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
118 #endif
119
120 /*****************************************************************************
121  * ICatRegister
122  */
123 #define INTERFACE ICatRegister
124 #define ICatRegister_METHODS \
125     IUnknown_METHODS \
126     STDMETHOD(RegisterCategories)(THIS_ ULONG  cCategories, CATEGORYINFO * rgCategoryInfo) PURE; \
127     STDMETHOD(UnRegisterCategories)(THIS_ ULONG  cCategories, CATID * rgcatid) PURE; \
128     STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID  rclsid, ULONG  cCategories, CATID * rgcatid) PURE; \
129     STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID  rclsid, ULONG  cCategories, CATID * rgcatid) PURE; \
130     STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID  rclsid, ULONG  cCategories, CATID * rgcatid) PURE; \
131     STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID  rclsid, ULONG  cCategories, CATID * rgcatid) PURE;
132 ICOM_DEFINE(ICatRegister,IUnknown)
133 #undef INTERFACE
134
135 #ifdef COBJMACROS
136 /*** IUnknown methods ***/
137 #define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
138 #define ICatRegister_AddRef(p)             (p)->lpVtbl->AddRef(p)
139 #define ICatRegister_Release(p)            (p)->lpVtbl->Release(p)
140 /*** ICatRegister methods ***/
141 #define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
142 #define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
143 #define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
144 #define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
145 #define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
146 #define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
147 #endif
148
149 /*****************************************************************************
150  * IEnumCATEGORYINFO
151  */
152 #define INTERFACE IEnumCATEGORYINFO
153 #define IEnumCATEGORYINFO_METHODS \
154     IUnknown_METHODS \
155     STDMETHOD(Next)(THIS_ ULONG  celt, CATEGORYINFO * rgelt, ULONG * pceltFetched) PURE; \
156     STDMETHOD(Skip)(THIS_ ULONG  celt) PURE; \
157     STDMETHOD(Reset)(THIS) PURE; \
158     STDMETHOD(Clone)(THIS_ IEnumCATEGORYINFO ** ppenum) PURE;
159 ICOM_DEFINE(IEnumCATEGORYINFO,IUnknown)
160 #undef INTERFACE
161
162 #ifdef COBJMACROS
163 /*** IUnknown methods ***/
164 #define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
165 #define IEnumCATEGORYINFO_AddRef(p)             (p)->lpVtbl->AddRef(p)
166 #define IEnumCATEGORYINFO_Release(p)            (p)->lpVtbl->Release(p)
167 /*** IEnumCATEGORYINFO methods ***/
168 #define IEnumCATEGORYINFO_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
169 #define IEnumCATEGORYINFO_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
170 #define IEnumCATEGORYINFO_Reset(p)              (p)->lpVtbl->Reset(p)
171 #define IEnumCATEGORYINFO_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
172 #endif
173
174 #ifdef __cplusplus
175 } /* extern "C" */
176 #endif /* defined(__cplusplus) */
177
178 #endif /* __WINE_WINE_OBJ_COMCAT_H */