/Mono.Cecil/PInvokeInfo.cs

http://github.com/jbevain/cecil · C# · 120 lines · 87 code · 24 blank · 9 comment · 0 complexity · aa30e073e92e2e59869ad3a611c569be 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. namespace Mono.Cecil {
  11. public sealed class PInvokeInfo {
  12. ushort attributes;
  13. string entry_point;
  14. ModuleReference module;
  15. public PInvokeAttributes Attributes {
  16. get { return (PInvokeAttributes) attributes; }
  17. set { attributes = (ushort) value; }
  18. }
  19. public string EntryPoint {
  20. get { return entry_point; }
  21. set { entry_point = value; }
  22. }
  23. public ModuleReference Module {
  24. get { return module; }
  25. set { module = value; }
  26. }
  27. #region PInvokeAttributes
  28. public bool IsNoMangle {
  29. get { return attributes.GetAttributes ((ushort) PInvokeAttributes.NoMangle); }
  30. set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.NoMangle, value); }
  31. }
  32. public bool IsCharSetNotSpec {
  33. get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec); }
  34. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec, value); }
  35. }
  36. public bool IsCharSetAnsi {
  37. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi); }
  38. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi, value); }
  39. }
  40. public bool IsCharSetUnicode {
  41. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode); }
  42. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode, value); }
  43. }
  44. public bool IsCharSetAuto {
  45. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto); }
  46. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto, value); }
  47. }
  48. public bool SupportsLastError {
  49. get { return attributes.GetAttributes ((ushort) PInvokeAttributes.SupportsLastError); }
  50. set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.SupportsLastError, value); }
  51. }
  52. public bool IsCallConvWinapi {
  53. get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi); }
  54. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi, value); }
  55. }
  56. public bool IsCallConvCdecl {
  57. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl); }
  58. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl, value); }
  59. }
  60. public bool IsCallConvStdCall {
  61. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall); }
  62. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall, value); }
  63. }
  64. public bool IsCallConvThiscall {
  65. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall); }
  66. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall, value); }
  67. }
  68. public bool IsCallConvFastcall {
  69. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall); }
  70. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall, value); }
  71. }
  72. public bool IsBestFitEnabled {
  73. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled); }
  74. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled, value); }
  75. }
  76. public bool IsBestFitDisabled {
  77. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitDisabled); }
  78. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitDisabled, value); }
  79. }
  80. public bool IsThrowOnUnmappableCharEnabled {
  81. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled); }
  82. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled, value); }
  83. }
  84. public bool IsThrowOnUnmappableCharDisabled {
  85. get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled); }
  86. set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled, value); }
  87. }
  88. #endregion
  89. public PInvokeInfo (PInvokeAttributes attributes, string entryPoint, ModuleReference module)
  90. {
  91. this.attributes = (ushort) attributes;
  92. this.entry_point = entryPoint;
  93. this.module = module;
  94. }
  95. }
  96. }