1 /**
2  * \file
3  * COM Interop Support
4  *
5  *
6  * (C) 2002 Ximian, Inc.  http://www.ximian.com
7  *
8  */
9 
10 #ifndef __MONO_COMINTEROP_H__
11 #define __MONO_COMINTEROP_H__
12 
13 #include <mono/metadata/method-builder.h>
14 #include <mono/metadata/marshal.h>
15 
16 void
17 mono_cominterop_init (void);
18 
19 void
20 mono_cominterop_cleanup (void);
21 
22 void
23 mono_mb_emit_cominterop_get_function_pointer (MonoMethodBuilder *mb, MonoMethod* method);
24 
25 void
26 mono_mb_emit_cominterop_call_function_pointer (MonoMethodBuilder *mb, MonoMethodSignature *sig);
27 
28 void
29 mono_mb_emit_cominterop_call (MonoMethodBuilder *mb, MonoMethodSignature *sig, MonoMethod* method);
30 
31 void
32 mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv conv, MonoMarshalSpec *mspec);
33 
34 void
35 mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv conv, MonoMarshalSpec *mspec);
36 
37 MonoMethod *
38 mono_cominterop_get_native_wrapper (MonoMethod *method);
39 
40 MonoMethod *
41 mono_cominterop_get_invoke (MonoMethod *method);
42 
43 int
44 mono_cominterop_emit_marshal_com_interface (EmitMarshalContext *m, int argnum,
45 											MonoType *t,
46 											MonoMarshalSpec *spec,
47 											int conv_arg, MonoType **conv_arg_type,
48 											MarshalAction action);
49 
50 int
51 mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum,
52 										MonoType *t,
53 										MonoMarshalSpec *spec,
54 										int conv_arg, MonoType **conv_arg_type,
55 										MarshalAction action);
56 
57 MONO_RT_EXTERNAL_ONLY
58 MONO_API MonoString *
59 mono_string_from_bstr (gpointer bstr);
60 
61 MonoString *
62 mono_string_from_bstr_icall (gpointer bstr);
63 
64 MonoString *
65 mono_string_from_bstr_checked (gpointer bstr, MonoError *error);
66 
67 MONO_API void
68 mono_free_bstr (gpointer bstr);
69 
70 MonoClass*
71 mono_class_try_get_com_object_class (void);
72 
73 void*
74 mono_cominterop_get_com_interface (MonoObject* object, MonoClass* ic, MonoError *error);
75 
76 #endif /* __MONO_COMINTEROP_H__ */
77