• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7import "wtypes.idl";
8import "hstring.idl";
9import "unknwn.idl";
10
11typedef enum TrustLevel {
12  BaseTrust     = 0,
13  PartialTrust  = 1,
14  FullTrust     = 2
15} TrustLevel;
16
17[
18    object,
19    uuid(af86e2e0-b12d-4c6a-9c5a-d7aa65101e90),
20    pointer_default(unique)
21]
22interface IInspectable : IUnknown
23{
24    HRESULT GetIids(
25            [out] ULONG *iidCount,
26            [out, size_is(*iidCount)]  IID **iids);
27
28    HRESULT GetRuntimeClassName(
29            [out] HSTRING *className);
30
31    HRESULT GetTrustLevel(
32            [out] TrustLevel *trustLevel);
33}
34
35cpp_quote("")
36cpp_quote("#if !defined (CINTERFACE) && defined (__cplusplus)")
37cpp_quote("extern \"C++\" {")
38cpp_quote("  template<typename T> void **IID_INS_ARGS_internal (T **p) {")
39cpp_quote("    static_cast<IInspectable *> (*p);")
40cpp_quote("    return reinterpret_cast<void **> (p);")
41cpp_quote("  }")
42cpp_quote("}")
43cpp_quote("")
44cpp_quote("#define IID_INS_ARGS(P) __uuidof(**(P)), IID_INS_ARGS_internal(P)")
45cpp_quote("#endif")
46
47