f0d5fb3ee75d0ee9b1c0bc663b75b3b9e0d901dc
[platform/upstream/coreclr.git] / src / vm / mngstditflist.h
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 /*============================================================
6 **
7 ** Header:  MngStdItfList.h
8 **
9 **
10 ** Purpose: This file contains the list of managed standard
11 **          interfaces. Each standard interface also has the
12 **          list of method that it contains.
13 ** 
14 ===========================================================*/
15
16 #ifndef FEATURE_COMINTEROP
17 #error FEATURE_COMINTEROP is required for this file
18 #endif // FEATURE_COMINTEROP
19
20 //
21 // Helper macros
22 //
23
24 #define MNGSTDITF_DEFINE_METH(FriendlyName, MethName, MethSig, FcallDecl) \
25     MNGSTDITF_DEFINE_METH_IMPL(FriendlyName, MethName, MethName, MethSig, FcallDecl)
26
27 #define MNGSTDITF_DEFINE_METH2(FriendlyName, MethName, MethSig, FcallDecl) \
28     MNGSTDITF_DEFINE_METH_IMPL(FriendlyName, MethName##_2, MethName, MethSig, FcallDecl)
29
30 #define MNGSTDITF_DEFINE_METH3(FriendlyName, MethName, MethSig, FcallDecl) \
31     MNGSTDITF_DEFINE_METH_IMPL(FriendlyName, MethName##_3, MethName, MethSig, FcallDecl)
32         
33 #define CUSTOM_MARSHALER_ASM ", CustomMarshalers, Version=" VER_ASSEMBLYVERSION_STR ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
34
35
36
37
38 //
39 // MNGSTDITF_BEGIN_INTERFACE(FriendlyName, strMngItfName, strUCOMMngItfName, strCustomMarshalerName, strCustomMarshalerCookie, strManagedViewName, NativeItfIID) \
40 //
41 // This macro defines a new managed standard interface.
42 //
43 // FriendlyName             Friendly name for the class that implements the ECall's.
44 // idMngItf                 BinderClassID of the managed interface.
45 // idUCOMMngItf             BinderClassID of the UCom version of the managed interface.
46 // idCustomMarshaler        BinderClassID of the custom marshaler.
47 // idGetInstMethod          BinderMethodID of the GetInstance method of the custom marshaler.
48 // strCustomMarshalerCookie String containing the cookie to be passed to the custom marshaler.
49 // strManagedViewName       String containing the name of the managed view of the native interface.
50 // NativeItfIID             IID of the native interface.
51 // bCanCastOnNativeItfQI    If this is true casting to a COM object that supports the native interface
52 //                          will cause the cast to succeed.
53 //
54
55 //
56 // MNGSTDITF_DEFINE_METH(FriendlyName, MethName, MethSig)
57 //
58 // This macro defines a method of the standard managed interface.
59 // MNGSTDITF_DEFINE_METH2 and MNGSTDITF_DEFINE_METH3 are used to
60 // define overloaded versions of the method.
61 //
62 // FriendlyName             Friendly name for the class that implements the ECall's.
63 // MethName                 This is the method name
64 // MethSig                  This is the method signature.
65 //
66
67
68 //
69 // IReflect
70 //
71
72
73 #define MNGSTDITF_IREFLECT_DECL__GETMETHOD      FCDECL6(Object*, GetMethod,     Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr, Object* refBinderUNSAFE, Object* refTypesArrayUNSAFE, Object* refModifiersArrayUNSAFE)
74 #define MNGSTDITF_IREFLECT_DECL__GETMETHOD_2    FCDECL3(Object*, GetMethod_2,   Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr)
75 #define MNGSTDITF_IREFLECT_DECL__GETMETHODS     FCDECL2(Object*, GetMethods,    Object* refThisUNSAFE, INT32 enumBindingAttr)
76 #define MNGSTDITF_IREFLECT_DECL__GETFIELD       FCDECL3(Object*, GetField,      Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr)
77 #define MNGSTDITF_IREFLECT_DECL__GETFIELDS      FCDECL2(Object*, GetFields,     Object* refThisUNSAFE, INT32 enumBindingAttr)
78 #define MNGSTDITF_IREFLECT_DECL__GETPROPERTY    FCDECL7(Object*, GetProperty,   Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr, Object* refBinderUNSAFE, Object* refReturnTypeUNSAFE, Object* refTypesArrayUNSAFE, Object* refModifiersArrayUNSAFE)
79 #define MNGSTDITF_IREFLECT_DECL__GETPROPERTY_2  FCDECL3(Object*, GetProperty_2, Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr)
80 #define MNGSTDITF_IREFLECT_DECL__GETPROPERTIES  FCDECL2(Object*, GetProperties, Object* refThisUNSAFE, INT32 enumBindingAttr)
81 #define MNGSTDITF_IREFLECT_DECL__GETMEMBER      FCDECL3(Object*, GetMember,     Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr)
82 #define MNGSTDITF_IREFLECT_DECL__GETMEMBERS     FCDECL2(Object*, GetMembers,    Object* refThisUNSAFE, INT32 enumBindingAttr)
83 #define MNGSTDITF_IREFLECT_DECL__INVOKEMEMBER   FCDECL9(Object*, InvokeMember,  Object* refThisUNSAFE, Object* refNameUNSAFE, INT32 enumBindingAttr, Object* refBinderUNSAFE, Object* refTargetUNSAFE, Object* refArgsArrayUNSAFE, Object* refModifiersArrayUNSAFE, Object* refCultureUNSAFE, Object* refNamedParamsArrayUNSAFE)
84 #define MNGSTDITF_IREFLECT_DECL__GET_UNDERLYING_SYSTEM_TYPE FCDECL1(Object*, get_UnderlyingSystemType, Object* refThisUNSAFE)
85
86 MNGSTDITF_BEGIN_INTERFACE(StdMngIReflect, g_ReflectionReflectItfName, "System.Runtime.InteropServices.ComTypes.IReflect", g_CMExpandoToDispatchExMarshaler CUSTOM_MARSHALER_ASM, "IReflect", g_CMExpandoViewOfDispatchEx CUSTOM_MARSHALER_ASM, IID_IDispatchEx, TRUE)
87     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetMethod,    &gsig_IM_Str_BindingFlags_Binder_ArrType_ArrParameterModifier_RetMethodInfo, MNGSTDITF_IREFLECT_DECL__GETMETHOD)
88     MNGSTDITF_DEFINE_METH2(StdMngIReflect,GetMethod,    &gsig_IM_Str_BindingFlags_RetMethodInfo,    MNGSTDITF_IREFLECT_DECL__GETMETHOD_2)
89     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetMethods,   &gsig_IM_BindingFlags_RetArrMethodInfo,     MNGSTDITF_IREFLECT_DECL__GETMETHODS)
90     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetField,     &gsig_IM_Str_BindingFlags_RetFieldInfo,     MNGSTDITF_IREFLECT_DECL__GETFIELD)
91     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetFields,    &gsig_IM_BindingFlags_RetArrFieldInfo,      MNGSTDITF_IREFLECT_DECL__GETFIELDS)
92     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetProperty,  &gsig_IM_Str_BindingFlags_Binder_Type_ArrType_ArrParameterModifier_RetPropertyInfo, MNGSTDITF_IREFLECT_DECL__GETPROPERTY)
93     MNGSTDITF_DEFINE_METH2(StdMngIReflect,GetProperty,  &gsig_IM_Str_BindingFlags_RetPropertyInfo,  MNGSTDITF_IREFLECT_DECL__GETPROPERTY_2)
94     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetProperties,&gsig_IM_BindingFlags_RetArrPropertyInfo,   MNGSTDITF_IREFLECT_DECL__GETPROPERTIES)
95     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetMember,    &gsig_IM_Str_BindingFlags_RetMemberInfo,    MNGSTDITF_IREFLECT_DECL__GETMEMBER)
96     MNGSTDITF_DEFINE_METH(StdMngIReflect, GetMembers,   &gsig_IM_BindingFlags_RetArrMemberInfo,     MNGSTDITF_IREFLECT_DECL__GETMEMBERS)
97     MNGSTDITF_DEFINE_METH(StdMngIReflect, InvokeMember, &gsig_IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj, MNGSTDITF_IREFLECT_DECL__INVOKEMEMBER)
98     MNGSTDITF_DEFINE_METH(StdMngIReflect, get_UnderlyingSystemType, &gsig_IM_RetType,               MNGSTDITF_IREFLECT_DECL__GET_UNDERLYING_SYSTEM_TYPE)
99 MNGSTDITF_END_INTERFACE(StdMngIReflect)
100
101
102 //
103 // IExpando
104 //
105
106 #define MNGSTDITF_IEXPANDO_DECL__ADD_FIELD      FCDECL2(Object*, AddField, Object* refThisUNSAFE, StringObject* refNameUNSAFE)
107 #define MNGSTDITF_IEXPANDO_DECL__ADD_PROPERTY   FCDECL2(Object*, AddProperty, Object* refThisUNSAFE, StringObject* refNameUNSAFE)
108 #define MNGSTDITF_IEXPANDO_DECL__ADD_METHOD     FCDECL3(Object*, AddMethod, Object* refThisUNSAFE, StringObject* refNameUNSAFE, Object* refDelegateUNSAFE)
109 #define MNGSTDITF_IEXPANDO_DECL__REMOVE_MEMBER  FCDECL2(void, RemoveMember, Object* refThisUNSAFE, Object* refMemberInfoUNSAFE)
110
111 MNGSTDITF_BEGIN_INTERFACE(StdMngIExpando, g_ReflectionExpandoItfName, "System.Runtime.InteropServices.ComTypes.IExpando", g_CMExpandoToDispatchExMarshaler CUSTOM_MARSHALER_ASM, "IExpando", g_CMExpandoViewOfDispatchEx CUSTOM_MARSHALER_ASM, IID_IDispatchEx, TRUE)
112     MNGSTDITF_DEFINE_METH(StdMngIExpando, AddField,     &gsig_IM_Str_RetFieldInfo,          MNGSTDITF_IEXPANDO_DECL__ADD_FIELD)
113     MNGSTDITF_DEFINE_METH(StdMngIExpando, AddProperty,  &gsig_IM_Str_RetPropertyInfo,       MNGSTDITF_IEXPANDO_DECL__ADD_PROPERTY)
114     MNGSTDITF_DEFINE_METH(StdMngIExpando, AddMethod,    &gsig_IM_Str_Delegate_RetMethodInfo,MNGSTDITF_IEXPANDO_DECL__ADD_METHOD)
115     MNGSTDITF_DEFINE_METH(StdMngIExpando, RemoveMember, &gsig_IM_MemberInfo_RetVoid,        MNGSTDITF_IEXPANDO_DECL__REMOVE_MEMBER)
116 MNGSTDITF_END_INTERFACE(StdMngIExpando)
117
118 //
119 // IEnumerator
120 //
121
122 #define MNGSTDITF_IENUMERATOR_DECL__MOVE_NEXT      FCDECL1(FC_BOOL_RET, MoveNext, Object* refThisUNSAFE)
123 #define MNGSTDITF_IENUMERATOR_DECL__GET_CURRENT    FCDECL1(Object*, get_Current, Object* refThisUNSAFE)
124 #define MNGSTDITF_IENUMERATOR_DECL__RESET          FCDECL1(void, Reset, Object* refThisUNSAFE)
125
126 MNGSTDITF_BEGIN_INTERFACE(StdMngIEnumerator, g_CollectionsEnumeratorClassName, "System.Runtime.InteropServices.ComTypes.IEnumerator", g_EnumeratorToEnumClassName CUSTOM_MARSHALER_ASM, "", "System.Runtime.InteropServices.CustomMarshalers.EnumeratorViewOfEnumVariant" CUSTOM_MARSHALER_ASM, IID_IEnumVARIANT, TRUE)
127     MNGSTDITF_DEFINE_METH(StdMngIEnumerator, MoveNext,      &gsig_IM_RetBool,   MNGSTDITF_IENUMERATOR_DECL__MOVE_NEXT)
128     MNGSTDITF_DEFINE_METH(StdMngIEnumerator, get_Current,   &gsig_IM_RetObj,    MNGSTDITF_IENUMERATOR_DECL__GET_CURRENT)
129     MNGSTDITF_DEFINE_METH(StdMngIEnumerator, Reset,         &gsig_IM_RetVoid,   MNGSTDITF_IENUMERATOR_DECL__RESET)
130 MNGSTDITF_END_INTERFACE(StdMngIEnumerator)
131
132 //
133 // IEnumerable
134 //
135
136 #define MNGSTDITF_IENUMERABLE_DECL__GETENUMERATOR   FCDECL1(Object*, GetEnumerator, Object* refThisUNSAFE)
137
138 MNGSTDITF_BEGIN_INTERFACE(StdMngIEnumerable, g_CollectionsEnumerableItfName, "System.Runtime.InteropServices.ComTypes.IEnumerable", "System.Runtime.InteropServices.CustomMarshalers.EnumerableToDispatchMarshaler" CUSTOM_MARSHALER_ASM, "", "System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch" CUSTOM_MARSHALER_ASM, IID_IDispatch, FALSE)
139     MNGSTDITF_DEFINE_METH(StdMngIEnumerable, GetEnumerator, &gsig_IM_RetIEnumerator, MNGSTDITF_IENUMERABLE_DECL__GETENUMERATOR)
140 MNGSTDITF_END_INTERFACE(StdMngIEnumerable)