1 #ifndef _MONO_CLI_OBJECT_H_
2 #define _MONO_CLI_OBJECT_H_
4 #include <mono/metadata/class.h>
5 #include <mono/metadata/threads-types.h>
9 MonoThreadsSync *synchronisation;
19 MonoArrayBounds *bounds;
20 /* we use double to ensure proper alignment on platforms that need it */
21 double vector [MONO_ZERO_LEN_ARRAY];
34 MonoString *help_link;
35 MonoString *class_name;
36 MonoString *stack_trace;
43 MonoObject *target_type;
49 typedef guchar MonoBoolean;
51 typedef void (*MonoRuntimeObjectInit) (MonoObject *o);
53 extern MonoRuntimeObjectInit mono_runtime_object_init;
55 #define mono_array_length(array) ((array)->bounds->length)
56 #define mono_array_addr(array,type,index) ( ((char*)(array)->vector) + sizeof (type) * (index) )
57 #define mono_array_addr_with_size(array,size,index) ( ((char*)(array)->vector) + (size) * (index) )
58 #define mono_array_get(array,type,index) ( *(type*)mono_array_addr ((array), type, (index)) )
59 #define mono_array_set(array,type,index,value) \
61 type *__p = (type *) mono_array_addr ((array), type, (index)); \
65 #define mono_string_chars(s) ((gushort*)(s)->c_str->vector)
68 mono_object_allocate (size_t size);
71 mono_object_new (MonoClass *klass);
74 mono_object_new_from_token (MonoImage *image, guint32 token);
77 mono_array_new (MonoClass *eclass, guint32 n);
80 mono_array_new_full (MonoClass *array_class, guint32 *lengths, guint32 *lower_bounds);
83 mono_string_new_utf16 (const guint16 *text, gint32 len);
86 mono_ldstr (MonoImage *image, guint32 index);
89 mono_string_is_interned (MonoString *str);
92 mono_string_intern (MonoString *str);
95 mono_string_new (const char *text);
98 mono_string_to_utf8 (MonoString *string_obj);
101 mono_string_to_utf16 (MonoString *string_obj);
104 mono_object_free (MonoObject *o);
107 mono_value_box (MonoClass *klass, gpointer val);
110 mono_object_clone (MonoObject *obj);
113 mono_object_isinst (MonoObject *obj, MonoClass *klass);
115 typedef void (*MonoExceptionFunc) (MonoException *ex);
118 mono_install_handler (MonoExceptionFunc func);
121 mono_raise_exception (MonoException *ex);
124 mono_install_runtime_object_init (MonoRuntimeObjectInit func);
127 get_exception_divide_by_zero (void);
130 get_exception_security (void);
133 get_exception_arithmetic (void);
136 get_exception_overflow (void);
139 get_exception_null_reference (void);
142 get_exception_execution_engine (void);
145 get_exception_invalid_cast (void);
148 get_exception_index_out_of_range (void);
151 get_exception_array_type_mismatch (void);
154 get_exception_missing_method (void);