3 * Copyright 2014 Xamarin Inc
4 * Copyright 2016 Microsoft
5 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
7 #ifndef __MONO_METADATA_REFLECTION_INTERNALS_H__
8 #define __MONO_METADATA_REFLECTION_INTERNALS_H__
10 #include <mono/metadata/object-internals.h>
11 #include <mono/metadata/reflection.h>
12 #include <mono/metadata/class-internals.h>
13 #include <mono/utils/mono-compiler.h>
14 #include <mono/utils/mono-error.h>
16 /* Safely access System.Reflection.Assembly from native code */
17 TYPED_HANDLE_DECL (MonoReflectionAssembly
)
19 /* Safely access System.Reflection.Emit.TypeBuilder from native code */
20 TYPED_HANDLE_DECL (MonoReflectionTypeBuilder
)
22 MonoReflectionAssemblyHandle
23 mono_domain_try_type_resolve_name (MonoDomain
*domain
, MonoStringHandle name
, MonoError
*error
);
25 MonoReflectionAssemblyHandle
26 mono_domain_try_type_resolve_typebuilder (MonoDomain
*domain
, MonoReflectionTypeBuilderHandle typebuilder
, MonoError
*error
);
28 MonoReflectionTypeBuilderHandle
29 mono_class_get_ref_info (MonoClass
*klass
);
32 mono_reflection_parse_type_checked (char *name
, MonoTypeNameParse
*info
, MonoError
*error
);
35 mono_reflection_is_usertype (MonoReflectionTypeHandle ref
);
38 mono_reflection_type_resolve_user_types (MonoReflectionType
*type
, MonoError
*error
);
41 mono_reflection_type_handle_mono_type (MonoReflectionTypeHandle ref_type
, MonoError
*error
);
44 mono_reflection_get_type_checked (MonoImage
*rootimage
, MonoImage
* image
, MonoTypeNameParse
*info
, gboolean ignorecase
, gboolean search_mscorlib
, gboolean
*type_resolve
, MonoError
*error
);
47 mono_reflection_type_from_name_checked (char *name
, MonoImage
*image
, MonoError
*error
);
50 mono_reflection_get_token_checked (MonoObjectHandle obj
, MonoError
*error
);
53 mono_custom_attrs_get_attr_checked (MonoCustomAttrInfo
*ainfo
, MonoClass
*attr_klass
, MonoError
*error
);
56 mono_reflection_get_custom_attrs_info_checked (MonoObjectHandle obj
, MonoError
*error
);
59 mono_reflection_get_custom_attrs_data_checked (MonoObjectHandle obj
, MonoError
*error
);
62 mono_reflection_get_custom_attrs_by_type_handle (MonoObjectHandle obj
, MonoClass
*attr_klass
, MonoError
*error
);
65 mono_reflection_get_custom_attrs_blob_checked (MonoReflectionAssembly
*assembly
, MonoObject
*ctor
, MonoArray
*ctorArgs
, MonoArray
*properties
, MonoArray
*propValues
, MonoArray
*fields
, MonoArray
* fieldValues
, MonoError
*error
);
68 mono_custom_attrs_from_index_checked (MonoImage
*image
, uint32_t idx
, gboolean ignore_missing
, MonoError
*error
);
70 mono_custom_attrs_from_method_checked (MonoMethod
*method
, MonoError
*error
);
72 mono_custom_attrs_from_class_checked (MonoClass
*klass
, MonoError
*error
);
74 mono_custom_attrs_from_assembly_checked (MonoAssembly
*assembly
, gboolean ignore_missing
, MonoError
*error
);
76 mono_custom_attrs_from_property_checked (MonoClass
*klass
, MonoProperty
*property
, MonoError
*error
);
78 mono_custom_attrs_from_event_checked (MonoClass
*klass
, MonoEvent
*event
, MonoError
*error
);
80 mono_custom_attrs_from_field_checked (MonoClass
*klass
, MonoClassField
*field
, MonoError
*error
);
82 mono_custom_attrs_from_param_checked (MonoMethod
*method
, uint32_t param
, MonoError
*error
);
86 mono_identifier_unescape_type_name_chars (char* identifier
);
89 mono_find_dynamic_image_owner (void *ptr
);
91 MonoReflectionAssemblyHandle
92 mono_assembly_get_object_handle (MonoDomain
*domain
, MonoAssembly
*assembly
, MonoError
*error
);
95 mono_type_get_object_checked (MonoDomain
*domain
, MonoType
*type
, MonoError
*error
);
97 MonoReflectionTypeHandle
98 mono_type_get_object_handle (MonoDomain
*domain
, MonoType
*type
, MonoError
*error
);
101 mono_field_get_object_checked (MonoDomain
*domain
, MonoClass
*klass
, MonoClassField
*field
, MonoError
*error
);
103 MonoReflectionFieldHandle
104 mono_field_get_object_handle (MonoDomain
*domain
, MonoClass
*klass
, MonoClassField
*field
, MonoError
*error
);
106 MonoReflectionMethod
*
107 mono_method_get_object_checked (MonoDomain
*domain
, MonoMethod
*method
, MonoClass
*refclass
, MonoError
*error
);
109 MonoReflectionMethodHandle
110 mono_method_get_object_handle (MonoDomain
*domain
, MonoMethod
*method
, MonoClass
*refclass
, MonoError
*error
);
112 MonoReflectionProperty
*
113 mono_property_get_object_checked (MonoDomain
*domain
, MonoClass
*klass
, MonoProperty
*property
, MonoError
*error
);
115 MonoReflectionPropertyHandle
116 mono_property_get_object_handle (MonoDomain
*domain
, MonoClass
*klass
, MonoProperty
*property
, MonoError
*error
);
118 MonoReflectionEventHandle
119 mono_event_get_object_handle (MonoDomain
*domain
, MonoClass
*klass
, MonoEvent
*event
, MonoError
*error
);
121 MonoReflectionModuleHandle
122 mono_module_get_object_handle (MonoDomain
*domain
, MonoImage
*image
, MonoError
*error
);
124 MonoReflectionModuleHandle
125 mono_module_file_get_object_handle (MonoDomain
*domain
, MonoImage
*image
, int table_index
, MonoError
*error
);
127 MonoReflectionMethodBodyHandle
128 mono_method_body_get_object_handle (MonoDomain
*domain
, MonoMethod
*method
, MonoError
*error
);
131 mono_class_from_mono_type_handle (MonoReflectionTypeHandle h
);
134 mono_runtime_get_caller_no_system_or_reflection (void);
137 mono_runtime_get_caller_from_stack_mark (MonoStackCrawlMark
*stack_mark
);
140 mono_reflection_get_param_info_member_and_pos (MonoReflectionParameterHandle p
, MonoObjectHandle member_impl
, int *out_position
);
142 #endif /* __MONO_METADATA_REFLECTION_INTERNALS_H__ */