Merge pull request #2708 from lambdageek/dev/monoerror-assorted-get_type
[mono.git] / mono / metadata / object-internals.h
index 67d093a7d8f7ddb0d12ebd32b98596c374aef8e3..dc5f426748328604628b377e46b3992fdd5251bd 100644 (file)
                return retval;                                                                            \
        };                              }G_STMT_END
 
+/* Use this as MONO_ARG_NULL (arg,) in functions returning void */
+#define MONO_CHECK_NULL(arg, retval)       G_STMT_START{                 \
+               if (G_UNLIKELY (arg == NULL))                                             \
+       {                                                                 \
+               MonoException *ex;                                        \
+               if (arg) {} /* check if the name exists */                \
+               ex = mono_get_exception_null_reference ();                \
+               mono_set_pending_exception (ex);                                          \
+               return retval;                                                                            \
+       };                              }G_STMT_END
+
 #define mono_string_builder_capacity(sb) sb->chunkOffset + sb->chunkChars->max_length
 #define mono_string_builder_string_length(sb) sb->chunkOffset + sb->chunkLength
 
@@ -1412,7 +1423,7 @@ void        mono_reflection_register_with_runtime (MonoReflectionType *type);
 void        mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info, MonoError *error);
 MonoMethodSignature * mono_reflection_lookup_signature (MonoImage *image, MonoMethod *method, guint32 token, MonoError *error);
 
-MonoArray* mono_param_get_objects_internal  (MonoDomain *domain, MonoMethod *method, MonoClass *refclass);
+MonoArray* mono_param_get_objects_internal  (MonoDomain *domain, MonoMethod *method, MonoClass *refclass, MonoError *error);
 
 MonoClass*
 mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, gboolean is_dynamic);
@@ -1444,7 +1455,7 @@ void
 mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *method, MonoReflectionAssembly *assembly, gpointer data, guint32 data_length, MonoArray **ctor_args, MonoArray ** named_args);
 
 MonoType*
-mono_reflection_type_get_handle (MonoReflectionType *ref);
+mono_reflection_type_get_handle (MonoReflectionType *ref, MonoError *error);
 
 void
 mono_reflection_free_dynamic_generic_class (MonoGenericClass *gclass);
@@ -1595,7 +1606,7 @@ gboolean
 mono_class_is_reflection_method_or_constructor (MonoClass *klass);
 
 MonoObject *
-mono_get_object_from_blob (MonoDomain *domain, MonoType *type, const char *blob);
+mono_get_object_from_blob (MonoDomain *domain, MonoType *type, const char *blob, MonoError *error);
 
 gpointer
 mono_class_get_ref_info (MonoClass *klass);
@@ -1640,6 +1651,9 @@ mono_string_to_utf8_mp_ignore (MonoMemPool *mp, MonoString *s);
 gboolean
 mono_monitor_is_il_fastpath_wrapper (MonoMethod *method);
 
+MonoString*
+mono_string_intern_checked (MonoString *str, MonoError *error);
+
 char *
 mono_exception_get_native_backtrace (MonoException *exc);
 
@@ -1685,6 +1699,9 @@ mono_string_new_checked (MonoDomain *domain, const char *text, MonoError *merror
 MonoString *
 mono_string_new_utf16_checked (MonoDomain *domain, const guint16 *text, gint32 len, MonoError *error);
 
+gboolean
+mono_runtime_object_init_checked (MonoObject *this_obj, MonoError *error);
+
 MonoObject*
 mono_runtime_try_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error);