wine-wine/dlls/oleaut32/tests/tmarshal.idl

378 lines
8.6 KiB
Plaintext

/*
* 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
*
*/
#pragma makedep ident
#pragma makedep typelib
#include "tmarshal_dispids.h"
import "ocidl.idl";
[
uuid(d96d8a3e-78b6-4c8d-8f27-059db959be8a),
version(2.5),
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;
}
};