protected void WriteFlags(CILWriter output, uint flags)
{
uint vis = (flags & 0x07); // visibility mask
switch (vis) {
case 0 : output.Write("compilercontrolled "); break;
case 1 : output.Write("private "); break;
case 2 : output.Write("famandassem "); break;
case 3 : output.Write("assembly "); break;
case 4 : output.Write("family "); break;
case 5 : output.Write("famorassem "); break;
case 6 : output.Write("public "); break;
}
if ((flags & (ushort)FieldAttr.Static) != 0) {
output.Write("static ");
}
if ((flags & (ushort)FieldAttr.Initonly) != 0) {
if (this is MethodDef) {
output.Write("final ");
} else {
output.Write("initonly ");
}
}
if ((flags & (ushort)FieldAttr.Literal) != 0) {
if (this is MethodDef) {
output.Write("virtual ");
} else {
output.Write("literal ");
}
}
if ((flags & (ushort)FieldAttr.Notserialized) != 0) {
if (this is MethodDef) {
output.Write("hidebysig ");
} else {
output.Write("notserialized ");
}
}
if (this is MethodDef) {
// more flags required here
if ((flags & (ushort)MethAttr.Abstract) != 0) {
output.Write("abstract ");
}
if ((flags & (ushort)MethAttr.SpecialName) != 0) {
output.Write("specialname ");
}
if ((flags & (ushort)MethAttr.RTSpecialName) != 0) {
output.Write("rtspecialname ");
}
} else {
// more flags required here
if ((flags & (ushort)FieldAttr.SpecialName) != 0) {
output.Write("specialname ");
}
if ((flags & (ushort)FieldAttr.RTSpecialName) != 0) {
output.Write("rtsspecialname ");
}
}
}