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