Files
2026-03-30 20:11:57 +07:00

109 lines
5.9 KiB
C#

//
// Author:
// Jb Evain (jbevain@gmail.com)
//
// Copyright (c) 2008 - 2015 Jb Evain
// Copyright (c) 2008 - 2011 Novell, Inc.
//
// Licensed under the MIT/X11 license.
//
namespace MonoFN.Cecil
{
public sealed class PInvokeInfo
{
private ushort attributes;
public PInvokeAttributes Attributes
{
get { return (PInvokeAttributes)attributes; }
set { attributes = (ushort)value; }
}
public string EntryPoint { get; set; }
public ModuleReference Module { get; set; }
#region PInvokeAttributes
public bool IsNoMangle
{
get { return attributes.GetAttributes((ushort)PInvokeAttributes.NoMangle); }
set { attributes = attributes.SetAttributes((ushort)PInvokeAttributes.NoMangle, value); }
}
public bool IsCharSetNotSpec
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetNotSpec); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetNotSpec, value); }
}
public bool IsCharSetAnsi
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetAnsi); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetAnsi, value); }
}
public bool IsCharSetUnicode
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetUnicode); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetUnicode, value); }
}
public bool IsCharSetAuto
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetAuto); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CharSetMask, (ushort)PInvokeAttributes.CharSetAuto, value); }
}
public bool SupportsLastError
{
get { return attributes.GetAttributes((ushort)PInvokeAttributes.SupportsLastError); }
set { attributes = attributes.SetAttributes((ushort)PInvokeAttributes.SupportsLastError, value); }
}
public bool IsCallConvWinapi
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvWinapi); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvWinapi, value); }
}
public bool IsCallConvCdecl
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvCdecl); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvCdecl, value); }
}
public bool IsCallConvStdCall
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvStdCall); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvStdCall, value); }
}
public bool IsCallConvThiscall
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvThiscall); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvThiscall, value); }
}
public bool IsCallConvFastcall
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvFastcall); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.CallConvMask, (ushort)PInvokeAttributes.CallConvFastcall, value); }
}
public bool IsBestFitEnabled
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.BestFitMask, (ushort)PInvokeAttributes.BestFitEnabled); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.BestFitMask, (ushort)PInvokeAttributes.BestFitEnabled, value); }
}
public bool IsBestFitDisabled
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.BestFitMask, (ushort)PInvokeAttributes.BestFitDisabled); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.BestFitMask, (ushort)PInvokeAttributes.BestFitDisabled, value); }
}
public bool IsThrowOnUnmappableCharEnabled
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort)PInvokeAttributes.ThrowOnUnmappableCharEnabled); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort)PInvokeAttributes.ThrowOnUnmappableCharEnabled, value); }
}
public bool IsThrowOnUnmappableCharDisabled
{
get { return attributes.GetMaskedAttributes((ushort)PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort)PInvokeAttributes.ThrowOnUnmappableCharDisabled); }
set { attributes = attributes.SetMaskedAttributes((ushort)PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort)PInvokeAttributes.ThrowOnUnmappableCharDisabled, value); }
}
#endregion
public PInvokeInfo(PInvokeAttributes attributes, string entryPoint, ModuleReference module)
{
this.attributes = (ushort)attributes;
EntryPoint = entryPoint;
this.Module = module;
}
}
}