|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  |  | 
|  | import "wtypes.idl"; | 
|  | import "hstring.idl"; | 
|  | import "unknwn.idl"; | 
|  |  | 
|  | typedef enum TrustLevel { | 
|  | BaseTrust     = 0, | 
|  | PartialTrust  = 1, | 
|  | FullTrust     = 2 | 
|  | } TrustLevel; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(af86e2e0-b12d-4c6a-9c5a-d7aa65101e90), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IInspectable : IUnknown | 
|  | { | 
|  | HRESULT GetIids( | 
|  | [out] ULONG *iidCount, | 
|  | [out, size_is(*iidCount)]  IID **iids); | 
|  |  | 
|  | HRESULT GetRuntimeClassName( | 
|  | [out] HSTRING *className); | 
|  |  | 
|  | HRESULT GetTrustLevel( | 
|  | [out] TrustLevel *trustLevel); | 
|  | } | 
|  |  | 
|  | cpp_quote("") | 
|  | cpp_quote("#if !defined (CINTERFACE) && defined (__cplusplus)") | 
|  | cpp_quote("extern \"C++\" {") | 
|  | cpp_quote("  template<typename T> void **IID_INS_ARGS_internal (T **p) {") | 
|  | cpp_quote("    static_cast<IInspectable *> (*p);") | 
|  | cpp_quote("    return reinterpret_cast<void **> (p);") | 
|  | cpp_quote("  }") | 
|  | cpp_quote("}") | 
|  | cpp_quote("") | 
|  | cpp_quote("#define IID_INS_ARGS(P) __uuidof(**(P)), IID_INS_ARGS_internal(P)") | 
|  | cpp_quote("#endif") | 
|  |  |