/Mono.Cecil/MarshalInfo.cs

http://github.com/jbevain/cecil · C# · 153 lines · 111 code · 33 blank · 9 comment · 0 complexity · 9487172973dbbd2c658085f23e8d4706 MD5 · raw file

  1. //
  2. // Author:
  3. // Jb Evain (jbevain@gmail.com)
  4. //
  5. // Copyright (c) 2008 - 2015 Jb Evain
  6. // Copyright (c) 2008 - 2011 Novell, Inc.
  7. //
  8. // Licensed under the MIT/X11 license.
  9. //
  10. using System;
  11. namespace Mono.Cecil {
  12. public class MarshalInfo {
  13. internal NativeType native;
  14. public NativeType NativeType {
  15. get { return native; }
  16. set { native = value; }
  17. }
  18. public MarshalInfo (NativeType native)
  19. {
  20. this.native = native;
  21. }
  22. }
  23. public sealed class ArrayMarshalInfo : MarshalInfo {
  24. internal NativeType element_type;
  25. internal int size_parameter_index;
  26. internal int size;
  27. internal int size_parameter_multiplier;
  28. public NativeType ElementType {
  29. get { return element_type; }
  30. set { element_type = value; }
  31. }
  32. public int SizeParameterIndex {
  33. get { return size_parameter_index; }
  34. set { size_parameter_index = value; }
  35. }
  36. public int Size {
  37. get { return size; }
  38. set { size = value; }
  39. }
  40. public int SizeParameterMultiplier {
  41. get { return size_parameter_multiplier; }
  42. set { size_parameter_multiplier = value; }
  43. }
  44. public ArrayMarshalInfo ()
  45. : base (NativeType.Array)
  46. {
  47. element_type = NativeType.None;
  48. size_parameter_index = -1;
  49. size = -1;
  50. size_parameter_multiplier = -1;
  51. }
  52. }
  53. public sealed class CustomMarshalInfo : MarshalInfo {
  54. internal Guid guid;
  55. internal string unmanaged_type;
  56. internal TypeReference managed_type;
  57. internal string cookie;
  58. public Guid Guid {
  59. get { return guid; }
  60. set { guid = value; }
  61. }
  62. public string UnmanagedType {
  63. get { return unmanaged_type; }
  64. set { unmanaged_type = value; }
  65. }
  66. public TypeReference ManagedType {
  67. get { return managed_type; }
  68. set { managed_type = value; }
  69. }
  70. public string Cookie {
  71. get { return cookie; }
  72. set { cookie = value; }
  73. }
  74. public CustomMarshalInfo ()
  75. : base (NativeType.CustomMarshaler)
  76. {
  77. }
  78. }
  79. public sealed class SafeArrayMarshalInfo : MarshalInfo {
  80. internal VariantType element_type;
  81. public VariantType ElementType {
  82. get { return element_type; }
  83. set { element_type = value; }
  84. }
  85. public SafeArrayMarshalInfo ()
  86. : base (NativeType.SafeArray)
  87. {
  88. element_type = VariantType.None;
  89. }
  90. }
  91. public sealed class FixedArrayMarshalInfo : MarshalInfo {
  92. internal NativeType element_type;
  93. internal int size;
  94. public NativeType ElementType {
  95. get { return element_type; }
  96. set { element_type = value; }
  97. }
  98. public int Size {
  99. get { return size; }
  100. set { size = value; }
  101. }
  102. public FixedArrayMarshalInfo ()
  103. : base (NativeType.FixedArray)
  104. {
  105. element_type = NativeType.None;
  106. }
  107. }
  108. public sealed class FixedSysStringMarshalInfo : MarshalInfo {
  109. internal int size;
  110. public int Size {
  111. get { return size; }
  112. set { size = value; }
  113. }
  114. public FixedSysStringMarshalInfo ()
  115. : base (NativeType.FixedSysString)
  116. {
  117. size = -1;
  118. }
  119. }
  120. }