/* * Copyright (C) 2005 Robert Shearman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ #include "tmarshal_dispids.h" import "ocidl.idl"; [ uuid(d96d8a3e-78b6-4c8d-8f27-059db959be8a), version(1.0), helpstring("Test Typelib") ] library TestTypelib { importlib("stdole2.tlb"); typedef enum tagSTATE { STATE_UNWIDGETIFIED = 1, STATE_WIDGETIFIED } STATE; typedef struct tagMYSTRUCT { INT field1; ULONGLONG field2; UINT uarr[8]; } MYSTRUCT; coclass ApplicationObject2; [ odl, uuid(12345678-1234-4321-1234-121212121212) ] interface ISomethingFromDispatch : IDispatch { HRESULT anotherfn(void); } [ odl, oleautomation, dual, uuid(3f7e06fe-0bce-46f0-8b7d-3a68393c7967) ] interface ItestDual : IDispatch { HRESULT test(); } [ odl, uuid(3f7e06fe-0bce-46f0-8b7d-3a68393c7968) ] interface ITestSecondIface : IUnknown { HRESULT test(); } [ odl, oleautomation, dual, uuid(3f7e06fe-0bce-46f0-8b7d-3a68393c7969) ] interface ITestSecondDisp : IDispatch { HRESULT test(); } [ odl, uuid(a1f8cae3-c947-4c5f-b57d-c87b9b5f3586), oleautomation, dual ] interface IWidget : IDispatch { [propput, id(DISPID_TM_NAME)] HRESULT Name([in] BSTR name); [propget, id(DISPID_TM_NAME)] HRESULT Name([out, retval] BSTR *name); [id(DISPID_TM_DOSOMETHING)] HRESULT DoSomething([in] double number, [out] BSTR *str1, [in, defaultvalue("")] BSTR str2, [in, optional] VARIANT *opt); [propget, id(DISPID_TM_STATE)] HRESULT State([out, retval] STATE *state); [propput, id(DISPID_TM_STATE)] HRESULT State([in] STATE state); [id(DISPID_TM_MAP)] HRESULT Map([in] BSTR bstrId, [out, retval] BSTR *sValue); [id(DISPID_TM_SETOLECOLOR)] HRESULT SetOleColor([in] OLE_COLOR val); [id(DISPID_TM_GETOLECOLOR)] HRESULT GetOleColor([out, retval] OLE_COLOR *pVal); [propget, id(DISPID_TM_CLONE)] HRESULT Clone([out, retval] IWidget **ppVal); [propget, id(DISPID_TM_CLONEDISPATCH)] HRESULT CloneDispatch([out, retval] IDispatch **ppVal); [propget, id(DISPID_TM_CLONECOCLASS)] HRESULT CloneCoclass([out, retval] ApplicationObject2 **ppVal); [propget, id(DISPID_VALUE)] HRESULT Value([in] VARIANT *value, [out, retval] VARIANT *retval); [id(DISPID_TM_ARRAY)] HRESULT Array([in] SAFEARRAY(BSTR) values); [id(DISPID_TM_VARARRAYPTR)] HRESULT VariantArrayPtr([in] SAFEARRAY(VARIANT) *values); [id(DISPID_TM_VARCARRAY)] HRESULT VariantCArray([in] ULONG count, [in, out] VARIANT values[2]); [id(DISPID_TM_VARIANT)] HRESULT Variant([in] VARIANT var); [vararg, id(DISPID_TM_VARARG)] HRESULT VarArg([in] int numexpect, [in] SAFEARRAY(VARIANT) values); [id(DISPID_TM_STRUCTARGS)] HRESULT StructArgs([in] MYSTRUCT byval, [in] MYSTRUCT *byptr, [in] MYSTRUCT arr[5]); [id(DISPID_TM_ERROR)] HRESULT Error(); [propget, id(DISPID_TM_CLONEINTERFACE)] HRESULT CloneInterface([out, retval] ISomethingFromDispatch **ppVal); [id(DISPID_TM_PROP_WITH_LCID), propput] HRESULT prop_with_lcid([in,lcid] long lcid, [in] INT i); [id(DISPID_TM_PROP_WITH_LCID), propget] HRESULT prop_with_lcid([in,lcid] long lcid, [out,retval] INT *i); [id(DISPID_TM_PROP_INT), propget] HRESULT prop_int([out,retval] INT *i); [id(DISPID_TM_PROP_UINT), propget] HRESULT prop_uint([out,retval] UINT *i); [id(DISPID_TM_BYREF_UINT)] HRESULT ByRefUInt([in, out] UINT *i); [id(DISPID_TM_PROP_OPT_ARG), propput] HRESULT prop_opt_arg([in,optional] INT opt, [in] INT i); [id(DISPID_TM_PROP_REQ_ARG), propput] HRESULT prop_req_arg([in] INT req, [in] INT i); [id(DISPID_TM_RESTRICTED), restricted] HRESULT _restrict([out, retval] INT *i); [id(DISPID_TM_NEG_RESTRICTED), restricted] HRESULT neg_restrict([out, retval] INT *i); } [ odl, uuid(a1f8cae3-c947-3c5f-a57c-c88b9b6f3586), oleautomation, dual ] interface IStaticWidget : IDispatch { [id(DISPID_TM_TESTDUAL)] HRESULT TestDual([in] ItestDual *p); [id(DISPID_TM_TESTSECONDIFACE)] HRESULT TestSecondIface([in] ITestSecondIface *p); } [ odl, uuid(a028db05-30f0-4b93-b17a-41c72f831d84), #if 0 /* FIXME: commented out as causes widl to generate incorrect typelib */ dual, #endif oleautomation ] interface IKindaEnumWidget : IUnknown { HRESULT Next( [out] IWidget **widget); HRESULT Count( [out] unsigned long *count); HRESULT Reset(); HRESULT Clone( [out] IKindaEnumWidget **ppenum); } [ odl, uuid(a028db06-30f0-4b93-b17a-41c72f831d84), ] interface INonOleAutomation : IUnknown { [id(DISPID_NOA_BSTRRET)] BSTR BstrRet(); [id(DISPID_NOA_ERROR)] HRESULT Error(); } [ dllname("comm.drv"), uuid(d377f60b-8639-4261-8ee7-75c8340d2cc9), ] module BadModule { [ entry("Foo"), ] HRESULT BadModuleFoo(); }; [ dllname("oleaut32.dll"), uuid(d377f60c-8639-4261-8ee7-75c8340d2cc9), ] module BadEntry { [ entry("Foo"), ] HRESULT BadEntryFoo(); }; [ uuid(bb171948-10ec-407a-9a57-2f85f797ff1a), appobject, ] coclass ApplicationObject2 { interface IWidget; [source] interface IWidget; }; [ odl, uuid(375f8a9d-33d0-44f3-b972-61f8407899e0) ] interface ItestIF1 : IUnknown { HRESULT fn1([in] int x); HRESULT fn2([out,retval] int *x); } [ odl, uuid(094056a3-666f-4956-be12-1859668310b8) ] interface ItestIF2 : ItestIF1 { HRESULT fn3([in] int y); } [ odl, uuid(33baba09-2e68-43ab-81fe-d84b403df2e5) ] dispinterface ItestIF3 { interface ItestIF2; } [ odl, uuid(a01005c7-7491-42eb-94f3-668e37ce60a6) ] dispinterface ItestIF4 { properties: methods: [id(0x1c)] HRESULT fn([in] int z); } [ odl, uuid(4ab61e25-c09f-4239-8f7f-7a018ea0199f), dual ] interface ItestIF5 : ItestIF2 { [id(0x1234)] HRESULT fn4([in] int a); [id(0x1235)] HRESULT fn5([in] int a); } [ odl, uuid(ec236d8e-2cc7-44f2-b394-36c86ff3da74) ] interface ItestIF6 : IDispatch { [id(0x1234)] HRESULT fn4([in] int a); [id(0x1235)] HRESULT fn5([in] int a); } [ odl, uuid(f711b105-554d-4751-818c-46fcc5d7c0d5), dual ] interface ItestIF7 : ItestIF6 { [id(0x1236)] HRESULT fn6([in] GUID a); } [ odl, uuid(bdfa260b-ef40-43d3-b071-cddec919f132) ] interface ItestIF8 { HRESULT fn1([in] int x); HRESULT fn2([out,retval] int *x); } [ odl, uuid(51033a23-dc37-4f19-aa34-4d8a670458a0) ] interface ItestIF9 : ItestIF8 { HRESULT fn3([in] int y); } [ odl, uuid(2e8f14fe-0bce-42f0-8b7d-3af8393c7967) ] dispinterface ItestIF10 { interface ItestIF9; } [ odl, uuid(7d9e9371-482e-4944-9b19-511fc705236f) ] dispinterface ItestIF11 { interface ItestIF7; } };