Merge pull request #3936 from kumpera/monoclass_reorg2
[mono-project.git] / mono / metadata / sre-internals.h
blob5f902cd7cc086bf64cd4957f526171ee6ac29aab
1 /*
2 * Copyright 2016 Microsoft
3 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
4 */
5 #ifndef __MONO_METADATA_SRE_INTERNALS_H__
6 #define __MONO_METADATA_SRE_INTERNALS_H__
8 #include <mono/metadata/object-internals.h>
10 typedef struct _ArrayMethod ArrayMethod;
12 typedef struct {
13 guint32 owner;
14 MonoReflectionGenericParam *gparam;
15 } GenericParamTableEntry;
17 typedef struct {
18 MonoReflectionILGen *ilgen;
19 MonoReflectionType *rtype;
20 MonoArray *parameters;
21 MonoArray *generic_params;
22 MonoGenericContainer *generic_container;
23 MonoArray *pinfo;
24 MonoArray *opt_types;
25 guint32 attrs;
26 guint32 iattrs;
27 guint32 call_conv;
28 guint32 *table_idx; /* note: it's a pointer */
29 MonoArray *code;
30 MonoObject *type;
31 MonoString *name;
32 MonoBoolean init_locals;
33 MonoBoolean skip_visibility;
34 MonoArray *return_modreq;
35 MonoArray *return_modopt;
36 MonoArray *param_modreq;
37 MonoArray *param_modopt;
38 MonoArray *permissions;
39 MonoMethod *mhandle;
40 guint32 nrefs;
41 gpointer *refs;
42 /* for PInvoke */
43 int charset, extra_flags, native_cc;
44 MonoString *dll, *dllentry;
45 } ReflectionMethodBuilder;
47 void
48 mono_reflection_emit_init (void);
50 void
51 mono_reflection_dynimage_basic_init (MonoReflectionAssemblyBuilder *assemblyb);
53 gpointer
54 mono_image_g_malloc0 (MonoImage *image, guint size);
56 gboolean
57 mono_is_sre_type_builder (MonoClass *klass);
59 gboolean
60 mono_is_sre_generic_instance (MonoClass *klass);
62 gboolean
63 mono_is_sre_method_on_tb_inst (MonoClass *klass);
65 gboolean
66 mono_is_sre_ctor_builder (MonoClass *klass);
68 gboolean
69 mono_is_sre_ctor_on_tb_inst (MonoClass *klass);
71 gboolean
72 mono_is_sr_mono_cmethod (MonoClass *klass);
74 gboolean
75 mono_is_sr_mono_property (MonoClass *klass);
77 gpointer
78 mono_reflection_resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, MonoGenericContext *context, MonoError *error);
80 void
81 mono_sre_array_method_free (ArrayMethod *am);
83 void
84 mono_sre_generic_param_table_entry_free (GenericParamTableEntry *entry);
86 gboolean
87 mono_reflection_methodbuilder_from_method_builder (ReflectionMethodBuilder *rmb, MonoReflectionMethodBuilder *mb,
88 MonoError *error);
89 gboolean
90 mono_reflection_methodbuilder_from_ctor_builder (ReflectionMethodBuilder *rmb, MonoReflectionCtorBuilder *mb,
91 MonoError *error);
93 guint32
94 mono_reflection_resolution_scope_from_image (MonoDynamicImage *assembly, MonoImage *image);
96 guint32 mono_reflection_method_count_clauses (MonoReflectionILGen *ilgen);
99 /* sre-encode */
101 guint32
102 mono_dynimage_encode_field_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *fb, MonoError *error);
104 guint32
105 mono_dynimage_encode_constant (MonoDynamicImage *assembly, MonoObject *val, MonoTypeEnum *ret_type);
107 guint32
108 mono_dynimage_encode_locals (MonoDynamicImage *assembly, MonoReflectionILGen *ilgen, MonoError *error);
110 guint32
111 mono_dynimage_encode_fieldref_signature (MonoDynamicImage *assembly, MonoImage *field_image, MonoType *type);
113 guint32
114 mono_dynimage_encode_method_signature (MonoDynamicImage *assembly, MonoMethodSignature *sig);
116 guint32
117 mono_dynimage_encode_method_builder_signature (MonoDynamicImage *assembly, ReflectionMethodBuilder *mb,
118 MonoError *error);
120 guint32
121 mono_dynimage_encode_generic_method_sig (MonoDynamicImage *assembly, MonoGenericContext *context);
123 guint32
124 mono_dynimage_encode_typedef_or_ref_full (MonoDynamicImage *assembly, MonoType *type, gboolean try_typespec);
126 guint32
127 mono_dynimage_encode_reflection_sighelper (MonoDynamicImage *assembly, MonoReflectionSigHelper *helper,
128 MonoError *error);
130 /* sre-encode, without DISABLE_REFLECTION_EMIT_SAVE (o.w. g_assert_not_reached ()) */
132 guint32
133 mono_dynimage_save_encode_marshal_blob (MonoDynamicImage *assembly, MonoReflectionMarshal *minfo, MonoError *error);
135 guint32
136 mono_dynimage_save_encode_property_signature (MonoDynamicImage *assembly, MonoReflectionPropertyBuilder *fb, MonoError *error);
138 #endif /* __MONO_METADATA_SRE_INTERNALS_H__ */