Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / metadata / object.h
index a80678780efd3cb525008fb2514b5cc95cd7a948..388e079ad8251b98337051b27dd047e30d1d32d7 100644 (file)
@@ -61,6 +61,11 @@ typedef struct {
        MonoThreadsSync *synchronisation;
 } MonoObject;
 
+typedef struct {
+       MonoObject obj;
+       MonoObject *identity;
+} MonoMarshalByRefObject;
+
 typedef struct {
        guint32 length;
        guint32 lower_bound;
@@ -129,7 +134,7 @@ typedef struct {
 } MonoAsyncResult;
 
 typedef struct {
-       MonoObject   object;
+       MonoMarshalByRefObject object;
        gpointer     handle;
        MonoBoolean  disposed;
 } MonoWaitHandle;
@@ -137,6 +142,8 @@ typedef struct {
 typedef struct {
        MonoObject  object;
        MonoReflectionType *class_to_proxy;     
+       MonoObject *context;
+       MonoObject *unwrapped_server;
 } MonoRealProxy;
 
 typedef struct {
@@ -166,8 +173,34 @@ typedef struct {
        gint32 column;
 } MonoStackFrame;
 
+typedef struct {
+       MonoObject  obj;
+       HANDLE      handle;
+       MonoObject *culture_info;
+       MonoBoolean threadpool_thread;
+       guint32     state;
+       MonoException *abort_exc;
+       MonoObject *abort_state;
+       guint32 tid;
+       HANDLE      start_notify;
+       gpointer stack_ptr;
+       gpointer *static_data;
+} MonoThread;
+
+typedef struct {
+       MonoString *name;
+       MonoReflectionType *type;
+       MonoObject *value;
+} MonoSerializationEntry;
+
+typedef struct {
+       guint32 state;
+       MonoObject *additional;
+} MonoStreamingContext;
+
 typedef MonoObject* (*MonoInvokeFunc)        (MonoMethod *method, void *obj, void **params, MonoObject **exc);
 typedef gpointer    (*MonoCompileFunc)       (MonoMethod *method);
+typedef void       (*MonoMainThreadFunc)    (gpointer user_data);
 
 #define mono_object_class(obj) (((MonoObject*)(obj))->vtable->klass)
 #define mono_object_domain(obj) (((MonoObject*)(obj))->vtable->domain)
@@ -185,8 +218,6 @@ typedef gpointer    (*MonoCompileFunc)       (MonoMethod *method);
 #define mono_string_chars(s) ((gunichar2*)(s)->chars)
 #define mono_string_length(s) ((s)->length)
 
-extern MonoMethod *mono_start_method;
-
 void *
 mono_object_allocate        (size_t size);
 
@@ -196,6 +227,9 @@ mono_object_new             (MonoDomain *domain, MonoClass *klass);
 MonoObject *
 mono_object_new_specific    (MonoVTable *vtable);
 
+MonoObject *
+mono_object_new_alloc_specific (MonoVTable *vtable);
+
 MonoObject *
 mono_object_new_from_token  (MonoDomain *domain, MonoImage *image, guint32 token);
 
@@ -216,7 +250,7 @@ MonoString*
 mono_string_new_utf16       (MonoDomain *domain, const guint16 *text, gint32 len);
 
 MonoString*
-mono_string_new_size           (MonoDomain *domain, gint32 len);
+mono_string_new_size       (MonoDomain *domain, gint32 len);
 
 MonoString*
 mono_ldstr                  (MonoDomain *domain, MonoImage *image, guint32 str_index);
@@ -242,6 +276,9 @@ mono_string_to_utf8         (MonoString *string_obj);
 gunichar2 *
 mono_string_to_utf16        (MonoString *string_obj);
 
+MonoString *
+mono_string_from_utf16      (gunichar2 *data);
+
 void       
 mono_object_free            (MonoObject *o);
 
@@ -263,10 +300,10 @@ void
 mono_raise_exception        (MonoException *ex);
 
 void
-mono_runtime_object_init    (MonoObject *this);
+mono_runtime_object_init    (MonoObject *this_obj);
 
 void
-mono_runtime_class_init     (MonoClass *klass);
+mono_runtime_class_init     (MonoVTable *vtable);
 
 void        
 mono_install_runtime_invoke (MonoInvokeFunc func);
@@ -274,6 +311,9 @@ mono_install_runtime_invoke (MonoInvokeFunc func);
 void        
 mono_install_compile_method (MonoCompileFunc func);
 
+MonoMethod*
+mono_object_get_virtual_method (MonoObject *obj, MonoMethod *method);
+
 MonoObject*
 mono_runtime_invoke         (MonoMethod *method, void *obj, void **params,
                             MonoObject **exc);
@@ -292,6 +332,11 @@ mono_runtime_invoke_array   (MonoMethod *method, void *obj, MonoArray *params,
 MonoArray*
 mono_runtime_get_main_args  (void);
 
+void
+mono_runtime_exec_managed_code (MonoDomain *domain,
+                               MonoMainThreadFunc main_func,
+                               gpointer main_args);
+
 int
 mono_runtime_run_main       (MonoMethod *method, int argc, char* argv[], 
                             MonoObject **exc);
@@ -308,7 +353,7 @@ MonoWaitHandle *
 mono_wait_handle_new        (MonoDomain *domain, HANDLE handle);
 
 void
-mono_message_init           (MonoDomain *domain, MonoMethodMessage *this, 
+mono_message_init           (MonoDomain *domain, MonoMethodMessage *this_obj
                             MonoReflectionMethod *method, MonoArray *out_args);
 
 MonoObject *
@@ -324,10 +369,16 @@ mono_method_call_message_new (MonoMethod *method, gpointer *params, MonoMethod *
                              MonoDelegate **cb, MonoObject **state);
 
 gpointer
-mono_load_remote_field (MonoObject *this, MonoClass *klass, MonoClassField *field, gpointer *res);
+mono_load_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, gpointer *res);
+
+MonoObject *
+mono_load_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field);
+
+void
+mono_store_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, gpointer val);
 
 void
-mono_store_remote_field (MonoObject *this, MonoClass *klass, MonoClassField *field, gpointer val);
+mono_store_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoObject *arg);
 
 void
 mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoArray *out_args);
@@ -339,10 +390,29 @@ void
 mono_print_unhandled_exception (MonoObject *exc);
 
 void
-mono_delegate_ctor          (MonoObject *this, MonoObject *target, gpointer addr);
+mono_delegate_ctor          (MonoObject *this_obj, MonoObject *target, gpointer addr);
 
 gpointer 
 mono_compile_method        (MonoMethod *method);
 
+/* accessors for fields and properties */
+void
+mono_field_set_value (MonoObject *obj, MonoClassField *field, void *value);
+
+void
+mono_field_static_set_value (MonoVTable *vt, MonoClassField *field, void *value);
+
+void
+mono_field_get_value (MonoObject *obj, MonoClassField *field, void *value);
+
+void
+mono_field_static_get_value (MonoVTable *vt, MonoClassField *field, void *value);
+
+void
+mono_property_set_value (MonoProperty *prop, void *obj, void **params, MonoObject **exc);
+
+MonoObject*
+mono_property_get_value (MonoProperty *prop, void *obj, void **params, MonoObject **exc);
+
 #endif