/* * 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; coclass ApplicationObject2; [ 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); [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_VARIANT)] void Variant([in] VARIANT var); [id(DISPID_TM_ERROR)] HRESULT Error(); } [ odl, uuid(a028db05-30f0-4b93-b17a-41c72f831d84), dual, 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(); } [ 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; }; };