/* * ITypeLib test IDL - we dump it and compare results in typelib.c * * Copyright 2007 Google (Mikolaj Zalewski) * Copyright 2006,2015 Dmitry Timoshkov * * 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 */ #pragma makedep ident #pragma makedep typelib import "oaidl.idl"; /* needed by widl */ midl_pragma warning ( disable : 2368 ) [uuid(8b05fe77-4a6c-4133-b9cd-8f81747af784)] library Test { importlib("stdole2.tlb"); typedef [uuid(b14b6bb5-904e-4ff9-b247-bd361f7a0001)] struct g { int g1; } g; [uuid(b14b6bb5-904e-4ff9-b247-bd361f7a0002)] interface test_iface : IUnknown { HRESULT test([in] g *ptr); } interface child_iface; interface parent_iface; [uuid(b14b6bb5-904e-4ff9-b247-bd361f7aa001)] interface parent_iface : IUnknown { HRESULT test1([out,retval] child_iface **iface); } [uuid(b14b6bb5-904e-4ff9-b247-bd361f7aa002)] interface child_iface: parent_iface { HRESULT test2(void); } [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753901),restricted] struct _n { int n1; }; [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753902),hidden] typedef struct _n n; [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753903),version(1.2),helpcontext(3)] typedef struct _n nn; [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753904),restricted] struct _m { int m1; }; [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753905),hidden,version(1.2)] typedef struct _m m; [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753906),helpcontext(3)] typedef struct _m mm; [dual,uuid(b14b6bb5-904e-4ff9-b247-bd361f7aaedd)] interface IDualIface : IDispatch { HRESULT test(); } [uuid(ec5dfcd6-eeb0-4cd6-b51e-8030e1dac009)] interface ISimpleIface : IDispatch { HRESULT test(); } [uuid(4029f190-ca4a-4611-aeb9-673983cb96dd)] struct test_struct { HRESULT hr; VARIANT_BOOL b; IDispatch *disp; BSTR bstr; }; /* identical to 'test_struct', only guid is different */ [uuid(4029f190-ca4a-4611-aeb9-673983cb96de)] struct test_struct2 { HRESULT hr; VARIANT_BOOL b; IDispatch *disp; BSTR bstr; }; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396a),restricted] int t_INT; typedef [public] enum _a { a1, a2 } a; typedef [public] enum aa { aa1, aa2 } aa; typedef enum _b { b1, b2 } b; typedef enum bb { bb1, bb2 } bb; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396b)] enum _c { c1, c2 } c; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396c)] enum cc { cc1, cc2 } cc; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396d),restricted,hidden] enum _d { d1, d2 } d; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396e),restricted,hidden] enum dd { dd1, dd2 } dd; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753970),restricted,hidden] struct _e { int e1; } e; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753971),restricted,hidden] struct ee { int ee1; } ee; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753972),restricted,hidden] union _f { int f1; BSTR *f2; } f; typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753973),restricted,hidden] union ff { int ff1; BSTR *ff2; } ff; [uuid(ec5dfcd6-eeb0-4cd6-b51e-8030e1dac00a)] interface ITestIface : IDispatch { HRESULT test1(a value); HRESULT test2(b value); HRESULT test3(c value); HRESULT test4(d value); HRESULT test5(e value); HRESULT test6(f value); } [uuid(2d4430d5-99ea-4645-85f0-c5814b72804b)] dispinterface ITestDispatch { properties: [id(10)] int property_int; [id(11)] HRESULT property_HRESULT; methods: [id(1)] void test_void(); [id(2)] void test_void_retval([out,retval] double* ret); [id(3)] HRESULT test_HRESULT(); [id(4)] HRESULT test_HRESULT_retval([out,retval] double* ret); [id(5)] int test_int(); [id(6)] int test_int_retval([out,retval] double* ret); [id(7)] double parse_lcid([in] BSTR x, [lcid] long lcid); } [uuid(79ca07f9-ac22-44ac-9aaf-811f45412293), dual] interface ITestDispDual : IDispatch { [id(1)] void test_void(); [id(2)] void test_void_retval([out,retval] double* ret); [id(3)] HRESULT test_HRESULT(); [id(4)] HRESULT test_HRESULT_retval([out,retval] double* ret); [id(5)] int test_int(); [id(6)] int test_int_retval([out,retval] double* ret); [id(7)] HRESULT parse_lcid([in] BSTR x, [lcid] long lcid, [out,retval] double *ret); } [uuid(cdb105e3-24fb-4ae6-b826-801b7b2a0a07)] dispinterface ITestDispInherit { interface ITestDispDual; } }