768bf8f039f97838180a8dc400235abb5ba5a018
[platform/upstream/coreclr.git] / src / vm / mscorlib.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 // This file contains the classes, methods, and field used by the EE from mscorlib
5
6 //
7 // To use this, define one of the following macros & include the file like so:
8 //
9 // #define DEFINE_CLASS(id, nameSpace, stringName)         CLASS__ ## id,
10 // #define DEFINE_METHOD(classId, id, stringName, gSign)
11 // #define DEFINE_FIELD(classId, id, stringName)
12 // #include "mscorlib.h"
13 //
14 // Note: To determine if the namespace you want to use in DEFINE_CLASS is supported or not, 
15 //       examine vm\namespace.h. If it is not present, define it there and then proceed to use it below.
16 //
17
18
19 // 
20 // Note: The SM_* and IM_* are signatures defined in file:metasig.h using IM() and SM() macros.
21 // 
22
23 #ifndef DEFINE_CLASS
24 #define DEFINE_CLASS(id, nameSpace, stringName)
25 #endif
26
27 #ifndef DEFINE_METHOD
28 #define DEFINE_METHOD(classId, id, stringName, gSign)
29 #endif
30
31 #ifndef DEFINE_FIELD
32 #define DEFINE_FIELD(classId, id, stringName)
33 #endif
34
35 #ifndef DEFINE_PROPERTY
36 #define DEFINE_PROPERTY(classId, id, stringName, gSign) DEFINE_METHOD(classId, GET_ ## id, get_ ## stringName, IM_Ret ## gSign)
37 #endif
38
39 #ifndef DEFINE_STATIC_PROPERTY
40 #define DEFINE_STATIC_PROPERTY(classId, id, stringName, gSign) DEFINE_METHOD(classId, GET_ ## id, get_ ## stringName, SM_Ret ## gSign)
41 #endif
42
43 #ifndef DEFINE_SET_PROPERTY
44 #define DEFINE_SET_PROPERTY(classId, id, stringName, gSign) \
45     DEFINE_PROPERTY(classId, id, stringName, gSign) \
46     DEFINE_METHOD(classId, SET_ ## id, set_ ## stringName, IM_## gSign ## _RetVoid)
47 #endif
48
49 //
50 // DEFINE_CLASS_U and DEFINE_FIELD_U are debug-only checks to verify that the managed and unmanaged layouts are in sync
51 //
52 #ifndef DEFINE_CLASS_U
53 #define DEFINE_CLASS_U(nameSpace, stringName, unmanagedType)
54 #endif
55
56 #ifndef DEFINE_FIELD_U
57 #define DEFINE_FIELD_U(stringName, unmanagedContainingType, unmanagedOffset)
58 #endif
59
60 // NOTE: Make this window really wide if you want to read the table...
61
62 DEFINE_CLASS(ACTIVATOR,             System,                 Activator)
63
64 DEFINE_CLASS(ACCESS_VIOLATION_EXCEPTION, System,            AccessViolationException)
65 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, IP,                _ip)
66 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, TARGET,            _target)
67 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, ACCESSTYPE,        _accessType)
68
69 DEFINE_CLASS_U(System,                 AppDomain,      AppDomainBaseObject)
70 DEFINE_FIELD_U(AssemblyLoad,               AppDomainBaseObject, m_pAssemblyEventHandler)
71 DEFINE_FIELD_U(_TypeResolve,               AppDomainBaseObject, m_pTypeEventHandler)
72 DEFINE_FIELD_U(_ResourceResolve,           AppDomainBaseObject, m_pResourceEventHandler)
73 DEFINE_FIELD_U(_AssemblyResolve,           AppDomainBaseObject, m_pAsmResolveEventHandler)
74 DEFINE_FIELD_U(_processExit,               AppDomainBaseObject, m_pProcessExitEventHandler)
75 DEFINE_FIELD_U(_domainUnload,              AppDomainBaseObject, m_pDomainUnloadEventHandler)
76 DEFINE_FIELD_U(_unhandledException,        AppDomainBaseObject, m_pUnhandledExceptionEventHandler)
77 DEFINE_FIELD_U(_firstChanceException,      AppDomainBaseObject, m_pFirstChanceExceptionHandler)
78 DEFINE_FIELD_U(_pDomain,                   AppDomainBaseObject, m_pDomain)
79
80 DEFINE_CLASS(APP_DOMAIN,            System,                 AppDomain)
81 DEFINE_METHOD(APP_DOMAIN,           SETUP,Setup,SM_Str_ArrStr_ArrStr_RetVoid)
82 DEFINE_METHOD(APP_DOMAIN,           ON_ASSEMBLY_LOAD,       OnAssemblyLoadEvent,        IM_Assembly_RetVoid)
83 DEFINE_METHOD(APP_DOMAIN,           ON_RESOURCE_RESOLVE,    OnResourceResolveEvent,     IM_Assembly_Str_RetAssembly)
84 DEFINE_METHOD(APP_DOMAIN,           ON_TYPE_RESOLVE,        OnTypeResolveEvent,         IM_Assembly_Str_RetAssembly)
85 DEFINE_METHOD(APP_DOMAIN,           ON_ASSEMBLY_RESOLVE,    OnAssemblyResolveEvent,     IM_Assembly_Str_RetAssembly)
86 #ifdef FEATURE_COMINTEROP
87 DEFINE_METHOD(APP_DOMAIN,           ON_DESIGNER_NAMESPACE_RESOLVE, OnDesignerNamespaceResolveEvent, IM_Str_RetArrStr)
88 #endif //FEATURE_COMINTEROP
89
90 DEFINE_CLASS(CLEANUP_WORK_LIST_ELEMENT,     StubHelpers,            CleanupWorkListElement)
91
92 #ifdef FEATURE_COMINTEROP
93 // Define earlier in mscorlib.h to avoid BinderClassID to const BYTE truncation warning
94 DEFINE_CLASS(DATETIMENATIVE,   StubHelpers,        DateTimeNative)
95 DEFINE_CLASS(TYPENAMENATIVE,   StubHelpers,        TypeNameNative)
96
97 DEFINE_CLASS_U(StubHelpers,     TypeNameNative,             TypeNameNative)
98 DEFINE_FIELD_U(typeName,        TypeNameNative,             typeName)
99 DEFINE_FIELD_U(typeKind,        TypeNameNative,             typeKind)
100
101 #endif
102
103 DEFINE_CLASS(ARG_ITERATOR,          System,                 ArgIterator)
104 DEFINE_CLASS_U(System,              ArgIterator,            VARARGS)  // Includes a SigPointer.
105 DEFINE_METHOD(ARG_ITERATOR,         CTOR2,                  .ctor,                      IM_RuntimeArgumentHandle_PtrVoid_RetVoid)
106
107 DEFINE_CLASS(ARGUMENT_HANDLE,       System,                 RuntimeArgumentHandle)
108
109 DEFINE_CLASS(ARRAY,                 System,                 Array)
110 DEFINE_PROPERTY(ARRAY,              LENGTH,                 Length,                     Int)
111 DEFINE_METHOD(ARRAY,                GET_DATA_PTR_OFFSET_INTERNAL, GetDataPtrOffsetInternal, IM_RetInt)
112
113 DEFINE_CLASS(ARRAY_WITH_OFFSET,     Interop,                ArrayWithOffset)                 
114 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_ARRAY,                m_array)
115 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_OFFSET,               m_offset)
116 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_COUNT,                m_count)
117
118
119 DEFINE_CLASS(ASSEMBLY_BUILDER,      ReflectionEmit,         AssemblyBuilder)
120 DEFINE_CLASS(INTERNAL_ASSEMBLY_BUILDER,      ReflectionEmit,         InternalAssemblyBuilder)
121
122 DEFINE_CLASS(ASSEMBLY_HASH_ALGORITHM,   Assemblies,         AssemblyHashAlgorithm)
123 DEFINE_CLASS(PORTABLE_EXECUTABLE_KINDS, Reflection,         PortableExecutableKinds)
124 DEFINE_CLASS(IMAGE_FILE_MACHINE,        Reflection,         ImageFileMachine)
125
126 DEFINE_CLASS_U(Reflection,             AssemblyName,           AssemblyNameBaseObject)
127 DEFINE_FIELD_U(_name,                      AssemblyNameBaseObject, _name)
128 DEFINE_FIELD_U(_publicKey,                 AssemblyNameBaseObject, _publicKey)
129 DEFINE_FIELD_U(_publicKeyToken,            AssemblyNameBaseObject, _publicKeyToken)
130 DEFINE_FIELD_U(_cultureInfo,               AssemblyNameBaseObject, _cultureInfo)
131 DEFINE_FIELD_U(_codeBase,                  AssemblyNameBaseObject, _codeBase)
132 DEFINE_FIELD_U(_version,                   AssemblyNameBaseObject, _version)
133 DEFINE_FIELD_U(_hashForControl,            AssemblyNameBaseObject, _hashForControl)
134 DEFINE_FIELD_U(_hashAlgorithm,             AssemblyNameBaseObject, _hashAlgorithm)
135 DEFINE_FIELD_U(_hashAlgorithmForControl, AssemblyNameBaseObject, _hashAlgorithmForControl)
136 DEFINE_FIELD_U(_versionCompatibility,      AssemblyNameBaseObject, _versionCompatibility)
137 DEFINE_FIELD_U(_flags,                     AssemblyNameBaseObject, _flags)
138 DEFINE_CLASS(ASSEMBLY_NAME,         Reflection,             AssemblyName)
139 DEFINE_METHOD(ASSEMBLY_NAME,        INIT,                   Init,                      IM_Str_ArrB_ArrB_Ver_CI_AHA_AVC_Str_ANF_SNKP_RetV)
140 DEFINE_METHOD(ASSEMBLY_NAME,        SET_PROC_ARCH_INDEX,    SetProcArchIndex,          IM_PEK_IFM_RetV)
141
142 DEFINE_CLASS_U(System,                 Version,                    VersionBaseObject)
143 DEFINE_FIELD_U(_Major,                     VersionBaseObject,    m_Major)
144 DEFINE_FIELD_U(_Minor,                     VersionBaseObject,    m_Minor)
145 DEFINE_FIELD_U(_Build,                     VersionBaseObject,    m_Build)
146 DEFINE_FIELD_U(_Revision,                  VersionBaseObject,    m_Revision)
147 DEFINE_CLASS(VERSION,               System,                 Version)
148 DEFINE_METHOD(VERSION,              CTOR_Ix2,               .ctor,                      IM_Int_Int_RetVoid)
149 DEFINE_METHOD(VERSION,              CTOR_Ix3,               .ctor,                      IM_Int_Int_Int_RetVoid)
150 DEFINE_METHOD(VERSION,              CTOR_Ix4,               .ctor,                      IM_Int_Int_Int_Int_RetVoid)
151
152 DEFINE_CLASS(ASSEMBLY_VERSION_COMPATIBILITY, Assemblies,    AssemblyVersionCompatibility)
153
154 DEFINE_CLASS(ASSEMBLY_NAME_FLAGS,   Reflection,             AssemblyNameFlags)
155
156 // ASSEMBLYBASE is System.ReflectionAssembly while ASSEMBLY is System.Reflection.RuntimeAssembly
157 // Maybe we should reverse these two names
158 DEFINE_CLASS(ASSEMBLYBASE,          Reflection,             Assembly)
159
160 DEFINE_CLASS_U(Reflection,             RuntimeAssembly,            AssemblyBaseObject)
161 DEFINE_FIELD_U(_ModuleResolve,             AssemblyBaseObject,     m_pModuleEventHandler)
162 DEFINE_FIELD_U(m_fullname,                 AssemblyBaseObject,     m_fullname)
163 DEFINE_FIELD_U(m_syncRoot,                 AssemblyBaseObject,     m_pSyncRoot)
164 DEFINE_FIELD_U(m_assembly,                 AssemblyBaseObject,     m_pAssembly)
165 DEFINE_CLASS(ASSEMBLY,              Reflection,             RuntimeAssembly)
166 DEFINE_FIELD(ASSEMBLY,              HANDLE,                 m_assembly)
167 DEFINE_METHOD(ASSEMBLY,             GET_NAME,               GetName,                    IM_RetAssemblyName)
168 DEFINE_METHOD(ASSEMBLY,             ON_MODULE_RESOLVE,      OnModuleResolveEvent,       IM_Str_RetModule)
169
170
171 DEFINE_CLASS(ASYNCCALLBACK,         System,                 AsyncCallback)
172 DEFINE_CLASS(ATTRIBUTE,             System,                 Attribute)
173
174
175 DEFINE_CLASS(BINDER,                Reflection,             Binder)
176 DEFINE_METHOD(BINDER,               CHANGE_TYPE,            ChangeType,                 IM_Obj_Type_CultureInfo_RetObj)
177
178 DEFINE_CLASS(BINDING_FLAGS,         Reflection,             BindingFlags)
179
180 DEFINE_CLASS_U(System,                 RuntimeType,            ReflectClassBaseObject)
181 DEFINE_FIELD_U(m_cache,                ReflectClassBaseObject,        m_cache)
182 DEFINE_FIELD_U(m_handle,               ReflectClassBaseObject,        m_typeHandle)
183 DEFINE_FIELD_U(m_keepalive,            ReflectClassBaseObject,        m_keepalive)
184 DEFINE_CLASS(CLASS,                 System,                 RuntimeType)
185 DEFINE_FIELD(CLASS,                 TYPEHANDLE,             m_handle)
186 DEFINE_METHOD(CLASS,                GET_PROPERTIES,         GetProperties,              IM_BindingFlags_RetArrPropertyInfo)
187 DEFINE_METHOD(CLASS,                GET_FIELDS,             GetFields,                  IM_BindingFlags_RetArrFieldInfo)
188 DEFINE_METHOD(CLASS,                GET_METHODS,            GetMethods,                 IM_BindingFlags_RetArrMethodInfo)
189 DEFINE_METHOD(CLASS,                INVOKE_MEMBER,          InvokeMember,               IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj)
190 DEFINE_METHOD(CLASS,                GET_METHOD_BASE,        GetMethodBase,              SM_RuntimeType_RuntimeMethodHandleInternal_RetMethodBase)
191 DEFINE_METHOD(CLASS,                GET_FIELD_INFO,         GetFieldInfo,               SM_RuntimeType_IRuntimeFieldInfo_RetFieldInfo)
192 DEFINE_METHOD(CLASS,                GET_PROPERTY_INFO,      GetPropertyInfo,            SM_RuntimeType_Int_RetPropertyInfo)
193
194 #ifdef FEATURE_COMINTEROP
195 DEFINE_METHOD(CLASS,                FORWARD_CALL_TO_INVOKE, ForwardCallToInvokeMember,  IM_Str_BindingFlags_Obj_ArrObj_ArrBool_ArrInt_ArrType_Type_RetObj)
196 #endif // FEATURE_COMINTEROP
197
198 #ifdef FEATURE_COMINTEROP
199 DEFINE_CLASS(BSTR_WRAPPER,          Interop,                BStrWrapper)
200 DEFINE_CLASS(CURRENCY_WRAPPER,      Interop,                CurrencyWrapper)
201 DEFINE_CLASS(DISPATCH_WRAPPER,      Interop,                DispatchWrapper)
202 DEFINE_CLASS(ERROR_WRAPPER,         Interop,                ErrorWrapper)
203 DEFINE_CLASS(UNKNOWN_WRAPPER,       Interop,                UnknownWrapper)
204 DEFINE_CLASS(VARIANT_WRAPPER,       Interop,                VariantWrapper)
205 #endif // FEATURE_COMINTEROP
206
207 #ifdef FEATURE_COMINTEROP
208 DEFINE_CLASS_U(System,                 __ComObject,            ComObject)
209 DEFINE_FIELD_U(m_ObjectToDataMap,      ComObject,              m_ObjectToDataMap)
210 DEFINE_CLASS(COM_OBJECT,            System,                 __ComObject)
211 DEFINE_METHOD(COM_OBJECT,           RELEASE_ALL_DATA,       ReleaseAllData,             IM_RetVoid)
212 DEFINE_METHOD(COM_OBJECT,           GET_EVENT_PROVIDER,     GetEventProvider,           IM_Class_RetObj)
213
214 DEFINE_CLASS(RUNTIME_CLASS,                  WinRT,         RuntimeClass)
215
216 #endif // FEATURE_COMINTEROP
217
218 DEFINE_CLASS_U(Interop,                CriticalHandle,             CriticalHandle)
219 DEFINE_FIELD_U(handle,                     CriticalHandle,     m_handle)
220 DEFINE_FIELD_U(_isClosed,                  CriticalHandle,     m_isClosed)
221 DEFINE_CLASS(CRITICAL_HANDLE,       Interop,                CriticalHandle)
222 DEFINE_FIELD(CRITICAL_HANDLE,       HANDLE,                 handle)
223 DEFINE_METHOD(CRITICAL_HANDLE,      RELEASE_HANDLE,         ReleaseHandle,              IM_RetBool)
224 DEFINE_METHOD(CRITICAL_HANDLE,      GET_IS_INVALID,         get_IsInvalid,              IM_RetBool)
225 DEFINE_METHOD(CRITICAL_HANDLE,      DISPOSE,                Dispose,                    IM_RetVoid)
226 DEFINE_METHOD(CRITICAL_HANDLE,      DISPOSE_BOOL,           Dispose,                    IM_Bool_RetVoid)
227
228 DEFINE_CLASS(CRITICAL_FINALIZER_OBJECT, ConstrainedExecution, CriticalFinalizerObject)
229 DEFINE_METHOD(CRITICAL_FINALIZER_OBJECT, FINALIZE,          Finalize,                   IM_RetVoid)
230
231 DEFINE_CLASS_U(Reflection,             RuntimeConstructorInfo,  NoClass)
232 DEFINE_FIELD_U(m_handle,                   ReflectMethodObject, m_pMD)
233 DEFINE_CLASS(CONSTRUCTOR,           Reflection,             RuntimeConstructorInfo)
234
235 DEFINE_CLASS_U(System,                 RuntimeMethodInfoStub,     ReflectMethodObject)
236 DEFINE_FIELD_U(m_value,                   ReflectMethodObject, m_pMD)
237 DEFINE_CLASS(STUBMETHODINFO,      System,                 RuntimeMethodInfoStub)
238 DEFINE_FIELD(STUBMETHODINFO,      HANDLE,                 m_value)
239
240 DEFINE_CLASS(CONSTRUCTOR_INFO,      Reflection,             ConstructorInfo)
241
242 DEFINE_CLASS_U(Reflection, CustomAttributeEncodedArgument, CustomAttributeValue)
243 DEFINE_FIELD_U(m_primitiveValue,   CustomAttributeValue,           m_rawValue)
244 DEFINE_FIELD_U(m_arrayValue,       CustomAttributeValue,           m_value)
245 DEFINE_FIELD_U(m_stringValue,      CustomAttributeValue,           m_enumOrTypeName)
246 DEFINE_FIELD_U(m_type,             CustomAttributeValue,           m_type)
247 DEFINE_CLASS(CUSTOM_ATTRIBUTE_ENCODED_ARGUMENT, Reflection, CustomAttributeEncodedArgument)
248
249 DEFINE_CLASS_U(Reflection, CustomAttributeNamedParameter, CustomAttributeNamedArgument)
250 DEFINE_FIELD_U(m_argumentName,     CustomAttributeNamedArgument,   m_argumentName)
251 DEFINE_FIELD_U(m_fieldOrProperty,  CustomAttributeNamedArgument,   m_propertyOrField)
252 DEFINE_FIELD_U(m_padding,          CustomAttributeNamedArgument,   m_padding)
253 DEFINE_FIELD_U(m_type,             CustomAttributeNamedArgument,   m_type)
254 DEFINE_FIELD_U(m_encodedArgument,  CustomAttributeNamedArgument,   m_value)
255
256 DEFINE_CLASS_U(Reflection, CustomAttributeCtorParameter, CustomAttributeArgument)
257 DEFINE_FIELD_U(m_type,             CustomAttributeArgument,        m_type)
258 DEFINE_FIELD_U(m_encodedArgument,  CustomAttributeArgument,        m_value)
259
260 DEFINE_CLASS_U(Reflection, CustomAttributeType, CustomAttributeType)
261 DEFINE_FIELD_U(m_enumName,         CustomAttributeType,            m_enumName)
262 DEFINE_FIELD_U(m_encodedType,      CustomAttributeType,            m_tag)
263 DEFINE_FIELD_U(m_encodedEnumType,  CustomAttributeType,            m_enumType)
264 DEFINE_FIELD_U(m_encodedArrayType, CustomAttributeType,            m_arrayType)
265 DEFINE_FIELD_U(m_padding,          CustomAttributeType,            m_padding)
266
267 DEFINE_CLASS_U(Globalization,          CultureInfo,        CultureInfoBaseObject)
268 DEFINE_FIELD_U(compareInfo,        CultureInfoBaseObject,  compareInfo)
269 DEFINE_FIELD_U(textInfo,           CultureInfoBaseObject,  textInfo)
270 DEFINE_FIELD_U(numInfo,            CultureInfoBaseObject,  numInfo)
271 DEFINE_FIELD_U(dateTimeInfo,       CultureInfoBaseObject,  dateTimeInfo)
272 DEFINE_FIELD_U(calendar,           CultureInfoBaseObject,  calendar)
273 DEFINE_FIELD_U(_consoleFallbackCulture, CultureInfoBaseObject, _consoleFallbackCulture)
274 DEFINE_FIELD_U(_name,             CultureInfoBaseObject,  _name)
275 DEFINE_FIELD_U(_nonSortName,      CultureInfoBaseObject,  _nonSortName)
276 DEFINE_FIELD_U(_sortName,         CultureInfoBaseObject,  _sortName)
277 DEFINE_FIELD_U(_parent,           CultureInfoBaseObject,  _parent)
278 DEFINE_FIELD_U(_isReadOnly,        CultureInfoBaseObject,  _isReadOnly)
279 DEFINE_FIELD_U(_isInherited,      CultureInfoBaseObject,  _isInherited)
280 DEFINE_FIELD_U(_useUserOverride,  CultureInfoBaseObject,  _useUserOverride)
281 DEFINE_CLASS(CULTURE_INFO,          Globalization,          CultureInfo)
282 DEFINE_METHOD(CULTURE_INFO,         STR_CTOR,               .ctor,                      IM_Str_RetVoid)
283 DEFINE_FIELD(CULTURE_INFO,          CURRENT_CULTURE,        s_userDefaultCulture)
284 DEFINE_PROPERTY(CULTURE_INFO,       NAME,                   Name,                       Str)
285 #ifdef FEATURE_USE_LCID
286 DEFINE_METHOD(CULTURE_INFO,         INT_CTOR,               .ctor,                      IM_Int_RetVoid)
287 DEFINE_PROPERTY(CULTURE_INFO,       ID,                     LCID,                       Int)
288 #endif
289 DEFINE_PROPERTY(CULTURE_INFO,       PARENT,                 Parent,                     CultureInfo)
290
291 DEFINE_CLASS(CURRENCY,              System,                 Currency)
292 DEFINE_METHOD(CURRENCY,             DECIMAL_CTOR,           .ctor,                      IM_Dec_RetVoid)
293
294 DEFINE_CLASS(DATE_TIME,             System,                 DateTime)
295 DEFINE_METHOD(DATE_TIME,            LONG_CTOR,              .ctor,                      IM_Long_RetVoid)
296
297 #ifdef FEATURE_COMINTEROP
298 DEFINE_CLASS(DATE_TIME_OFFSET,      System,                 DateTimeOffset)
299 #endif // FEATURE_COMINTEROP
300
301 DEFINE_CLASS(DECIMAL,               System,                 Decimal)      
302 DEFINE_METHOD(DECIMAL,              CURRENCY_CTOR,          .ctor,                      IM_Currency_RetVoid)
303
304 DEFINE_CLASS_U(System,                 Delegate,            NoClass)
305 DEFINE_FIELD_U(_target,                    DelegateObject,   _target)
306 DEFINE_FIELD_U(_methodBase,                DelegateObject,   _methodBase)
307 DEFINE_FIELD_U(_methodPtr,                 DelegateObject,   _methodPtr)
308 DEFINE_FIELD_U(_methodPtrAux,              DelegateObject,   _methodPtrAux)
309 DEFINE_CLASS(DELEGATE,              System,                 Delegate)
310 DEFINE_FIELD(DELEGATE,            TARGET,                 _target)
311 DEFINE_FIELD(DELEGATE,            METHOD_PTR,             _methodPtr)
312 DEFINE_FIELD(DELEGATE,            METHOD_PTR_AUX,         _methodPtrAux)
313 DEFINE_METHOD(DELEGATE,             CONSTRUCT_DELEGATE,     DelegateConstruct,          IM_Obj_IntPtr_RetVoid)
314 DEFINE_METHOD(DELEGATE,             GET_INVOKE_METHOD,      GetInvokeMethod,            IM_RetIntPtr)
315
316 DEFINE_CLASS(DYNAMICMETHOD,         ReflectionEmit,         DynamicMethod)
317
318 DEFINE_CLASS(DYNAMICRESOLVER,       ReflectionEmit,         DynamicResolver)
319 DEFINE_FIELD(DYNAMICRESOLVER,       DYNAMIC_METHOD,         m_method)
320
321 DEFINE_CLASS(EMPTY,                 System,                 Empty)
322
323 DEFINE_CLASS(ENC_HELPER,            Diagnostics,            EditAndContinueHelper)
324 DEFINE_FIELD(ENC_HELPER,            OBJECT_REFERENCE,       _objectReference)
325
326 DEFINE_CLASS(ENCODING,              Text,                   Encoding)
327
328 DEFINE_CLASS(ENUM,                  System,                 Enum)
329
330 DEFINE_CLASS(ENVIRONMENT,           System,                 Environment)
331 DEFINE_METHOD(ENVIRONMENT,       GET_RESOURCE_STRING_LOCAL, GetResourceStringLocal,     SM_Str_RetStr)
332 DEFINE_METHOD(ENVIRONMENT,       SET_COMMAND_LINE_ARGS,     SetCommandLineArgs,         SM_ArrStr_RetVoid)
333
334 DEFINE_CLASS(EVENT,                 Reflection,             RuntimeEventInfo)
335
336 DEFINE_CLASS(EVENT_ARGS,            System,                 EventArgs)
337
338 DEFINE_CLASS(EVENT_HANDLERGENERIC,  System,                 EventHandler`1)
339
340 DEFINE_CLASS(EVENT_INFO,            Reflection,             EventInfo)
341
342 DEFINE_CLASS_U(System,                 Exception,      ExceptionObject)
343 DEFINE_FIELD_U(_className,         ExceptionObject,    _className)
344 DEFINE_FIELD_U(_exceptionMethod,   ExceptionObject,    _exceptionMethod)
345 DEFINE_FIELD_U(_message,           ExceptionObject,    _message)
346 DEFINE_FIELD_U(_data,              ExceptionObject,    _data)
347 DEFINE_FIELD_U(_innerException,    ExceptionObject,    _innerException)
348 DEFINE_FIELD_U(_helpURL,           ExceptionObject,    _helpURL)
349 DEFINE_FIELD_U(_source,            ExceptionObject,    _source)
350 DEFINE_FIELD_U(_stackTrace,        ExceptionObject,    _stackTrace)
351 DEFINE_FIELD_U(_watsonBuckets,     ExceptionObject,    _watsonBuckets)
352 DEFINE_FIELD_U(_stackTraceString,  ExceptionObject,    _stackTraceString)
353 DEFINE_FIELD_U(_remoteStackTraceString, ExceptionObject, _remoteStackTraceString)
354 DEFINE_FIELD_U(_dynamicMethods,    ExceptionObject,    _dynamicMethods)
355 DEFINE_FIELD_U(_xptrs,             ExceptionObject,    _xptrs)
356 DEFINE_FIELD_U(_HResult,           ExceptionObject,    _HResult)
357 DEFINE_FIELD_U(_xcode,             ExceptionObject,    _xcode)
358 DEFINE_FIELD_U(_remoteStackIndex,  ExceptionObject,    _remoteStackIndex)
359 DEFINE_FIELD_U(_ipForWatsonBuckets,ExceptionObject,    _ipForWatsonBuckets)
360 DEFINE_CLASS(EXCEPTION,             System,                 Exception)
361 DEFINE_METHOD(EXCEPTION,            GET_CLASS_NAME,         GetClassName,               IM_RetStr)
362 DEFINE_PROPERTY(EXCEPTION,          MESSAGE,                Message,                    Str)
363 DEFINE_PROPERTY(EXCEPTION,          SOURCE,                 Source,                     Str)
364 DEFINE_PROPERTY(EXCEPTION,          HELP_LINK,              HelpLink,                   Str)
365 DEFINE_METHOD(EXCEPTION,            INTERNAL_TO_STRING,     InternalToString,           IM_RetStr)
366 DEFINE_METHOD(EXCEPTION,            TO_STRING,              ToString,                   IM_Bool_Bool_RetStr)
367 DEFINE_METHOD(EXCEPTION,            INTERNAL_PRESERVE_STACK_TRACE, InternalPreserveStackTrace, IM_RetVoid)
368 #ifdef FEATURE_COMINTEROP
369 DEFINE_METHOD(EXCEPTION,            ADD_EXCEPTION_DATA_FOR_RESTRICTED_ERROR_INFO, AddExceptionDataForRestrictedErrorInfo, IM_Str_Str_Str_Obj_Bool_RetVoid)
370 DEFINE_METHOD(EXCEPTION,            TRY_GET_RESTRICTED_LANGUAGE_ERROR_OBJECT,     TryGetRestrictedLanguageErrorObject, IM_RefObject_RetBool)
371 #endif // FEATURE_COMINTEROP
372
373
374 DEFINE_CLASS(SYSTEM_EXCEPTION,      System,                 SystemException)
375 DEFINE_METHOD(SYSTEM_EXCEPTION,     STR_EX_CTOR,            .ctor,                      IM_Str_Exception_RetVoid)
376
377
378 DEFINE_CLASS(TYPE_INIT_EXCEPTION,   System,                 TypeInitializationException)
379 DEFINE_METHOD(TYPE_INIT_EXCEPTION,  STR_EX_CTOR,            .ctor,                      IM_Str_Exception_RetVoid)
380
381 DEFINE_CLASS(THREAD_START_EXCEPTION,Threading,              ThreadStartException)
382 DEFINE_METHOD(THREAD_START_EXCEPTION,EX_CTOR,               .ctor,                      IM_Exception_RetVoid)
383
384 DEFINE_CLASS(TYPE_HANDLE,           System,                 RuntimeTypeHandle)
385 DEFINE_CLASS(RT_TYPE_HANDLE,        System,                 RuntimeTypeHandle)
386 DEFINE_METHOD(RT_TYPE_HANDLE,       GET_TYPE_HELPER,        GetTypeHelper,              SM_Type_ArrType_IntPtr_int_RetType)
387 DEFINE_METHOD(RT_TYPE_HANDLE,       PVOID_CTOR,             .ctor,                      IM_RuntimeType_RetVoid)
388 DEFINE_METHOD(RT_TYPE_HANDLE,       GETVALUEINTERNAL,       GetValueInternal,           SM_RuntimeTypeHandle_RetIntPtr)
389 DEFINE_FIELD(RT_TYPE_HANDLE,        M_TYPE,                 m_type)
390
391 DEFINE_CLASS_U(Reflection,             RtFieldInfo,         NoClass)
392 DEFINE_FIELD_U(m_fieldHandle,              ReflectFieldObject, m_pFD)
393 DEFINE_CLASS(RT_FIELD_INFO,         Reflection,             RtFieldInfo)
394 DEFINE_FIELD(RT_FIELD_INFO,         HANDLE,                 m_fieldHandle)
395
396 DEFINE_CLASS_U(System,                 RuntimeFieldInfoStub,       ReflectFieldObject)
397 DEFINE_FIELD_U(m_fieldHandle,              ReflectFieldObject, m_pFD)
398 DEFINE_CLASS(STUBFIELDINFO,         System,                 RuntimeFieldInfoStub)
399
400 DEFINE_CLASS(FIELD,                 Reflection,             RuntimeFieldInfo)
401 DEFINE_METHOD(FIELD,                SET_VALUE,              SetValue,                   IM_Obj_Obj_BindingFlags_Binder_CultureInfo_RetVoid)
402 DEFINE_METHOD(FIELD,                GET_VALUE,              GetValue,                   IM_Obj_RetObj)
403
404 DEFINE_CLASS(FIELD_HANDLE,          System,                 RuntimeFieldHandle)
405 DEFINE_FIELD(FIELD_HANDLE,          M_FIELD,                m_ptr)
406
407 DEFINE_CLASS(I_RT_FIELD_INFO,       System,                 IRuntimeFieldInfo)
408
409 DEFINE_CLASS(FIELD_INFO,            Reflection,             FieldInfo)
410
411
412 DEFINE_CLASS(GUID,                  System,                 Guid)
413
414 #ifdef FEATURE_COMINTEROP
415 DEFINE_CLASS(HSTRING_HEADER_MANAGED, WinRT,                 HSTRING_HEADER)
416
417 DEFINE_CLASS(ICUSTOMPROPERTY,                 WinRT,                    ICustomProperty)
418 DEFINE_CLASS(ICUSTOMPROPERTYPROVIDERIMPL,     WinRT,                    ICustomPropertyProviderImpl)
419 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    CREATE_PROPERTY,          CreateProperty,           SM_Obj_Str_RetICustomProperty)
420 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    CREATE_INDEXED_PROPERTY,  CreateIndexedProperty,    SM_Obj_Str_PtrTypeName_RetICustomProperty)
421 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    GET_TYPE,                 GetType,                  SM_Obj_PtrTypeName_RetVoid)
422 DEFINE_CLASS(ICUSTOMPROPERTYPROVIDERPROXY,    WinRT,                    ICustomPropertyProviderProxy`2)
423 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERPROXY,   CREATE_INSTANCE,          CreateInstance,           SM_Obj_RetObj)
424
425 DEFINE_CLASS(FACTORYFORIREFERENCE,   WinRT,                 IReferenceFactory)
426 DEFINE_METHOD(FACTORYFORIREFERENCE,  CREATE_IREFERENCE,     CreateIReference,           SM_Obj_RetObj)
427 DEFINE_CLASS(CLRIREFERENCEIMPL,      WinRT,                 CLRIReferenceImpl`1)
428 DEFINE_METHOD(CLRIREFERENCEIMPL,     UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
429 DEFINE_CLASS(CLRIREFERENCEARRAYIMPL, WinRT,                 CLRIReferenceArrayImpl`1)
430 DEFINE_METHOD(CLRIREFERENCEARRAYIMPL,UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
431 DEFINE_CLASS(IREFERENCE,             WinRT,                 IReference`1)
432 DEFINE_CLASS(CLRIKEYVALUEPAIRIMPL,   WinRT,                 CLRIKeyValuePairImpl`2)
433 DEFINE_METHOD(CLRIKEYVALUEPAIRIMPL,  BOXHELPER,             BoxHelper,                  SM_Obj_RetObj)
434 DEFINE_METHOD(CLRIKEYVALUEPAIRIMPL,  UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
435
436 DEFINE_CLASS(WINDOWS_FOUNDATION_EVENTHANDLER,   WinRT,                 WindowsFoundationEventHandler`1)
437
438 DEFINE_CLASS(VARIANT,               System,                 Variant)
439 DEFINE_METHOD(VARIANT,              CONVERT_OBJECT_TO_VARIANT,MarshalHelperConvertObjectToVariant,SM_Obj_RefVariant_RetVoid)
440 DEFINE_METHOD(VARIANT,              CAST_VARIANT,           MarshalHelperCastVariant,   SM_Obj_Int_RefVariant_RetVoid)
441 DEFINE_METHOD(VARIANT,              CONVERT_VARIANT_TO_OBJECT,MarshalHelperConvertVariantToObject,SM_RefVariant_RetObject)
442 #endif // FEATURE_COMINTEROP
443
444 DEFINE_CLASS(IASYNCRESULT,          System,                 IAsyncResult)
445
446 DEFINE_CLASS(ICUSTOM_ATTR_PROVIDER, Reflection,             ICustomAttributeProvider)
447 DEFINE_METHOD(ICUSTOM_ATTR_PROVIDER,GET_CUSTOM_ATTRIBUTES,  GetCustomAttributes,        IM_Type_RetArrObj)
448
449 DEFINE_CLASS(ICUSTOM_MARSHALER,     Interop,                ICustomMarshaler)
450 DEFINE_METHOD(ICUSTOM_MARSHALER,    MARSHAL_NATIVE_TO_MANAGED,MarshalNativeToManaged,   IM_IntPtr_RetObj)
451 DEFINE_METHOD(ICUSTOM_MARSHALER,    MARSHAL_MANAGED_TO_NATIVE,MarshalManagedToNative,   IM_Obj_RetIntPtr)
452 DEFINE_METHOD(ICUSTOM_MARSHALER,    CLEANUP_NATIVE_DATA,    CleanUpNativeData,          IM_IntPtr_RetVoid)
453 DEFINE_METHOD(ICUSTOM_MARSHALER,    CLEANUP_MANAGED_DATA,   CleanUpManagedData,         IM_Obj_RetVoid)
454 DEFINE_METHOD(ICUSTOM_MARSHALER,    GET_NATIVE_DATA_SIZE,   GetNativeDataSize,         IM_RetInt)
455
456 #ifdef FEATURE_COMINTEROP
457 DEFINE_CLASS(ICUSTOM_QUERYINTERFACE,      Interop,          ICustomQueryInterface)
458 DEFINE_METHOD(ICUSTOM_QUERYINTERFACE,     GET_INTERFACE,    GetInterface,                IM_RefGuid_OutIntPtr_RetCustomQueryInterfaceResult)
459 DEFINE_CLASS(CUSTOMQUERYINTERFACERESULT,  Interop,          CustomQueryInterfaceResult)
460 #endif //FEATURE_COMINTEROP
461
462
463 DEFINE_CLASS(ISERIALIZABLE,         Serialization,          ISerializable)
464 DEFINE_CLASS(IOBJECTREFERENCE,      Serialization,          IObjectReference)
465 DEFINE_CLASS(IDESERIALIZATIONCB,    Serialization,          IDeserializationCallback)
466 DEFINE_CLASS(STREAMING_CONTEXT,     Serialization,          StreamingContext)
467 DEFINE_CLASS(SERIALIZATION_INFO,    Serialization,          SerializationInfo)
468
469
470
471 DEFINE_CLASS(IENUMERATOR,           Collections,            IEnumerator)
472
473 DEFINE_CLASS(IENUMERABLE,           Collections,            IEnumerable)
474 DEFINE_CLASS(ICOLLECTION,           Collections,            ICollection)
475 DEFINE_CLASS(ILIST,                 Collections,            IList)
476 DEFINE_CLASS(IDISPOSABLE,           System,                 IDisposable)
477
478 DEFINE_CLASS(IEXPANDO,              Expando,                IExpando)
479 DEFINE_METHOD(IEXPANDO,             ADD_FIELD,              AddField,                   IM_Str_RetFieldInfo)
480 DEFINE_METHOD(IEXPANDO,             REMOVE_MEMBER,          RemoveMember,               IM_MemberInfo_RetVoid)
481
482 DEFINE_CLASS(IREFLECT,              Reflection,             IReflect)
483 DEFINE_METHOD(IREFLECT,             GET_PROPERTIES,         GetProperties,              IM_BindingFlags_RetArrPropertyInfo)
484 DEFINE_METHOD(IREFLECT,             GET_FIELDS,             GetFields,                  IM_BindingFlags_RetArrFieldInfo)
485 DEFINE_METHOD(IREFLECT,             GET_METHODS,            GetMethods,                 IM_BindingFlags_RetArrMethodInfo)
486 DEFINE_METHOD(IREFLECT,             INVOKE_MEMBER,          InvokeMember,               IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj)
487
488
489 #ifdef FEATURE_COMINTEROP
490 DEFINE_CLASS(LCID_CONVERSION_TYPE,  Interop,                LCIDConversionAttribute)
491 #endif // FEATURE_COMINTEROP
492
493
494 DEFINE_CLASS(MARSHAL,               Interop,                Marshal)
495 #ifdef FEATURE_COMINTEROP
496 DEFINE_METHOD(MARSHAL,              LOAD_LICENSE_MANAGER,   LoadLicenseManager,         SM_Void_RetIntPtr)
497 DEFINE_METHOD(MARSHAL,              INITIALIZE_WRAPPER_FOR_WINRT, InitializeWrapperForWinRT, SM_Obj_RefIntPtr_RetVoid)
498 DEFINE_METHOD(MARSHAL,              GET_HR_FOR_EXCEPTION,              GetHRForException,             SM_Exception_RetInt)
499 DEFINE_METHOD(MARSHAL,              GET_HR_FOR_EXCEPTION_WINRT,        GetHRForException_WinRT,       SM_Exception_RetInt)
500 #endif // FEATURE_COMINTEROP
501 DEFINE_METHOD(MARSHAL,              GET_FUNCTION_POINTER_FOR_DELEGATE, GetFunctionPointerForDelegate, SM_Delegate_RetIntPtr)
502 DEFINE_METHOD(MARSHAL,              GET_DELEGATE_FOR_FUNCTION_POINTER, GetDelegateForFunctionPointer, SM_IntPtr_Type_RetDelegate)
503 DEFINE_METHOD(MARSHAL,              ALLOC_CO_TASK_MEM,                 AllocCoTaskMem,                SM_Int_RetIntPtr)
504 DEFINE_FIELD(MARSHAL,               SYSTEM_MAX_DBCS_CHAR_SIZE,         SystemMaxDBCSCharSize)
505
506
507 DEFINE_CLASS(MEMBER,                Reflection,             MemberInfo)
508
509
510 DEFINE_CLASS_U(Reflection,             RuntimeMethodInfo,  NoClass)
511 DEFINE_FIELD_U(m_handle,                   ReflectMethodObject, m_pMD)
512 DEFINE_CLASS(METHOD,                Reflection,             RuntimeMethodInfo)
513 DEFINE_METHOD(METHOD,               INVOKE,                 Invoke,                     IM_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetObj)
514 DEFINE_METHOD(METHOD,               GET_PARAMETERS,         GetParameters,              IM_RetArrParameterInfo)
515
516 DEFINE_CLASS(METHOD_BASE,           Reflection,             MethodBase)
517 DEFINE_METHOD(METHOD_BASE,          GET_METHODDESC,         GetMethodDesc,              IM_RetIntPtr)
518
519 DEFINE_CLASS_U(Reflection,             RuntimeExceptionHandlingClause,    RuntimeExceptionHandlingClause)
520 DEFINE_FIELD_U(_methodBody,            RuntimeExceptionHandlingClause,        _methodBody)
521 DEFINE_FIELD_U(_flags,                 RuntimeExceptionHandlingClause,        _flags)
522 DEFINE_FIELD_U(_tryOffset,             RuntimeExceptionHandlingClause,        _tryOffset)
523 DEFINE_FIELD_U(_tryLength,             RuntimeExceptionHandlingClause,        _tryLength)
524 DEFINE_FIELD_U(_handlerOffset,         RuntimeExceptionHandlingClause,        _handlerOffset)
525 DEFINE_FIELD_U(_handlerLength,         RuntimeExceptionHandlingClause,        _handlerLength)
526 DEFINE_FIELD_U(_catchMetadataToken,    RuntimeExceptionHandlingClause,        _catchToken)
527 DEFINE_FIELD_U(_filterOffset,          RuntimeExceptionHandlingClause,        _filterOffset)
528 DEFINE_CLASS(RUNTIME_EH_CLAUSE,             Reflection,             RuntimeExceptionHandlingClause)
529
530 DEFINE_CLASS_U(Reflection,             RuntimeLocalVariableInfo,        RuntimeLocalVariableInfo)
531 DEFINE_FIELD_U(_type,                  RuntimeLocalVariableInfo,        _type)
532 DEFINE_FIELD_U(_localIndex,            RuntimeLocalVariableInfo,        _localIndex)
533 DEFINE_FIELD_U(_isPinned,              RuntimeLocalVariableInfo,        _isPinned)
534 DEFINE_CLASS(RUNTIME_LOCAL_VARIABLE_INFO,   Reflection,             RuntimeLocalVariableInfo)
535
536 DEFINE_CLASS_U(Reflection,             RuntimeMethodBody,           RuntimeMethodBody)
537 DEFINE_FIELD_U(_IL,                    RuntimeMethodBody,         _IL)
538 DEFINE_FIELD_U(_exceptionHandlingClauses, RuntimeMethodBody,         _exceptionClauses)
539 DEFINE_FIELD_U(_localVariables,           RuntimeMethodBody,         _localVariables)
540 DEFINE_FIELD_U(_methodBase,               RuntimeMethodBody,         _methodBase)
541 DEFINE_FIELD_U(_localSignatureMetadataToken, RuntimeMethodBody,      _localVarSigToken)
542 DEFINE_FIELD_U(_maxStackSize,             RuntimeMethodBody,         _maxStackSize)
543 DEFINE_FIELD_U(_initLocals,               RuntimeMethodBody,         _initLocals)
544 DEFINE_CLASS(RUNTIME_METHOD_BODY,           Reflection,             RuntimeMethodBody)
545
546 DEFINE_CLASS(METHOD_INFO,           Reflection,             MethodInfo)
547
548 DEFINE_CLASS(METHOD_HANDLE_INTERNAL,System,                 RuntimeMethodHandleInternal)
549
550 DEFINE_CLASS(METHOD_HANDLE,         System,                 RuntimeMethodHandle)
551 DEFINE_FIELD(METHOD_HANDLE,         METHOD,                 m_value)
552 DEFINE_METHOD(METHOD_HANDLE,        GETVALUEINTERNAL,       GetValueInternal,           SM_RuntimeMethodHandle_RetIntPtr)
553
554 DEFINE_CLASS(MISSING,               Reflection,             Missing)
555 DEFINE_FIELD(MISSING,               VALUE,                  Value)
556
557 DEFINE_CLASS_U(Reflection,             RuntimeModule,               ReflectModuleBaseObject)
558 DEFINE_FIELD_U(m_runtimeType,               ReflectModuleBaseObject,    m_runtimeType)
559 DEFINE_FIELD_U(m_pRefClass,                 ReflectModuleBaseObject,    m_ReflectClass)
560 DEFINE_FIELD_U(m_pData,                     ReflectModuleBaseObject,    m_pData)
561 DEFINE_FIELD_U(m_pGlobals,                  ReflectModuleBaseObject,    m_pGlobals)
562 DEFINE_FIELD_U(m_pFields,                   ReflectModuleBaseObject,    m_pGlobalsFlds)
563 DEFINE_CLASS(MODULE,                Reflection,             RuntimeModule)
564 DEFINE_FIELD(MODULE,                DATA,                   m_pData)
565
566 DEFINE_CLASS(MODULE_BUILDER,        ReflectionEmit,         InternalModuleBuilder)
567 DEFINE_CLASS(TYPE_BUILDER,          ReflectionEmit,         TypeBuilder)
568 DEFINE_CLASS(ENUM_BUILDER,          ReflectionEmit,         EnumBuilder)
569
570 DEFINE_CLASS_U(System,                 MulticastDelegate,          DelegateObject)
571 DEFINE_FIELD_U(_invocationList,            DelegateObject,   _invocationList)
572 DEFINE_FIELD_U(_invocationCount,           DelegateObject,   _invocationCount)
573 DEFINE_CLASS(MULTICAST_DELEGATE,    System,                 MulticastDelegate)
574 DEFINE_FIELD(MULTICAST_DELEGATE,    INVOCATION_LIST,        _invocationList)
575 DEFINE_FIELD(MULTICAST_DELEGATE,    INVOCATION_COUNT,       _invocationCount)
576 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_CLOSED,            CtorClosed,                 IM_Obj_IntPtr_RetVoid)
577 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_CLOSED_STATIC,     CtorClosedStatic,           IM_Obj_IntPtr_RetVoid)
578 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_RT_CLOSED,         CtorRTClosed,               IM_Obj_IntPtr_RetVoid)
579 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_OPENED,            CtorOpened,                 IM_Obj_IntPtr_IntPtr_RetVoid)
580 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_VIRTUAL_DISPATCH,  CtorVirtualDispatch,        IM_Obj_IntPtr_IntPtr_RetVoid)
581 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_CLOSED_STATIC,     CtorCollectibleClosedStatic,           IM_Obj_IntPtr_IntPtr_RetVoid)
582 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_OPENED,            CtorCollectibleOpened,                 IM_Obj_IntPtr_IntPtr_IntPtr_RetVoid)
583 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_VIRTUAL_DISPATCH,  CtorCollectibleVirtualDispatch,        IM_Obj_IntPtr_IntPtr_IntPtr_RetVoid)
584
585 DEFINE_CLASS(NULL,                  System,                 DBNull)
586 DEFINE_FIELD(NULL,                  VALUE,          Value)
587
588 DEFINE_CLASS(NULLABLE,              System,                 Nullable`1)
589
590 DEFINE_CLASS(BYREFERENCE,           System,                 ByReference`1)
591 DEFINE_CLASS(SPAN,                  System,                 Span`1)
592 DEFINE_METHOD(SPAN,                 GET_ITEM,               get_Item, IM_Int_RetRefT)
593 DEFINE_CLASS(READONLY_SPAN,         System,                 ReadOnlySpan`1)
594 DEFINE_METHOD(READONLY_SPAN,        GET_ITEM,               get_Item, IM_Int_RetReadOnlyRefT)
595
596 // Keep this in sync with System.Globalization.NumberFormatInfo
597 DEFINE_CLASS_U(Globalization,       NumberFormatInfo,   NumberFormatInfo)
598 DEFINE_FIELD_U(numberGroupSizes,       NumberFormatInfo,   cNumberGroup)
599 DEFINE_FIELD_U(currencyGroupSizes,     NumberFormatInfo,   cCurrencyGroup)
600 DEFINE_FIELD_U(percentGroupSizes,      NumberFormatInfo,   cPercentGroup)
601 DEFINE_FIELD_U(positiveSign,           NumberFormatInfo,   sPositive)
602 DEFINE_FIELD_U(negativeSign,           NumberFormatInfo,   sNegative)
603 DEFINE_FIELD_U(numberDecimalSeparator, NumberFormatInfo,   sNumberDecimal)
604 DEFINE_FIELD_U(numberGroupSeparator,   NumberFormatInfo,   sNumberGroup)
605 DEFINE_FIELD_U(currencyGroupSeparator, NumberFormatInfo,   sCurrencyGroup)
606 DEFINE_FIELD_U(currencyDecimalSeparator,NumberFormatInfo,   sCurrencyDecimal)
607 DEFINE_FIELD_U(currencySymbol,         NumberFormatInfo,   sCurrency)
608 DEFINE_FIELD_U(nanSymbol,              NumberFormatInfo,   sNaN)
609 DEFINE_FIELD_U(positiveInfinitySymbol, NumberFormatInfo,   sPositiveInfinity)
610 DEFINE_FIELD_U(negativeInfinitySymbol, NumberFormatInfo,   sNegativeInfinity)
611 DEFINE_FIELD_U(percentDecimalSeparator,NumberFormatInfo,   sPercentDecimal)
612 DEFINE_FIELD_U(percentGroupSeparator,  NumberFormatInfo,   sPercentGroup)
613 DEFINE_FIELD_U(percentSymbol,          NumberFormatInfo,   sPercent)
614 DEFINE_FIELD_U(perMilleSymbol,         NumberFormatInfo,   sPerMille)
615 DEFINE_FIELD_U(nativeDigits,           NumberFormatInfo,   sNativeDigits)
616 DEFINE_FIELD_U(numberDecimalDigits,    NumberFormatInfo,   cNumberDecimals)
617 DEFINE_FIELD_U(currencyDecimalDigits, NumberFormatInfo,   cCurrencyDecimals)
618 DEFINE_FIELD_U(currencyPositivePattern,NumberFormatInfo,   cPosCurrencyFormat)
619 DEFINE_FIELD_U(currencyNegativePattern,NumberFormatInfo,   cNegCurrencyFormat)
620 DEFINE_FIELD_U(numberNegativePattern,  NumberFormatInfo,   cNegativeNumberFormat)
621 DEFINE_FIELD_U(percentPositivePattern, NumberFormatInfo,   cPositivePercentFormat)
622 DEFINE_FIELD_U(percentNegativePattern, NumberFormatInfo,   cNegativePercentFormat)
623 DEFINE_FIELD_U(percentDecimalDigits,   NumberFormatInfo,   cPercentDecimals)
624 DEFINE_FIELD_U(digitSubstitution,      NumberFormatInfo,   iDigitSubstitution)
625 DEFINE_FIELD_U(isReadOnly,             NumberFormatInfo,   bIsReadOnly)
626 DEFINE_FIELD_U(m_isInvariant,          NumberFormatInfo,   bIsInvariant)
627
628 // Defined as element type alias
629 // DEFINE_CLASS(OBJECT,                System,                 Object)
630 DEFINE_METHOD(OBJECT,               CTOR,                   .ctor,                      IM_RetVoid)
631 DEFINE_METHOD(OBJECT,               FINALIZE,               Finalize,                   IM_RetVoid)
632 DEFINE_METHOD(OBJECT,               TO_STRING,              ToString,                   IM_RetStr)
633 DEFINE_METHOD(OBJECT,               GET_TYPE,               GetType,                    IM_RetType)
634 DEFINE_METHOD(OBJECT,               GET_HASH_CODE,          GetHashCode,                IM_RetInt)
635 DEFINE_METHOD(OBJECT,               EQUALS,                 Equals,                     IM_Obj_RetBool)
636
637 // DEFINE_CLASS(DOUBLE,                System,                 Double)
638 DEFINE_METHOD(DOUBLE,               GET_HASH_CODE,          GetHashCode, IM_RetInt)
639
640 // DEFINE_CLASS(SINGLE,                System,                 Single)
641 DEFINE_METHOD(SINGLE,               GET_HASH_CODE,          GetHashCode, IM_RetInt)
642
643 DEFINE_CLASS(__CANON,              System,                 __Canon)
644
645
646 #ifdef FEATURE_COMINTEROP
647 DEFINE_CLASS(OLE_AUT_BINDER,        System,                 OleAutBinder)    
648 #endif // FEATURE_COMINTEROP
649
650 DEFINE_CLASS(MONITOR,               Threading,              Monitor)
651 DEFINE_METHOD(MONITOR,              ENTER,                  Enter,                      SM_Obj_RetVoid)
652
653 DEFINE_CLASS_U(Threading,              OverlappedData, OverlappedDataObject)
654 DEFINE_FIELD_U(_asyncResult,            OverlappedDataObject,       m_asyncResult)
655 DEFINE_FIELD_U(_callback,               OverlappedDataObject,       m_callback)
656 DEFINE_FIELD_U(_overlapped,             OverlappedDataObject,       m_overlapped)
657 DEFINE_FIELD_U(_userObject,             OverlappedDataObject,       m_userObject)
658 DEFINE_FIELD_U(_pNativeOverlapped,      OverlappedDataObject,       m_pNativeOverlapped)
659 DEFINE_FIELD_U(_offsetLow,              OverlappedDataObject,       m_offsetLow)
660 DEFINE_FIELD_U(_offsetHigh,             OverlappedDataObject,       m_offsetHigh)
661 DEFINE_FIELD_U(_eventHandle,            OverlappedDataObject,       m_eventHandle)
662 DEFINE_CLASS(OVERLAPPEDDATA,            Threading,              OverlappedData)
663
664 DEFINE_CLASS(NATIVEOVERLAPPED,            Threading,              NativeOverlapped)
665
666
667 DEFINE_CLASS(VOLATILE, Threading, Volatile)
668
669 #define DEFINE_VOLATILE_METHODS(methodType, paramType) \
670     DEFINE_METHOD(VOLATILE, READ_##paramType, Read, methodType##_Ref##paramType##_Ret##paramType) \
671     DEFINE_METHOD(VOLATILE, WRITE_##paramType, Write, methodType##_Ref##paramType##_##paramType)
672
673 DEFINE_VOLATILE_METHODS(SM,Bool)
674 DEFINE_VOLATILE_METHODS(SM,SByt)
675 DEFINE_VOLATILE_METHODS(SM,Byte)
676 DEFINE_VOLATILE_METHODS(SM,Shrt)
677 DEFINE_VOLATILE_METHODS(SM,UShrt)
678 DEFINE_VOLATILE_METHODS(SM,Int)
679 DEFINE_VOLATILE_METHODS(SM,UInt)
680 DEFINE_VOLATILE_METHODS(SM,Long)
681 DEFINE_VOLATILE_METHODS(SM,ULong)
682 DEFINE_VOLATILE_METHODS(SM,IntPtr)
683 DEFINE_VOLATILE_METHODS(SM,UIntPtr)
684 DEFINE_VOLATILE_METHODS(SM,Flt)
685 DEFINE_VOLATILE_METHODS(SM,Dbl)
686 DEFINE_VOLATILE_METHODS(GM,T)
687
688 #undef DEFINE_VOLATILE_METHODS
689
690 DEFINE_CLASS(PARAMETER,             Reflection,             ParameterInfo)
691
692 DEFINE_CLASS(PARAMETER_MODIFIER,    Reflection,             ParameterModifier)
693
694 DEFINE_CLASS(POINTER,               Reflection,             Pointer)
695
696 DEFINE_CLASS_U(Reflection, Pointer, ReflectionPointer)
697 DEFINE_FIELD_U(_ptr,                ReflectionPointer, _ptr)
698 DEFINE_FIELD_U(_ptrType,            ReflectionPointer, _ptrType)
699
700 DEFINE_CLASS(PROPERTY,              Reflection,             RuntimePropertyInfo)
701 DEFINE_METHOD(PROPERTY,             SET_VALUE,              SetValue,                   IM_Obj_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetVoid)
702 DEFINE_METHOD(PROPERTY,             GET_VALUE,              GetValue,                   IM_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetObj)
703 DEFINE_METHOD(PROPERTY,             GET_INDEX_PARAMETERS,   GetIndexParameters,         IM_RetArrParameterInfo)
704 DEFINE_METHOD(PROPERTY,             GET_TOKEN,              get_MetadataToken,          IM_RetInt)
705 DEFINE_METHOD(PROPERTY,             GET_MODULE,             GetRuntimeModule,           IM_RetModule)
706 DEFINE_METHOD(PROPERTY,             GET_SETTER,             GetSetMethod,               IM_Bool_RetMethodInfo)
707 DEFINE_METHOD(PROPERTY,             GET_GETTER,             GetGetMethod,               IM_Bool_RetMethodInfo)
708
709 DEFINE_CLASS(PROPERTY_INFO,         Reflection,             PropertyInfo)
710
711
712
713 DEFINE_CLASS(METADATA_IMPORT,       Reflection,             MetadataImport)
714 DEFINE_METHOD(METADATA_IMPORT,      THROW_ERROR,            ThrowError,                 SM_Int_RetVoid)
715
716 DEFINE_CLASS(RESOLVER,              System,                 Resolver)
717 DEFINE_METHOD(RESOLVER,             GET_JIT_CONTEXT,        GetJitContext,              IM_RefInt_RetRuntimeType)
718 DEFINE_METHOD(RESOLVER,             GET_CODE_INFO,          GetCodeInfo,                IM_RefInt_RefInt_RefInt_RetArrByte)
719 DEFINE_METHOD(RESOLVER,             GET_LOCALS_SIGNATURE,   GetLocalsSignature,         IM_RetArrByte)
720 DEFINE_METHOD(RESOLVER,             GET_EH_INFO,            GetEHInfo,                  IM_Int_VoidPtr_RetVoid)
721 DEFINE_METHOD(RESOLVER,             GET_RAW_EH_INFO,        GetRawEHInfo,               IM_RetArrByte)
722 DEFINE_METHOD(RESOLVER,             GET_STRING_LITERAL,     GetStringLiteral,           IM_Int_RetStr)
723 DEFINE_METHOD(RESOLVER,             RESOLVE_TOKEN,          ResolveToken,               IM_Int_RefIntPtr_RefIntPtr_RefIntPtr_RetVoid)
724 DEFINE_METHOD(RESOLVER,             RESOLVE_SIGNATURE,      ResolveSignature,           IM_IntInt_RetArrByte)
725
726 DEFINE_CLASS(RESOURCE_MANAGER,      Resources,              ResourceManager)
727
728 DEFINE_CLASS(RTFIELD,               Reflection,             RtFieldInfo)
729 DEFINE_METHOD(RTFIELD,              GET_FIELDHANDLE,        GetFieldHandle,            IM_RetIntPtr)
730
731 DEFINE_CLASS(RUNTIME_HELPERS,       CompilerServices,       RuntimeHelpers)
732 DEFINE_METHOD(RUNTIME_HELPERS,      PREPARE_CONSTRAINED_REGIONS, PrepareConstrainedRegions, SM_RetVoid)
733 DEFINE_METHOD(RUNTIME_HELPERS,      PREPARE_CONSTRAINED_REGIONS_NOOP, PrepareConstrainedRegionsNoOP, SM_RetVoid)
734 DEFINE_METHOD(RUNTIME_HELPERS,      EXECUTE_BACKOUT_CODE_HELPER, ExecuteBackoutCodeHelper, SM_Obj_Obj_Bool_RetVoid)
735 DEFINE_METHOD(RUNTIME_HELPERS,      IS_REFERENCE_OR_CONTAINS_REFERENCES, IsReferenceOrContainsReferences, NoSig)
736
737 DEFINE_CLASS(JIT_HELPERS,           CompilerServices,       JitHelpers)
738 #ifdef _DEBUG
739 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST,       UnsafeEnumCastInternal, NoSig)
740 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST_LONG,  UnsafeEnumCastLongInternal, NoSig)
741 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointerInternal, NoSig)
742 #else // _DEBUG
743 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST,       UnsafeEnumCast, NoSig)
744 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST_LONG,  UnsafeEnumCastLong, NoSig)
745 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointer, NoSig)
746 #endif // _DEBUG
747 DEFINE_METHOD(JIT_HELPERS,          GET_RAW_SZ_ARRAY_DATA,  GetRawSzArrayData, NoSig)
748
749 DEFINE_CLASS(UNSAFE,                InternalCompilerServices,       Unsafe)
750 DEFINE_METHOD(UNSAFE,               AS_POINTER,             AsPointer, NoSig)
751 DEFINE_METHOD(UNSAFE,               AS_REF_IN,              AsRef, GM_RefT_RetRefT)
752 DEFINE_METHOD(UNSAFE,               AS_REF_POINTER,         AsRef, GM_VoidPtr_RetRefT)
753 DEFINE_METHOD(UNSAFE,               SIZEOF,                 SizeOf, NoSig)
754 DEFINE_METHOD(UNSAFE,               BYREF_AS,               As, GM_RefTFrom_RetRefTTo)
755 DEFINE_METHOD(UNSAFE,               OBJECT_AS,              As, GM_Obj_RetT)
756 DEFINE_METHOD(UNSAFE,               BYREF_ADD,              Add, GM_RefT_Int_RetRefT)
757 DEFINE_METHOD(UNSAFE,               BYREF_INTPTR_ADD,       Add, GM_RefT_IntPtr_RetRefT)
758 DEFINE_METHOD(UNSAFE,               PTR_ADD,                Add, GM_PtrVoid_Int_RetPtrVoid)
759 DEFINE_METHOD(UNSAFE,               BYREF_BYTE_OFFSET,      ByteOffset, NoSig)
760 DEFINE_METHOD(UNSAFE,               BYREF_ADD_BYTE_OFFSET,  AddByteOffset, NoSig)
761 DEFINE_METHOD(UNSAFE,               BYREF_ARE_SAME,         AreSame, NoSig)
762 DEFINE_METHOD(UNSAFE,               BYREF_IS_ADDRESS_GREATER_THAN, IsAddressGreaterThan, NoSig)
763 DEFINE_METHOD(UNSAFE,               BYREF_IS_ADDRESS_LESS_THAN, IsAddressLessThan, NoSig)
764 DEFINE_METHOD(UNSAFE,               BYREF_INIT_BLOCK_UNALIGNED, InitBlockUnaligned, NoSig)
765 DEFINE_METHOD(UNSAFE,               BYREF_READ_UNALIGNED,   ReadUnaligned, GM_RefByte_RetT)
766 DEFINE_METHOD(UNSAFE,               BYREF_WRITE_UNALIGNED,  WriteUnaligned, GM_RefByte_T_RetVoid)
767 DEFINE_METHOD(UNSAFE,               PTR_READ_UNALIGNED,     ReadUnaligned, GM_PtrVoid_RetT)
768 DEFINE_METHOD(UNSAFE,               PTR_WRITE_UNALIGNED,    WriteUnaligned, GM_PtrVoid_T_RetVoid)
769
770 DEFINE_CLASS(INTERLOCKED,           Threading,              Interlocked)
771 DEFINE_METHOD(INTERLOCKED,          COMPARE_EXCHANGE_T,     CompareExchange, GM_RefT_T_T_RetT)
772 DEFINE_METHOD(INTERLOCKED,          COMPARE_EXCHANGE_OBJECT,CompareExchange, SM_RefObject_Object_Object_RetObject)
773
774 DEFINE_CLASS(PINNING_HELPER,        CompilerServices,       PinningHelper)
775 DEFINE_FIELD(PINNING_HELPER,        M_DATA,                 m_data)
776
777 DEFINE_CLASS(ARRAY_PINNING_HELPER,  CompilerServices,                     ArrayPinningHelper)
778 DEFINE_FIELD(ARRAY_PINNING_HELPER,  M_ARRAY_DATA,                         m_arrayData)
779 DEFINE_FIELD(ARRAY_PINNING_HELPER,  M_ARRAY_LENGTH_AND_PADDING,           m_lengthAndPadding)
780
781 DEFINE_CLASS(RUNTIME_WRAPPED_EXCEPTION, CompilerServices,   RuntimeWrappedException)
782 DEFINE_METHOD(RUNTIME_WRAPPED_EXCEPTION, OBJ_CTOR,          .ctor,                      IM_Obj_RetVoid)
783 DEFINE_FIELD(RUNTIME_WRAPPED_EXCEPTION, WRAPPED_EXCEPTION,  _wrappedException)
784
785 DEFINE_CLASS_U(Interop,                SafeHandle,         SafeHandle)
786 DEFINE_FIELD_U(handle,                     SafeHandle,            m_handle)
787 DEFINE_FIELD_U(_state,                     SafeHandle,            m_state)
788 DEFINE_FIELD_U(_ownsHandle,                SafeHandle,            m_ownsHandle)
789 DEFINE_FIELD_U(_fullyInitialized,          SafeHandle,            m_fullyInitialized)
790 DEFINE_CLASS(SAFE_HANDLE,         Interop,                SafeHandle)
791 DEFINE_FIELD(SAFE_HANDLE,           HANDLE,                 handle)
792 DEFINE_METHOD(SAFE_HANDLE,          GET_IS_INVALID,         get_IsInvalid,              IM_RetBool)
793 DEFINE_METHOD(SAFE_HANDLE,          RELEASE_HANDLE,         ReleaseHandle,              IM_RetBool)
794 DEFINE_METHOD(SAFE_HANDLE,          DISPOSE,                Dispose,                    IM_RetVoid)
795 DEFINE_METHOD(SAFE_HANDLE,          DISPOSE_BOOL,           Dispose,                    IM_Bool_RetVoid)
796
797
798 DEFINE_CLASS(SAFE_TYPENAMEPARSER_HANDLE,    System,         SafeTypeNameParserHandle)
799
800 DEFINE_CLASS(SECURITY_EXCEPTION,    Security,               SecurityException)
801
802 DEFINE_CLASS_U(Diagnostics,                StackFrameHelper,   StackFrameHelper)
803 DEFINE_FIELD_U(targetThread,               StackFrameHelper,   targetThread)
804 DEFINE_FIELD_U(rgiOffset,                  StackFrameHelper,   rgiOffset)
805 DEFINE_FIELD_U(rgiILOffset,                StackFrameHelper,   rgiILOffset)
806 DEFINE_FIELD_U(dynamicMethods,             StackFrameHelper,   dynamicMethods)
807 DEFINE_FIELD_U(rgMethodHandle,             StackFrameHelper,   rgMethodHandle)
808 DEFINE_FIELD_U(rgAssemblyPath,             StackFrameHelper,   rgAssemblyPath)
809 DEFINE_FIELD_U(rgLoadedPeAddress,          StackFrameHelper,   rgLoadedPeAddress)
810 DEFINE_FIELD_U(rgiLoadedPeSize,            StackFrameHelper,   rgiLoadedPeSize)
811 DEFINE_FIELD_U(rgInMemoryPdbAddress,       StackFrameHelper,   rgInMemoryPdbAddress)
812 DEFINE_FIELD_U(rgiInMemoryPdbSize,         StackFrameHelper,   rgiInMemoryPdbSize)
813 DEFINE_FIELD_U(rgiMethodToken,             StackFrameHelper,   rgiMethodToken)
814 DEFINE_FIELD_U(rgFilename,                 StackFrameHelper,   rgFilename)
815 DEFINE_FIELD_U(rgiLineNumber,              StackFrameHelper,   rgiLineNumber)
816 DEFINE_FIELD_U(rgiColumnNumber,            StackFrameHelper,   rgiColumnNumber)
817 DEFINE_FIELD_U(rgiLastFrameFromForeignExceptionStackTrace,            StackFrameHelper,   rgiLastFrameFromForeignExceptionStackTrace)
818 DEFINE_FIELD_U(iFrameCount,                StackFrameHelper,   iFrameCount)
819
820 DEFINE_CLASS(STARTUP_HOOK_PROVIDER,  System,                StartupHookProvider)
821 DEFINE_METHOD(STARTUP_HOOK_PROVIDER, PROCESS_STARTUP_HOOKS, ProcessStartupHooks, SM_RetVoid)
822
823 DEFINE_CLASS(STREAM,                IO,                     Stream)
824 DEFINE_METHOD(STREAM,               BEGIN_READ,             BeginRead,  IM_ArrByte_Int_Int_AsyncCallback_Object_RetIAsyncResult)
825 DEFINE_METHOD(STREAM,               END_READ,               EndRead,    IM_IAsyncResult_RetInt)
826 DEFINE_METHOD(STREAM,               BEGIN_WRITE,            BeginWrite, IM_ArrByte_Int_Int_AsyncCallback_Object_RetIAsyncResult)
827 DEFINE_METHOD(STREAM,               END_WRITE,              EndWrite,   IM_IAsyncResult_RetVoid)
828
829 // Defined as element type alias
830 // DEFINE_CLASS(INTPTR,                System,                 IntPtr)
831 DEFINE_FIELD(INTPTR,                ZERO,                   Zero)
832
833 // Defined as element type alias
834 // DEFINE_CLASS(UINTPTR,                System,                UIntPtr)
835 DEFINE_FIELD(UINTPTR,               ZERO,                   Zero)
836
837 DEFINE_CLASS(BITCONVERTER,          System,                 BitConverter)
838 DEFINE_FIELD(BITCONVERTER,          ISLITTLEENDIAN,         IsLittleEndian)
839
840 // Defined as element type alias
841 // DEFINE_CLASS(STRING,                System,                 String)
842 DEFINE_FIELD(STRING,                M_FIRST_CHAR,           _firstChar)
843 DEFINE_FIELD(STRING,                EMPTY,                  Empty)
844 DEFINE_METHOD(STRING,               CTOR_CHARPTR,           .ctor,                      IM_PtrChar_RetVoid)
845 DEFINE_METHOD(STRING,               CTORF_CHARARRAY,        Ctor,                       IM_ArrChar_RetStr)
846 DEFINE_METHOD(STRING,               CTORF_CHARARRAY_START_LEN,Ctor,                     IM_ArrChar_Int_Int_RetStr)
847 DEFINE_METHOD(STRING,               CTORF_CHAR_COUNT,       Ctor,                       IM_Char_Int_RetStr)
848 DEFINE_METHOD(STRING,               CTORF_CHARPTR,          Ctor,                       IM_PtrChar_RetStr)
849 DEFINE_METHOD(STRING,               CTORF_CHARPTR_START_LEN,Ctor,                       IM_PtrChar_Int_Int_RetStr)
850 DEFINE_METHOD(STRING,               CTORF_READONLYSPANOFCHAR,Ctor,                      IM_ReadOnlySpanOfChar_RetStr)
851 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR,         Ctor,                       IM_PtrSByt_RetStr)
852 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR_START_LEN, Ctor,                     IM_PtrSByt_Int_Int_RetStr)
853 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR_START_LEN_ENCODING, Ctor,            IM_PtrSByt_Int_Int_Encoding_RetStr)
854 DEFINE_METHOD(STRING,               INTERNAL_COPY,          InternalCopy,               SM_Str_IntPtr_Int_RetVoid)
855 DEFINE_METHOD(STRING,               WCSLEN,                 wcslen,                     SM_PtrChar_RetInt)
856 DEFINE_PROPERTY(STRING,             LENGTH,                 Length,                     Int)
857
858 DEFINE_CLASS(STRING_BUILDER,        Text,                   StringBuilder)
859 DEFINE_PROPERTY(STRING_BUILDER,     LENGTH,                 Length,                     Int)
860 DEFINE_PROPERTY(STRING_BUILDER,     CAPACITY,               Capacity,                   Int)
861 DEFINE_METHOD(STRING_BUILDER,       CTOR_INT,               .ctor,                      IM_Int_RetVoid)
862 DEFINE_METHOD(STRING_BUILDER,       TO_STRING,              ToString,                   IM_RetStr)
863 DEFINE_METHOD(STRING_BUILDER,       INTERNAL_COPY,          InternalCopy,               IM_IntPtr_Int_RetVoid)
864 DEFINE_METHOD(STRING_BUILDER,       REPLACE_BUFFER_INTERNAL,ReplaceBufferInternal,      IM_PtrChar_Int_RetVoid)
865 DEFINE_METHOD(STRING_BUILDER,       REPLACE_BUFFER_ANSI_INTERNAL,ReplaceBufferAnsiInternal, IM_PtrSByt_Int_RetVoid)
866
867 DEFINE_CLASS(STRONG_NAME_KEY_PAIR,  Reflection,             StrongNameKeyPair)
868
869 DEFINE_CLASS_U(Threading,              SynchronizationContext, SynchronizationContextObject)
870 DEFINE_FIELD_U(_props, SynchronizationContextObject, _props)
871 DEFINE_CLASS(SYNCHRONIZATION_CONTEXT,    Threading,              SynchronizationContext)
872 DEFINE_METHOD(SYNCHRONIZATION_CONTEXT,  INVOKE_WAIT_METHOD_HELPER, InvokeWaitMethodHelper, SM_SyncCtx_ArrIntPtr_Bool_Int_RetInt)
873
874 DEFINE_CLASS(CONTEXTCALLBACK,       Threading,       ContextCallback)
875
876 #ifdef _DEBUG
877 DEFINE_CLASS(STACKCRAWMARK,         Threading,       StackCrawlMark)
878 #endif
879
880 DEFINE_CLASS_U(Threading,              Thread,                     ThreadBaseObject)
881 DEFINE_FIELD_U(m_Name,                     ThreadBaseObject,   m_Name)
882 DEFINE_FIELD_U(m_Delegate,                 ThreadBaseObject,   m_Delegate)
883 DEFINE_FIELD_U(m_ThreadStartArg,           ThreadBaseObject,   m_ThreadStartArg)
884 DEFINE_FIELD_U(DONT_USE_InternalThread,    ThreadBaseObject,   m_InternalThread)
885 DEFINE_FIELD_U(m_Priority,                 ThreadBaseObject,   m_Priority)
886 DEFINE_CLASS(THREAD,                Threading,              Thread)
887 DEFINE_FIELD(THREAD,                CULTURE,                m_CurrentCulture)
888 DEFINE_FIELD(THREAD,                UI_CULTURE,             m_CurrentUICulture)
889 DEFINE_SET_PROPERTY(THREAD,         CULTURE,                CurrentCulture,             CultureInfo)
890 DEFINE_SET_PROPERTY(THREAD,         UI_CULTURE,             CurrentUICulture,           CultureInfo)
891 DEFINE_STATIC_PROPERTY(THREAD,      CURRENT_THREAD,         CurrentThread,              Thread)
892 DEFINE_METHOD(THREAD,               INTERNAL_GET_CURRENT_THREAD,             InternalGetCurrentThread,                    SM_RetIntPtr)
893
894 DEFINE_CLASS(PARAMETERIZEDTHREADSTART,     Threading,                 ParameterizedThreadStart)
895
896 DEFINE_CLASS(IOCB_HELPER,              Threading,            _IOCompletionCallback)
897 DEFINE_METHOD(IOCB_HELPER,             PERFORM_IOCOMPLETION_CALLBACK,        PerformIOCompletionCallback,          SM_UInt_UInt_PtrNativeOverlapped_RetVoid)
898
899 DEFINE_CLASS(TPWAITORTIMER_HELPER,              Threading,            _ThreadPoolWaitOrTimerCallback)
900 DEFINE_METHOD(TPWAITORTIMER_HELPER,             PERFORM_WAITORTIMER_CALLBACK,        PerformWaitOrTimerCallback,          SM_Obj_Bool_RetVoid)
901
902 DEFINE_CLASS(TP_WAIT_CALLBACK,         Threading,              _ThreadPoolWaitCallback)
903 DEFINE_METHOD(TP_WAIT_CALLBACK,        PERFORM_WAIT_CALLBACK,               PerformWaitCallback,                   SM_RetBool)
904
905 DEFINE_CLASS(TIMER_QUEUE,           Threading,                TimerQueue)
906 DEFINE_METHOD(TIMER_QUEUE,          APPDOMAIN_TIMER_CALLBACK, AppDomainTimerCallback,   SM_Int_RetVoid)
907
908 DEFINE_CLASS(TIMESPAN,              System,                 TimeSpan)
909
910
911 DEFINE_CLASS(TYPE,                  System,                 Type)
912 DEFINE_METHOD(TYPE,                 GET_TYPE_FROM_HANDLE,   GetTypeFromHandle,          SM_RuntimeTypeHandle_RetType)
913 DEFINE_PROPERTY(TYPE,               IS_IMPORT,              IsImport,                   Bool)
914
915 DEFINE_CLASS(TYPE_DELEGATOR,        Reflection,             TypeDelegator)
916
917 DEFINE_CLASS(UNHANDLED_EVENTARGS,   System,                 UnhandledExceptionEventArgs)
918 DEFINE_METHOD(UNHANDLED_EVENTARGS,  CTOR,                   .ctor,                      IM_Obj_Bool_RetVoid)
919
920 DEFINE_CLASS(FIRSTCHANCE_EVENTARGS,   ExceptionServices,      FirstChanceExceptionEventArgs)
921 DEFINE_METHOD(FIRSTCHANCE_EVENTARGS,  CTOR,                   .ctor,                      IM_Exception_RetVoid)
922
923 DEFINE_CLASS(ASSEMBLYLOADCONTEXT,  Loader,                AssemblyLoadContext)    
924 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVE,          Resolve,                      SM_IntPtr_AssemblyName_RetAssemblyBase)
925 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVEUNMANAGEDDLL,          ResolveUnmanagedDll,                      SM_Str_IntPtr_RetIntPtr)
926 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVEUSINGEVENT,          ResolveUsingResolvingEvent,                      SM_IntPtr_AssemblyName_RetAssemblyBase)
927
928 DEFINE_CLASS(LAZY,              System,     Lazy`1)
929
930 DEFINE_CLASS(LAZY_INITIALIZER,  Threading,  LazyInitializer)
931
932 DEFINE_CLASS(VALUE_TYPE,            System,                 ValueType)
933 DEFINE_METHOD(VALUE_TYPE,           GET_HASH_CODE,          GetHashCode,            IM_RetInt)
934 DEFINE_METHOD(VALUE_TYPE,           EQUALS,                 Equals,                 IM_Obj_RetBool)
935
936 DEFINE_CLASS(GC,                    System,                 GC)
937 DEFINE_METHOD(GC,                   KEEP_ALIVE,             KeepAlive,                  SM_Obj_RetVoid)
938 DEFINE_METHOD(GC,                   COLLECT,                Collect,                    SM_RetVoid)
939 DEFINE_METHOD(GC,                   WAIT_FOR_PENDING_FINALIZERS, WaitForPendingFinalizers, SM_RetVoid)
940
941 DEFINE_CLASS_U(System,                 WeakReference,          WeakReferenceObject)
942 DEFINE_FIELD_U(m_handle,               WeakReferenceObject,    m_Handle)
943 DEFINE_CLASS(WEAKREFERENCE,         System,                 WeakReference)
944
945 DEFINE_CLASS_U(Threading,              WaitHandle,             WaitHandleBase)
946 DEFINE_FIELD_U(_waitHandle,         WaitHandleBase,         m_safeHandle)
947 DEFINE_FIELD_U(waitHandle,             WaitHandleBase,         m_handle)
948 DEFINE_FIELD_U(hasThreadAffinity,      WaitHandleBase,         m_hasThreadAffinity)
949
950 DEFINE_CLASS(DEBUGGER,              Diagnostics,            Debugger)
951 DEFINE_METHOD(DEBUGGER,             BREAK_CAN_THROW,        BreakCanThrow,          SM_RetVoid)
952
953 DEFINE_CLASS(BUFFER,                System,                 Buffer)
954 DEFINE_METHOD(BUFFER,               MEMCPY_PTRBYTE_ARRBYTE, Memcpy,                 SM_PtrByte_Int_ArrByte_Int_Int_RetVoid)
955 DEFINE_METHOD(BUFFER,               MEMCPY,                 Memcpy,                 SM_PtrByte_PtrByte_Int_RetVoid)
956
957 #ifdef FEATURE_COMINTEROP
958 DEFINE_CLASS(WINDOWSRUNTIMEMARSHAL, WinRT,  WindowsRuntimeMarshal)
959 #ifdef FEATURE_COMINTEROP_WINRT_MANAGED_ACTIVATION
960 DEFINE_METHOD(WINDOWSRUNTIMEMARSHAL, GET_ACTIVATION_FACTORY_FOR_TYPE, GetActivationFactoryForType, SM_Type_RetIntPtr)
961 #endif // FEATURE_COMINTEROP_WINRT_MANAGED_ACTIVATION
962
963 DEFINE_CLASS(IACTIVATIONFACTORY,    WinRT,  IActivationFactory)
964 DEFINE_METHOD(IACTIVATIONFACTORY,   ACTIVATE_INSTANCE, ActivateInstance, IM_RetObj)
965 DEFINE_CLASS(ISTRINGABLEHELPER,     WinRT,  IStringableHelper)
966 DEFINE_METHOD(ISTRINGABLEHELPER,    TO_STRING, ToString, SM_Obj_RetStr)
967 #endif // FEATURE_COMINTEROP
968
969 DEFINE_CLASS(STUBHELPERS,           StubHelpers,            StubHelpers)
970 DEFINE_METHOD(STUBHELPERS,          IS_QCALL,               IsQCall,                    SM_IntPtr_RetBool)
971 DEFINE_METHOD(STUBHELPERS,          INIT_DECLARING_TYPE,    InitDeclaringType,          SM_IntPtr_RetVoid)
972 DEFINE_METHOD(STUBHELPERS,          GET_NDIRECT_TARGET,     GetNDirectTarget,           SM_IntPtr_RetIntPtr)
973 DEFINE_METHOD(STUBHELPERS,          GET_DELEGATE_TARGET,    GetDelegateTarget,          SM_Delegate_RefIntPtr_RetIntPtr)
974 #ifdef FEATURE_COMINTEROP
975 DEFINE_METHOD(STUBHELPERS,          GET_COM_HR_EXCEPTION_OBJECT,              GetCOMHRExceptionObject,            SM_Int_IntPtr_Obj_RetException)
976 DEFINE_METHOD(STUBHELPERS,          GET_COM_HR_EXCEPTION_OBJECT_WINRT,        GetCOMHRExceptionObject_WinRT,      SM_Int_IntPtr_Obj_RetException)
977 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW,                      GetCOMIPFromRCW,                    SM_Obj_IntPtr_RefIntPtr_RefBool_RetIntPtr)
978 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT,                GetCOMIPFromRCW_WinRT,              SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
979 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT_SHARED_GENERIC, GetCOMIPFromRCW_WinRTSharedGeneric, SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
980 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT_DELEGATE,       GetCOMIPFromRCW_WinRTDelegate,      SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
981 DEFINE_METHOD(STUBHELPERS,          SHOULD_CALL_WINRT_INTERFACE,              ShouldCallWinRTInterface,           SM_Obj_IntPtr_RetBool)
982 DEFINE_METHOD(STUBHELPERS,          STUB_REGISTER_RCW,                        StubRegisterRCW,                    SM_Obj_RetVoid)
983 DEFINE_METHOD(STUBHELPERS,          STUB_UNREGISTER_RCW,                      StubUnregisterRCW,                  SM_Obj_RetVoid)
984 DEFINE_METHOD(STUBHELPERS,          GET_WINRT_FACTORY_OBJECT,                 GetWinRTFactoryObject,              SM_IntPtr_RetObj)
985 DEFINE_METHOD(STUBHELPERS,          GET_DELEGATE_INVOKE_METHOD,               GetDelegateInvokeMethod,            SM_Delegate_RetIntPtr)
986 DEFINE_METHOD(STUBHELPERS,          GET_WINRT_FACTORY_RETURN_VALUE,           GetWinRTFactoryReturnValue,         SM_Obj_IntPtr_RetIntPtr)
987 DEFINE_METHOD(STUBHELPERS,          GET_OUTER_INSPECTABLE,                    GetOuterInspectable,                SM_Obj_IntPtr_RetIntPtr)
988 #ifdef MDA_SUPPORTED
989 DEFINE_METHOD(STUBHELPERS,          TRIGGER_EXCEPTION_SWALLOWED_MDA,          TriggerExceptionSwallowedMDA,       SM_Exception_IntPtr_RetException)
990 #endif // MDA_SUPPORTED
991 #endif // FEATURE_COMINTEROP
992 #if defined(MDA_SUPPORTED)
993 DEFINE_METHOD(STUBHELPERS,          CHECK_COLLECTED_DELEGATE_MDA, CheckCollectedDelegateMDA, SM_IntPtr_RetVoid)
994 #endif // MDA_SUPPORTED
995 DEFINE_METHOD(STUBHELPERS,          SET_LAST_ERROR,         SetLastError,               SM_RetVoid)
996 DEFINE_METHOD(STUBHELPERS,          CLEAR_LAST_ERROR,       ClearLastError,             SM_RetVoid)
997
998 DEFINE_METHOD(STUBHELPERS,          THROW_INTEROP_PARAM_EXCEPTION, ThrowInteropParamException,   SM_Int_Int_RetVoid)
999 DEFINE_METHOD(STUBHELPERS,          ADD_TO_CLEANUP_LIST_SAFEHANDLE,    AddToCleanupList,           SM_RefCleanupWorkListElement_SafeHandle_RetIntPtr)
1000 DEFINE_METHOD(STUBHELPERS,          ADD_TO_CLEANUP_LIST_DELEGATE,    AddToCleanupList,             SM_RefCleanupWorkListElement_Delegate_RetVoid)
1001 DEFINE_METHOD(STUBHELPERS,          DESTROY_CLEANUP_LIST,   DestroyCleanupList,         SM_RefCleanupWorkListElement_RetVoid)
1002 DEFINE_METHOD(STUBHELPERS,          GET_HR_EXCEPTION_OBJECT, GetHRExceptionObject,      SM_Int_RetException)
1003 DEFINE_METHOD(STUBHELPERS,          CREATE_CUSTOM_MARSHALER_HELPER, CreateCustomMarshalerHelper, SM_IntPtr_Int_IntPtr_RetIntPtr)
1004
1005 DEFINE_METHOD(STUBHELPERS,          CHECK_STRING_LENGTH,    CheckStringLength,          SM_Int_RetVoid)
1006
1007 DEFINE_METHOD(STUBHELPERS,          FMT_CLASS_UPDATE_NATIVE_INTERNAL,   FmtClassUpdateNativeInternal,   SM_Obj_PtrByte_RefCleanupWorkListElement_RetVoid)
1008 DEFINE_METHOD(STUBHELPERS,          FMT_CLASS_UPDATE_CLR_INTERNAL,      FmtClassUpdateCLRInternal,      SM_Obj_PtrByte_RetVoid)
1009 DEFINE_METHOD(STUBHELPERS,          LAYOUT_DESTROY_NATIVE_INTERNAL,     LayoutDestroyNativeInternal,    SM_PtrByte_IntPtr_RetVoid)
1010 DEFINE_METHOD(STUBHELPERS,          ALLOCATE_INTERNAL,                  AllocateInternal,               SM_IntPtr_RetObj)
1011 DEFINE_METHOD(STUBHELPERS,          STRLEN,                             strlen,                         SM_PtrSByt_RetInt)
1012 DEFINE_METHOD(STUBHELPERS,          MARSHAL_TO_MANAGED_VA_LIST_INTERNAL,MarshalToManagedVaListInternal, SM_IntPtr_IntPtr_RetVoid)
1013 DEFINE_METHOD(STUBHELPERS,          MARSHAL_TO_UNMANAGED_VA_LIST_INTERNAL,MarshalToUnmanagedVaListInternal,SM_IntPtr_UInt_IntPtr_RetVoid)
1014 DEFINE_METHOD(STUBHELPERS,          CALC_VA_LIST_SIZE,                  CalcVaListSize,                 SM_IntPtr_RetUInt)
1015 DEFINE_METHOD(STUBHELPERS,          VALIDATE_OBJECT,                    ValidateObject,                 SM_Obj_IntPtr_Obj_RetVoid)
1016 DEFINE_METHOD(STUBHELPERS,          VALIDATE_BYREF,                     ValidateByref,                  SM_IntPtr_IntPtr_Obj_RetVoid)
1017 DEFINE_METHOD(STUBHELPERS,          GET_STUB_CONTEXT,                   GetStubContext,                 SM_RetIntPtr)
1018 DEFINE_METHOD(STUBHELPERS,          LOG_PINNED_ARGUMENT,                LogPinnedArgument,              SM_IntPtr_IntPtr_RetVoid)
1019 #ifdef _TARGET_64BIT_
1020 DEFINE_METHOD(STUBHELPERS,          GET_STUB_CONTEXT_ADDR,              GetStubContextAddr,             SM_RetIntPtr)
1021 #endif // _TARGET_64BIT_
1022 #ifdef MDA_SUPPORTED
1023 DEFINE_METHOD(STUBHELPERS,          TRIGGER_GC_FOR_MDA,                 TriggerGCForMDA,                SM_RetVoid)
1024 #endif
1025 DEFINE_METHOD(STUBHELPERS,          SAFE_HANDLE_ADD_REF,    SafeHandleAddRef,           SM_SafeHandle_RefBool_RetIntPtr)
1026 DEFINE_METHOD(STUBHELPERS,          SAFE_HANDLE_RELEASE,    SafeHandleRelease,          SM_SafeHandle_RetVoid)
1027
1028 #ifdef PROFILING_SUPPORTED
1029 DEFINE_METHOD(STUBHELPERS,          PROFILER_BEGIN_TRANSITION_CALLBACK, ProfilerBeginTransitionCallback, SM_IntPtr_IntPtr_Obj_RetIntPtr)
1030 DEFINE_METHOD(STUBHELPERS,          PROFILER_END_TRANSITION_CALLBACK,   ProfilerEndTransitionCallback,   SM_IntPtr_IntPtr_RetVoid)
1031 #endif
1032
1033 #ifdef FEATURE_ARRAYSTUB_AS_IL
1034 DEFINE_METHOD(STUBHELPERS,          ARRAY_TYPE_CHECK,    ArrayTypeCheck,          SM_Obj_ArrObject_RetVoid)
1035 #endif
1036
1037 #ifdef FEATURE_MULTICASTSTUB_AS_IL
1038 DEFINE_METHOD(STUBHELPERS,          MULTICAST_DEBUGGER_TRACE_HELPER,    MulticastDebuggerTraceHelper,    SM_Obj_Int_RetVoid)
1039 #endif
1040
1041 DEFINE_CLASS(ANSICHARMARSHALER,     StubHelpers,            AnsiCharMarshaler)
1042 DEFINE_METHOD(ANSICHARMARSHALER,    CONVERT_TO_NATIVE,      ConvertToNative,            SM_Char_Bool_Bool_RetByte)
1043 DEFINE_METHOD(ANSICHARMARSHALER,    CONVERT_TO_MANAGED,     ConvertToManaged,           SM_Byte_RetChar)
1044 DEFINE_METHOD(ANSICHARMARSHALER,    DO_ANSI_CONVERSION,     DoAnsiConversion,           SM_Str_Bool_Bool_RefInt_RetArrByte)
1045
1046 DEFINE_CLASS(CSTRMARSHALER,         StubHelpers,            CSTRMarshaler)
1047 DEFINE_METHOD(CSTRMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_Int_Str_IntPtr_RetIntPtr)
1048 DEFINE_METHOD(CSTRMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1049 DEFINE_METHOD(CSTRMARSHALER,        CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1050
1051 DEFINE_CLASS(WSTRBUFFERMARSHALER,   StubHelpers,            WSTRBufferMarshaler)
1052 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_RetIntPtr)
1053 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1054 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1055
1056 DEFINE_CLASS(BSTRMARSHALER,         StubHelpers,            BSTRMarshaler)
1057 DEFINE_METHOD(BSTRMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_IntPtr_RetIntPtr)
1058 DEFINE_METHOD(BSTRMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1059 DEFINE_METHOD(BSTRMARSHALER,        CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1060
1061 DEFINE_CLASS(ANSIBSTRMARSHALER,     StubHelpers,            AnsiBSTRMarshaler)
1062 DEFINE_METHOD(ANSIBSTRMARSHALER,    CONVERT_TO_NATIVE,      ConvertToNative,            SM_Int_Str_RetIntPtr)
1063 DEFINE_METHOD(ANSIBSTRMARSHALER,    CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1064 DEFINE_METHOD(ANSIBSTRMARSHALER,    CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1065
1066 #ifdef FEATURE_COMINTEROP
1067 DEFINE_CLASS(OBJECTMARSHALER,       StubHelpers,            ObjectMarshaler)
1068 DEFINE_METHOD(OBJECTMARSHALER,      CONVERT_TO_NATIVE,      ConvertToNative,            SM_ObjIntPtr_RetVoid)
1069 DEFINE_METHOD(OBJECTMARSHALER,      CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetObj)
1070 DEFINE_METHOD(OBJECTMARSHALER,      CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1071
1072 DEFINE_CLASS(HSTRINGMARSHALER,      StubHelpers,            HStringMarshaler)
1073 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_NATIVE_REFERENCE,    ConvertToNativeReference,   SM_Str_PtrHStringHeader_RetIntPtr)
1074 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_NATIVE,              ConvertToNative,            SM_Str_RetIntPtr)
1075 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_MANAGED,             ConvertToManaged,           SM_IntPtr_RetStr)
1076 DEFINE_METHOD(HSTRINGMARSHALER,     CLEAR_NATIVE,                   ClearNative,                SM_IntPtr_RetVoid)
1077
1078 DEFINE_CLASS(URIMARSHALER,          StubHelpers,                UriMarshaler)
1079 DEFINE_METHOD(URIMARSHALER,         GET_RAWURI_FROM_NATIVE,     GetRawUriFromNative,        SM_IntPtr_RetStr)
1080 DEFINE_METHOD(URIMARSHALER,         CREATE_NATIVE_URI_INSTANCE, CreateNativeUriInstance,    SM_Str_RetIntPtr)
1081
1082 DEFINE_CLASS(INTERFACEMARSHALER,    StubHelpers,            InterfaceMarshaler)
1083 DEFINE_METHOD(INTERFACEMARSHALER,   CONVERT_TO_NATIVE,      ConvertToNative,            SM_Obj_IntPtr_IntPtr_Int_RetIntPtr)
1084 DEFINE_METHOD(INTERFACEMARSHALER,   CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_IntPtr_IntPtr_Int_RetObj)
1085 DEFINE_METHOD(INTERFACEMARSHALER,   CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1086
1087
1088 DEFINE_CLASS(MNGD_SAFE_ARRAY_MARSHALER,  StubHelpers,                 MngdSafeArrayMarshaler)
1089 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_Int_Int_RetVoid)
1090 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,     ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1091 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_Obj_RetVoid)
1092 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,    ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_RetVoid)
1093 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1094 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_RefObj_IntPtr_RetVoid)
1095
1096 DEFINE_CLASS(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, StubHelpers,         MngdHiddenLengthArrayMarshaler)
1097 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CREATE_MARSHALER,                 CreateMarshaler,            SM_IntPtr_IntPtr_IntPtr_UShrt_RetVoid)
1098 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,         ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_Int_RetVoid)
1099 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED,      ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1100 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,          ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1101 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,       ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1102 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS,            ClearNativeContents,        SM_IntPtr_IntPtr_Int_RetVoid)
1103 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS_TYPE,       ClearNativeContents_Type,   NoSig)
1104
1105 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_DATETIME,     ConvertContentsToManaged_DateTime,     NoSig)
1106 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_TYPE,         ConvertContentsToManaged_Type,         NoSig)
1107 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_EXCEPTION,    ConvertContentsToManaged_Exception,    NoSig)
1108 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_NULLABLE,     ConvertContentsToManaged_Nullable,     NoSig)
1109 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_KEYVALUEPAIR, ConvertContentsToManaged_KeyValuePair, NoSig)
1110
1111 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_DATETIME,     ConvertContentsToNative_DateTime,     NoSig)
1112 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_TYPE,         ConvertContentsToNative_Type,         NoSig)
1113 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_EXCEPTION,    ConvertContentsToNative_Exception,    NoSig)
1114 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_NULLABLE,     ConvertContentsToNative_Nullable,     NoSig)
1115 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_KEYVALUEPAIR, ConvertContentsToNative_KeyValuePair, NoSig)
1116
1117 DEFINE_CLASS(DATETIMEOFFSETMARSHALER,     StubHelpers,           DateTimeOffsetMarshaler)
1118 DEFINE_METHOD(DATETIMEOFFSETMARSHALER,    CONVERT_TO_NATIVE,     ConvertToNative,     SM_RefDateTimeOffset_RefDateTimeNative_RetVoid)
1119 DEFINE_METHOD(DATETIMEOFFSETMARSHALER,    CONVERT_TO_MANAGED,    ConvertToManaged,    SM_RefDateTimeOffset_RefDateTimeNative_RetVoid)
1120
1121 DEFINE_CLASS(NULLABLEMARSHALER,           StubHelpers,           NullableMarshaler)
1122 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_NATIVE,     ConvertToNative,     NoSig)
1123 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_MANAGED,    ConvertToManaged,    NoSig)
1124 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_MANAGED_RET_VOID,    ConvertToManagedRetVoid,    NoSig)
1125
1126 DEFINE_CLASS(SYSTEMTYPEMARSHALER,   StubHelpers,        SystemTypeMarshaler)
1127
1128 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CONVERT_TO_NATIVE,  ConvertToNative,    SM_Type_PtrTypeName_RetVoid)
1129 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CONVERT_TO_MANAGED, ConvertToManaged,   SM_PtrTypeName_RefType_RetVoid)
1130 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CLEAR_NATIVE,       ClearNative,        SM_PtrTypeName_RetVoid)
1131
1132 DEFINE_CLASS(KEYVALUEPAIRMARSHALER,  StubHelpers,            KeyValuePairMarshaler)
1133 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_NATIVE,      ConvertToNative,     NoSig)
1134 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_MANAGED,     ConvertToManaged,    NoSig)
1135 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_MANAGED_BOX, ConvertToManagedBox, NoSig)
1136
1137 DEFINE_CLASS(HRESULTEXCEPTIONMARSHALER,   StubHelpers,           HResultExceptionMarshaler)
1138 DEFINE_METHOD(HRESULTEXCEPTIONMARSHALER,  CONVERT_TO_NATIVE,     ConvertToNative,     SM_Exception_RetInt)
1139 DEFINE_METHOD(HRESULTEXCEPTIONMARSHALER,  CONVERT_TO_MANAGED,    ConvertToManaged,    SM_Int_RetException)
1140
1141 #endif // FEATURE_COMINTEROP
1142
1143 DEFINE_CLASS(VALUECLASSMARSHALER,   StubHelpers,            ValueClassMarshaler)
1144 DEFINE_METHOD(VALUECLASSMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_IntPtrIntPtrIntPtr_RefCleanupWorkListElement_RetVoid)
1145 DEFINE_METHOD(VALUECLASSMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtrIntPtrIntPtr_RetVoid)
1146 DEFINE_METHOD(VALUECLASSMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_IntPtr_RetVoid)
1147
1148 DEFINE_CLASS(DATEMARSHALER,         StubHelpers,            DateMarshaler)
1149 DEFINE_METHOD(DATEMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_DateTime_RetDbl)
1150 DEFINE_METHOD(DATEMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_Dbl_RetLong)
1151
1152 DEFINE_CLASS(VBBYVALSTRMARSHALER,   StubHelpers,            VBByValStrMarshaler)
1153 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_Bool_Bool_RefInt_RetIntPtr)
1154 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_Int_RetStr)
1155 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1156
1157 DEFINE_CLASS(MNGD_NATIVE_ARRAY_MARSHALER,  StubHelpers,                 MngdNativeArrayMarshaler)
1158 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_Int_RetVoid)
1159 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,     ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1160 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1161 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,    ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_Int_RetVoid)
1162 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1163 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_IntPtr_Int_RetVoid)
1164 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS,       ClearNativeContents,        SM_IntPtr_IntPtr_Int_RetVoid)
1165
1166 DEFINE_CLASS(MNGD_REF_CUSTOM_MARSHALER,  StubHelpers,                 MngdRefCustomMarshaler)
1167 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_RetVoid)
1168 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1169 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1170 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_RefObj_IntPtr_RetVoid)
1171 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CLEAR_MANAGED,               ClearManaged,               SM_IntPtr_RefObj_IntPtr_RetVoid)
1172
1173 DEFINE_CLASS(ASANY_MARSHALER,            StubHelpers,                 AsAnyMarshaler)
1174 DEFINE_METHOD(ASANY_MARSHALER,           CTOR,                        .ctor,                      IM_IntPtr_RetVoid)
1175 DEFINE_METHOD(ASANY_MARSHALER,           CONVERT_TO_NATIVE,           ConvertToNative,            IM_Obj_Int_RetIntPtr)
1176 DEFINE_METHOD(ASANY_MARSHALER,           CONVERT_TO_MANAGED,          ConvertToManaged,           IM_Obj_IntPtr_RetVoid)
1177 DEFINE_METHOD(ASANY_MARSHALER,           CLEAR_NATIVE,                ClearNative,                IM_IntPtr_RetVoid)
1178
1179 DEFINE_CLASS(NATIVEVARIANT,         StubHelpers,            NativeVariant)
1180
1181 DEFINE_CLASS(WIN32NATIVE,           Win32,                  Win32Native)
1182 DEFINE_METHOD(WIN32NATIVE,          COTASKMEMALLOC,         CoTaskMemAlloc,         SM_UIntPtr_RetIntPtr)
1183 DEFINE_METHOD(WIN32NATIVE,          COTASKMEMFREE,          CoTaskMemFree,          SM_IntPtr_RetVoid)
1184
1185 #ifdef FEATURE_COMINTEROP
1186 DEFINE_CLASS(IITERABLE,              WinRT,                 IIterable`1)
1187 DEFINE_CLASS(IVECTOR,                WinRT,                 IVector`1)
1188 DEFINE_CLASS(IMAP,                   WinRT,                 IMap`2)
1189 DEFINE_CLASS(IKEYVALUEPAIR,          WinRT,                 IKeyValuePair`2)
1190 DEFINE_CLASS(IVECTORVIEW,            WinRT,                 IVectorView`1)
1191 DEFINE_CLASS(IMAPVIEW,               WinRT,                 IMapView`2)
1192 DEFINE_CLASS(IITERATOR,              WinRT,                 IIterator`1)
1193 DEFINE_CLASS(IPROPERTYVALUE,         WinRT,                 IPropertyValue)
1194 DEFINE_CLASS(IBINDABLEITERABLE,      WinRT,                 IBindableIterable)
1195 DEFINE_CLASS(IBINDABLEITERATOR,      WinRT,                 IBindableIterator)
1196 DEFINE_CLASS(IBINDABLEVECTOR,        WinRT,                 IBindableVector)
1197 DEFINE_CLASS(ICLOSABLE,             WinRT,                  IClosable)
1198
1199 DEFINE_CLASS(GET_ENUMERATOR_DELEGATE,        WinRT,                            GetEnumerator_Delegate`1)
1200 DEFINE_CLASS(ITERABLE_TO_ENUMERABLE_ADAPTER, WinRT,                            IterableToEnumerableAdapter)
1201 DEFINE_METHOD(ITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_STUB,             GetEnumerator_Stub, NoSig)
1202 DEFINE_METHOD(ITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_VARIANCE_STUB,    GetEnumerator_Variance_Stub, NoSig)
1203
1204 DEFINE_CLASS(VECTOR_TO_LIST_ADAPTER,        WinRT,                   VectorToListAdapter)
1205 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEXER_GET,             Indexer_Get, NoSig)
1206 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEXER_SET,             Indexer_Set, NoSig)
1207 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEX_OF,                IndexOf, NoSig)
1208 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INSERT,                  Insert, NoSig)
1209 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       REMOVE_AT,               RemoveAt, NoSig)
1210
1211 DEFINE_CLASS(MAP_TO_DICTIONARY_ADAPTER,     WinRT,                   MapToDictionaryAdapter)
1212 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    INDEXER_GET,             Indexer_Get, NoSig)
1213 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    INDEXER_SET,             Indexer_Set, NoSig)
1214 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    KEYS,                    Keys, NoSig)
1215 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    VALUES,                  Values, NoSig)
1216 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    CONTAINS_KEY,            ContainsKey, NoSig)
1217 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    ADD,                     Add, NoSig)
1218 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    REMOVE,                  Remove, NoSig)
1219 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    TRY_GET_VALUE,           TryGetValue, NoSig)
1220
1221 DEFINE_CLASS(VECTOR_TO_COLLECTION_ADAPTER,  WinRT,                   VectorToCollectionAdapter)
1222 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, COUNT,                   Count, NoSig)
1223 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, IS_READ_ONLY,            IsReadOnly, NoSig)
1224 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, ADD,                     Add, NoSig)
1225 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, CLEAR,                   Clear, NoSig)
1226 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, CONTAINS,                Contains, NoSig)
1227 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, COPY_TO,                 CopyTo, NoSig)
1228 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, REMOVE,                  Remove, NoSig)
1229
1230 DEFINE_CLASS(MAP_TO_COLLECTION_ADAPTER,     WinRT,                   MapToCollectionAdapter)
1231 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    COUNT,                   Count, NoSig)
1232 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    IS_READ_ONLY,            IsReadOnly, NoSig)
1233 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    ADD,                     Add, NoSig)
1234 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    CLEAR,                   Clear, NoSig)
1235 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    CONTAINS,                Contains, NoSig)
1236 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    COPY_TO,                 CopyTo, NoSig)
1237 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    REMOVE,                  Remove, NoSig)
1238
1239 DEFINE_CLASS(BINDABLEITERABLE_TO_ENUMERABLE_ADAPTER, WinRT,          BindableIterableToEnumerableAdapter)
1240 DEFINE_METHOD(BINDABLEITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_STUB, GetEnumerator_Stub, NoSig)
1241
1242 DEFINE_CLASS(BINDABLEVECTOR_TO_LIST_ADAPTER,       WinRT,            BindableVectorToListAdapter)
1243 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEXER_GET,      Indexer_Get, NoSig)
1244 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEXER_SET,      Indexer_Set, NoSig)
1245 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      ADD,              Add, NoSig)
1246 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      CONTAINS,         Contains, NoSig)
1247 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      CLEAR,            Clear, NoSig)
1248 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      IS_READ_ONLY,     IsReadOnly, NoSig)
1249 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      IS_FIXED_SIZE,    IsFixedSize, NoSig)
1250 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEX_OF,         IndexOf, NoSig)
1251 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INSERT,           Insert, NoSig)
1252 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      REMOVE,           Remove, NoSig)
1253 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      REMOVE_AT,        RemoveAt, NoSig)
1254
1255 DEFINE_CLASS(BINDABLEVECTOR_TO_COLLECTION_ADAPTER,  WinRT,           BindableVectorToCollectionAdapter)
1256 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, COPY_TO,         CopyTo, NoSig)
1257 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, COUNT,           Count, NoSig)
1258 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, SYNC_ROOT,       SyncRoot, NoSig)
1259 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, IS_SYNCHRONIZED, IsSynchronized, NoSig)
1260
1261 DEFINE_CLASS(ENUMERABLE_TO_ITERABLE_ADAPTER, WinRT,                  EnumerableToIterableAdapter)
1262 DEFINE_METHOD(ENUMERABLE_TO_ITERABLE_ADAPTER, FIRST_STUB,            First_Stub, NoSig)
1263
1264 DEFINE_CLASS(LIST_TO_VECTOR_ADAPTER,       WinRT,                    ListToVectorAdapter)
1265 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_AT,                   GetAt, NoSig)
1266 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      SIZE,                     Size, NoSig)
1267 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_VIEW,                 GetView, NoSig)
1268 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      INDEX_OF,                 IndexOf, NoSig)
1269 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      SET_AT,                   SetAt, NoSig)
1270 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      INSERT_AT,                InsertAt, NoSig)
1271 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REMOVE_AT,                RemoveAt, NoSig)
1272 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      APPEND,                   Append, NoSig)
1273 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REMOVE_AT_END,            RemoveAtEnd, NoSig)
1274 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      CLEAR,                    Clear, NoSig)
1275 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_MANY,                 GetMany, NoSig)
1276 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REPLACE_ALL,              ReplaceAll, NoSig)
1277
1278 DEFINE_CLASS(DICTIONARY_TO_MAP_ADAPTER,    WinRT,                    DictionaryToMapAdapter)
1279 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   LOOKUP,                   Lookup, NoSig)
1280 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   SIZE,                     Size, NoSig)
1281 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   HAS_KEY,                  HasKey, NoSig)
1282 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   GET_VIEW,                 GetView, NoSig)
1283 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   INSERT,                   Insert, NoSig)
1284 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   REMOVE,                   Remove, NoSig)
1285 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   CLEAR,                    Clear, NoSig)
1286
1287 DEFINE_CLASS(IVECTORVIEW_TO_IREADONLYCOLLECTION_ADAPTER,  WinRT,     VectorViewToReadOnlyCollectionAdapter)
1288 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYCOLLECTION_ADAPTER, COUNT,     Count, NoSig)
1289
1290 DEFINE_CLASS(IMAPVIEW_TO_IREADONLYCOLLECTION_ADAPTER,  WinRT,        MapViewToReadOnlyCollectionAdapter)
1291 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYCOLLECTION_ADAPTER, COUNT,        Count, NoSig)
1292
1293 DEFINE_CLASS(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,     WinRT,        IReadOnlyListToIVectorViewAdapter)
1294 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    GETAT,        GetAt, NoSig)
1295 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    GETMANY,      GetMany, NoSig)
1296 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    INDEXOF,      IndexOf, NoSig)
1297 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    SIZE,         Size, NoSig)
1298
1299 DEFINE_CLASS(INDEXER_GET_DELEGATE,                     WinRT,        Indexer_Get_Delegate`1)
1300 DEFINE_CLASS(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,     WinRT,        IVectorViewToIReadOnlyListAdapter)
1301 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,    INDEXER_GET,  Indexer_Get, NoSig)
1302 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,    INDEXER_GET_VARIANCE, Indexer_Get_Variance, NoSig)
1303
1304 DEFINE_CLASS(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER,  WinRT,        IReadOnlyDictionaryToIMapViewAdapter)
1305 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, HASKEY,       HasKey, NoSig)
1306 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, LOOKUP,       Lookup, NoSig)
1307 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, SIZE,         Size, NoSig)
1308 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, SPLIT,        Split, NoSig)
1309
1310 DEFINE_CLASS(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER,  WinRT,        IMapViewToIReadOnlyDictionaryAdapter)
1311 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, CONTAINSKEY,  ContainsKey, NoSig)
1312 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, INDEXER_GET,  Indexer_Get, NoSig)
1313 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, TRYGETVALUE,  TryGetValue, NoSig)
1314 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, KEYS,         Keys, NoSig)
1315 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, VALUES,       Values, NoSig)
1316
1317 DEFINE_CLASS(ENUMERABLE_TO_BINDABLEITERABLE_ADAPTER,   WinRT,        EnumerableToBindableIterableAdapter)
1318 DEFINE_METHOD(ENUMERABLE_TO_BINDABLEITERABLE_ADAPTER,  FIRST_STUB,   First_Stub, NoSig)
1319
1320 DEFINE_CLASS(LIST_TO_BINDABLEVECTOR_ADAPTER,       WinRT,            ListToBindableVectorAdapter)
1321 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      GET_AT,           GetAt, NoSig)
1322 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      SIZE,             Size, NoSig)
1323 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      GET_VIEW,         GetView, NoSig)
1324 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      INDEX_OF,         IndexOf, NoSig)
1325 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      SET_AT,           SetAt, NoSig)
1326 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      INSERT_AT,        InsertAt, NoSig)
1327 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      REMOVE_AT,        RemoveAt, NoSig)
1328 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      APPEND,           Append, NoSig)
1329 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      REMOVE_AT_END,    RemoveAtEnd, NoSig)
1330 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      CLEAR,            Clear, NoSig)
1331
1332 DEFINE_CLASS(IDISPOSABLE_TO_ICLOSABLE_ADAPTER,     WinRT,            IDisposableToIClosableAdapter)
1333 DEFINE_METHOD(IDISPOSABLE_TO_ICLOSABLE_ADAPTER,    CLOSE,            Close, NoSig)
1334
1335 DEFINE_CLASS(ICLOSABLE_TO_IDISPOSABLE_ADAPTER,     WinRT,            IClosableToIDisposableAdapter)
1336 DEFINE_METHOD(ICLOSABLE_TO_IDISPOSABLE_ADAPTER,    DISPOSE,          Dispose, NoSig)
1337
1338 #endif // FEATURE_COMINTEROP
1339
1340 DEFINE_CLASS(SZARRAYHELPER,         System,                        SZArrayHelper)
1341 // Note: The order of methods here has to match order they are implemented on the interfaces in
1342 // IEnumerable`1
1343 DEFINE_METHOD(SZARRAYHELPER,        GETENUMERATOR,          GetEnumerator,              NoSig)
1344 // ICollection`1/IReadOnlyCollection`1
1345 DEFINE_METHOD(SZARRAYHELPER,        GET_COUNT,              get_Count,                  NoSig)
1346 DEFINE_METHOD(SZARRAYHELPER,        ISREADONLY,             get_IsReadOnly,             NoSig)
1347 DEFINE_METHOD(SZARRAYHELPER,        ADD,                    Add,                        NoSig)
1348 DEFINE_METHOD(SZARRAYHELPER,        CLEAR,                  Clear,                      NoSig)
1349 DEFINE_METHOD(SZARRAYHELPER,        CONTAINS,               Contains,                   NoSig)
1350 DEFINE_METHOD(SZARRAYHELPER,        COPYTO,                 CopyTo,                     NoSig)
1351 DEFINE_METHOD(SZARRAYHELPER,        REMOVE,                 Remove,                     NoSig)
1352 // IList`1/IReadOnlyList`1
1353 DEFINE_METHOD(SZARRAYHELPER,        GET_ITEM,               get_Item,                   NoSig)
1354 DEFINE_METHOD(SZARRAYHELPER,        SET_ITEM,               set_Item,                   NoSig)
1355 DEFINE_METHOD(SZARRAYHELPER,        INDEXOF,                IndexOf,                    NoSig)
1356 DEFINE_METHOD(SZARRAYHELPER,        INSERT,                 Insert,                     NoSig)
1357 DEFINE_METHOD(SZARRAYHELPER,        REMOVEAT,               RemoveAt,                   NoSig)
1358
1359 DEFINE_CLASS(IENUMERABLEGENERIC,    CollectionsGeneric,     IEnumerable`1)
1360 DEFINE_CLASS(IENUMERATORGENERIC,    CollectionsGeneric,     IEnumerator`1)
1361 DEFINE_CLASS(ICOLLECTIONGENERIC,    CollectionsGeneric,     ICollection`1)
1362 DEFINE_CLASS(ILISTGENERIC,          CollectionsGeneric,     IList`1)
1363 DEFINE_CLASS(IREADONLYCOLLECTIONGENERIC,CollectionsGeneric, IReadOnlyCollection`1)
1364 DEFINE_CLASS(IREADONLYLISTGENERIC,  CollectionsGeneric,     IReadOnlyList`1)
1365 DEFINE_CLASS(IREADONLYDICTIONARYGENERIC,CollectionsGeneric, IReadOnlyDictionary`2)
1366 DEFINE_CLASS(IDICTIONARYGENERIC,    CollectionsGeneric,     IDictionary`2)
1367 DEFINE_CLASS(KEYVALUEPAIRGENERIC,   CollectionsGeneric,     KeyValuePair`2)
1368
1369 DEFINE_CLASS(ICOMPARABLEGENERIC,    System,                 IComparable`1)
1370 DEFINE_CLASS(IEQUATABLEGENERIC,     System,                 IEquatable`1)
1371
1372 DEFINE_CLASS_U(Reflection,             LoaderAllocator,          LoaderAllocatorObject)
1373 DEFINE_FIELD_U(m_slots,                  LoaderAllocatorObject,      m_pSlots)
1374 DEFINE_FIELD_U(m_slotsUsed,              LoaderAllocatorObject,      m_slotsUsed)
1375 DEFINE_CLASS(LOADERALLOCATOR,           Reflection,             LoaderAllocator)
1376 DEFINE_METHOD(LOADERALLOCATOR,          CTOR,                   .ctor,                    IM_RetVoid)
1377
1378 DEFINE_CLASS_U(Reflection,             LoaderAllocatorScout,     LoaderAllocatorScoutObject)
1379 DEFINE_FIELD_U(m_nativeLoaderAllocator,  LoaderAllocatorScoutObject,      m_nativeLoaderAllocator)
1380 DEFINE_CLASS(LOADERALLOCATORSCOUT,      Reflection,             LoaderAllocatorScout)
1381
1382 DEFINE_CLASS(CONTRACTEXCEPTION,     CodeContracts,  ContractException)
1383
1384 DEFINE_CLASS_U(CodeContracts,       ContractException,          ContractExceptionObject)
1385 DEFINE_FIELD_U(_kind,               ContractExceptionObject,    _Kind)
1386 DEFINE_FIELD_U(_userMessage,        ContractExceptionObject,    _UserMessage)
1387 DEFINE_FIELD_U(_condition,          ContractExceptionObject,    _Condition)
1388
1389 #ifdef FEATURE_COMINTEROP
1390 DEFINE_CLASS(CAUSALITY_TRACE_LEVEL, WindowsFoundationDiag,   CausalityTraceLevel)
1391 DEFINE_CLASS(ASYNC_TRACING_EVENT_ARGS,       WindowsFoundationDiag,         TracingStatusChangedEventArgs)
1392 DEFINE_PROPERTY(ASYNC_TRACING_EVENT_ARGS, ENABLED, Enabled, Bool)
1393 DEFINE_PROPERTY(ASYNC_TRACING_EVENT_ARGS, TRACELEVEL, TraceLevel, CausalityTraceLevel)
1394 DEFINE_CLASS(IASYNC_TRACING_EVENT_ARGS,      WindowsFoundationDiag,         ITracingStatusChangedEventArgs)
1395 DEFINE_PROPERTY(IASYNC_TRACING_EVENT_ARGS, ENABLED, Enabled, Bool)
1396 DEFINE_PROPERTY(IASYNC_TRACING_EVENT_ARGS, TRACELEVEL, TraceLevel, CausalityTraceLevel)
1397 #endif // FEATURE_COMINTEROP
1398
1399 DEFINE_CLASS(MODULEBASE,        Reflection,         Module)
1400
1401 #ifdef FEATURE_ICASTABLE
1402 DEFINE_CLASS(ICASTABLE,         CompilerServices,   ICastable)
1403
1404 DEFINE_CLASS(ICASTABLEHELPERS,         CompilerServices,   ICastableHelpers)
1405 DEFINE_METHOD(ICASTABLEHELPERS,        ISINSTANCEOF,       IsInstanceOfInterface, SM_ICastable_RtType_RefException_RetBool)
1406 DEFINE_METHOD(ICASTABLEHELPERS,        GETIMPLTYPE,        GetImplType, SM_ICastable_RtType_RetRtType)
1407
1408 #endif // FEATURE_ICASTABLE
1409
1410 DEFINE_CLASS(CUTF8MARSHALER, StubHelpers, UTF8Marshaler)
1411 DEFINE_METHOD(CUTF8MARSHALER, CONVERT_TO_NATIVE, ConvertToNative, SM_Int_Str_IntPtr_RetIntPtr)
1412 DEFINE_METHOD(CUTF8MARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, SM_IntPtr_RetStr)
1413 DEFINE_METHOD(CUTF8MARSHALER, CLEAR_NATIVE, ClearNative, SM_IntPtr_RetVoid)
1414
1415 DEFINE_CLASS(UTF8BUFFERMARSHALER, StubHelpers, UTF8BufferMarshaler)
1416 DEFINE_METHOD(UTF8BUFFERMARSHALER, CONVERT_TO_NATIVE, ConvertToNative, NoSig)
1417 DEFINE_METHOD(UTF8BUFFERMARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, NoSig)
1418
1419 // Classes referenced in EqualityComparer<T>.Default optimization
1420
1421 DEFINE_CLASS(BYTE_EQUALITYCOMPARER, CollectionsGeneric, ByteEqualityComparer)
1422 DEFINE_CLASS(ENUM_EQUALITYCOMPARER, CollectionsGeneric, EnumEqualityComparer`1)
1423 DEFINE_CLASS(LONG_ENUM_EQUALITYCOMPARER, CollectionsGeneric, LongEnumEqualityComparer`1)
1424 DEFINE_CLASS(NULLABLE_EQUALITYCOMPARER, CollectionsGeneric, NullableEqualityComparer`1)
1425 DEFINE_CLASS(GENERIC_EQUALITYCOMPARER, CollectionsGeneric, GenericEqualityComparer`1)
1426 DEFINE_CLASS(OBJECT_EQUALITYCOMPARER, CollectionsGeneric, ObjectEqualityComparer`1)
1427
1428 DEFINE_CLASS(INATTRIBUTE, Interop, InAttribute)
1429
1430 #undef DEFINE_CLASS
1431 #undef DEFINE_METHOD
1432 #undef DEFINE_FIELD
1433 #undef DEFINE_CLASS_U
1434 #undef DEFINE_FIELD_U