public static MethodAttributes MethodAttr (Modifiers mod_flags)
{
MethodAttributes ma = MethodAttributes.HideBySig;
switch (mod_flags & Modifiers.AccessibilityMask) {
case Modifiers.PUBLIC:
ma |= MethodAttributes.Public;
break;
case Modifiers.PRIVATE:
ma |= MethodAttributes.Private;
break;
case Modifiers.PROTECTED | Modifiers.INTERNAL:
ma |= MethodAttributes.FamORAssem;
break;
case Modifiers.PROTECTED:
ma |= MethodAttributes.Family;
break;
case Modifiers.INTERNAL:
ma |= MethodAttributes.Assembly;
break;
default:
throw new NotImplementedException (mod_flags.ToString ());
}
if ((mod_flags & Modifiers.STATIC) != 0)
ma |= MethodAttributes.Static;
if ((mod_flags & Modifiers.ABSTRACT) != 0) {
ma |= MethodAttributes.Abstract | MethodAttributes.Virtual;
}
if ((mod_flags & Modifiers.SEALED) != 0)
ma |= MethodAttributes.Final;
if ((mod_flags & Modifiers.VIRTUAL) != 0)
ma |= MethodAttributes.Virtual;
if ((mod_flags & Modifiers.OVERRIDE) != 0) {
ma |= MethodAttributes.Virtual;
} else {
if ((ma & MethodAttributes.Virtual) != 0)
ma |= MethodAttributes.NewSlot;
}
return ma;
}