5
// Jb Evain (jbevain@gmail.com)
7
// Copyright (c) 2008 - 2010 Jb Evain
9
// Permission is hereby granted, free of charge, to any person obtaining
10
// a copy of this software and associated documentation files (the
11
// "Software"), to deal in the Software without restriction, including
12
// without limitation the rights to use, copy, modify, merge, publish,
13
// distribute, sublicense, and/or sell copies of the Software, and to
14
// permit persons to whom the Software is furnished to do so, subject to
15
// the following conditions:
17
// The above copyright notice and this permission notice shall be
18
// included in all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
namespace Mono.Cecil {
33
public class MarshalInfo {
35
internal NativeType native;
37
public NativeType NativeType {
38
get { return native; }
39
set { native = value; }
42
public MarshalInfo (NativeType native)
48
public sealed class ArrayMarshalInfo : MarshalInfo {
50
internal NativeType element_type;
51
internal int size_parameter_index;
53
internal int size_parameter_multiplier;
55
public NativeType ElementType {
56
get { return element_type; }
57
set { element_type = value; }
60
public int SizeParameterIndex {
61
get { return size_parameter_index; }
62
set { size_parameter_index = value; }
70
public int SizeParameterMultiplier {
71
get { return size_parameter_multiplier; }
72
set { size_parameter_multiplier = value; }
75
public ArrayMarshalInfo ()
76
: base (NativeType.Array)
78
element_type = NativeType.None;
79
size_parameter_index = -1;
81
size_parameter_multiplier = -1;
85
public sealed class CustomMarshalInfo : MarshalInfo {
88
internal string unmanaged_type;
89
internal TypeReference managed_type;
90
internal string cookie;
97
public string UnmanagedType {
98
get { return unmanaged_type; }
99
set { unmanaged_type = value; }
102
public TypeReference ManagedType {
103
get { return managed_type; }
104
set { managed_type = value; }
107
public string Cookie {
108
get { return cookie; }
109
set { cookie = value; }
112
public CustomMarshalInfo ()
113
: base (NativeType.CustomMarshaler)
118
public sealed class SafeArrayMarshalInfo : MarshalInfo {
120
internal VariantType element_type;
122
public VariantType ElementType {
123
get { return element_type; }
124
set { element_type = value; }
127
public SafeArrayMarshalInfo ()
128
: base (NativeType.SafeArray)
130
element_type = VariantType.None;
134
public sealed class FixedArrayMarshalInfo : MarshalInfo {
136
internal NativeType element_type;
139
public NativeType ElementType {
140
get { return element_type; }
141
set { element_type = value; }
146
set { size = value; }
149
public FixedArrayMarshalInfo ()
150
: base (NativeType.FixedArray)
152
element_type = NativeType.None;
156
public sealed class FixedSysStringMarshalInfo : MarshalInfo {
162
set { size = value; }
165
public FixedSysStringMarshalInfo ()
166
: base (NativeType.FixedSysString)