Merge pull request #4621 from alexanderkyte/strdup_env
[mono.git] / mono / metadata / cominterop.h
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_call (MonoMethodBuilder *mb, MonoMethodSignature *sig, MonoMethod* method);
24
25 void
26 mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv conv, MonoMarshalSpec *mspec);
27
28 void
29 mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv conv, MonoMarshalSpec *mspec);
30
31 MonoMethod *
32 mono_cominterop_get_native_wrapper (MonoMethod *method);
33
34 MonoMethod *
35 mono_cominterop_get_invoke (MonoMethod *method);
36
37 int
38 mono_cominterop_emit_marshal_com_interface (EmitMarshalContext *m, int argnum, 
39                                                                                         MonoType *t,
40                                                                                         MonoMarshalSpec *spec, 
41                                                                                         int conv_arg, MonoType **conv_arg_type, 
42                                                                                         MarshalAction action);
43
44 int
45 mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum,
46                                                                                 MonoType *t,
47                                                                                 MonoMarshalSpec *spec, 
48                                                                                 int conv_arg, MonoType **conv_arg_type,
49                                                                                 MarshalAction action);
50
51 MONO_RT_EXTERNAL_ONLY
52 MONO_API MonoString * 
53 mono_string_from_bstr (gpointer bstr);
54
55 MonoString *
56 mono_string_from_bstr_icall (gpointer bstr);
57
58 MonoString *
59 mono_string_from_bstr_checked (gpointer bstr, MonoError *error);
60
61 MONO_API void 
62 mono_free_bstr (gpointer bstr);
63
64 MonoClass*
65 mono_class_try_get_com_object_class (void);
66
67 #endif /* __MONO_COMINTEROP_H__ */