// dnlib: See LICENSE.txt for more info
using System;
namespace dnlib.DotNet {
///
/// Method attributes, see CorHdr.h/CorMethodAttr
///
[Flags]
public enum MethodAttributes : ushort {
/// member access mask - Use this mask to retrieve accessibility information.
MemberAccessMask = 0x0007,
/// Member not referenceable.
PrivateScope = 0x0000,
/// Member not referenceable.
CompilerControlled = PrivateScope,
/// Accessible only by the parent type.
Private = 0x0001,
/// Accessible by sub-types only in this Assembly.
FamANDAssem = 0x0002,
/// Accessibly by anyone in the Assembly.
Assembly = 0x0003,
/// Accessible only by type and sub-types.
Family = 0x0004,
/// Accessibly by sub-types anywhere, plus anyone in assembly.
FamORAssem = 0x0005,
/// Accessibly by anyone who has visibility to this scope.
Public = 0x0006,
/// Defined on type, else per instance.
Static = 0x0010,
/// Method may not be overridden.
Final = 0x0020,
/// Method virtual.
Virtual = 0x0040,
/// Method hides by name+sig, else just by name.
HideBySig = 0x0080,
/// vtable layout mask - Use this mask to retrieve vtable attributes.
VtableLayoutMask = 0x0100,
/// The default.
ReuseSlot = 0x0000,
/// Method always gets a new slot in the vtable.
NewSlot = 0x0100,
/// Overridability is the same as the visibility.
CheckAccessOnOverride = 0x0200,
/// Method does not provide an implementation.
Abstract = 0x0400,
/// Method is special. Name describes how.
SpecialName = 0x0800,
/// Implementation is forwarded through pinvoke.
PinvokeImpl = 0x2000,
/// Managed method exported via thunk to unmanaged code.
UnmanagedExport = 0x0008,
/// Runtime should check name encoding.
RTSpecialName = 0x1000,
/// Method has security associate with it.
HasSecurity = 0x4000,
/// Method calls another method containing security code.
RequireSecObject = 0x8000,
}
}