Ejemplo n.º 1
0
        protected void WriteFlags(CILWriter output, uint flags)
        {
            Contract.Requires(output != null);
            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 ");
                }
            }
        }
Ejemplo n.º 2
0
 internal abstract void WriteType(CILWriter output);
Ejemplo n.º 3
0
 internal override void Write(CILWriter output)
 {
     pType.WriteType(output);
     output.Write(" " + pName);
 }
Ejemplo n.º 4
0
 internal override void BuildCILInfo(CILWriter output)
 {
     pType.BuildCILInfo(output);
 }
Ejemplo n.º 5
0
 internal virtual void Write(CILWriter output)
 {
     Contract.Requires(output != null);
     throw new Exception("CIL backend not yet fully implemented - " + GetType().ToString());
 }
Ejemplo n.º 6
0
 internal virtual void BuildCILInfo(CILWriter output)
 {
     Contract.Requires(output != null);
 }