Example #1
0
 public void Read(SignatureReader rdr)
 {
     if (rdr.GetElementTypeAhead() != ElementType.TypedByRef)
     {
         mod = new LocalVarModCollection();
         mod.Read(rdr);
         if (rdr.GetElementTypeAhead() == ElementType.ByRef)
         {
             br = true;
         }
     }
     e = TypeElement.ReadType(rdr);
 }
Example #2
0
 public void Read(SignatureReader rdr)
 {
     while (rdr.IsCustomModifierAhead() || (byte)rdr.GetElementTypeAhead() == 0x45) //0x45=ELEMENT_TYPE_PINNED
     {
         LocalVarMod m = new LocalVarMod();
         if (rdr.IsCustomModifierAhead())
         {
             m.Modifiers = new CustomModifierCollection();
             m.Modifiers.Read(rdr);
         }
         if ((byte)rdr.GetElementTypeAhead() == 0x45)
         {
             m.Pinned = true;
         }
         Items.Add(m);
     }
 }
Example #3
0
 public void Read(SignatureReader rdr)
 {
     mods = new CustomModifierCollection();
     mods.Read(rdr);
     if (rdr.GetElementTypeAhead() == ElementType.ByRef)
     {
         br = true;
     }
     else
     {
         br = false;
     }
     t = TypeElement.ReadType(rdr);
 }
Example #4
0
        }                                                                 //optional beginning, including

        public void Read(SignatureReader rdr, int c)
        {
            sen = -1;
            for (int i = 0; i < c; i++)
            {
                if ((byte)rdr.GetElementTypeAhead() == 0x41)
                {
                    sen = i;
                    rdr.ReadElementType();
                }
                ParamElement p = new ParamElement();
                p.Read(rdr);
                Items.Add(p);
            }
        }
Example #5
0
        public static TypeElement ReadType(SignatureReader rdr)
        {
            TypeElement ret;

            switch (rdr.GetElementTypeAhead())
            {
            case ElementType.Void:
            case ElementType.TypedByRef:
                ret = new BaseType(); break;

            case ElementType.Boolean:
            case ElementType.Char:
            case ElementType.Int8:
            case ElementType.UInt8:
            case ElementType.Int16:
            case ElementType.UInt16:
            case ElementType.Int32:
            case ElementType.UInt32:
            case ElementType.Int64:
            case ElementType.UInt64:
            case ElementType.Single:
            case ElementType.Double:
            case ElementType.IntPtr:
            case ElementType.UIntPtr:
            case ElementType.Object:
            case ElementType.String:
                ret = new BaseType(); break;

            case ElementType.Array:
                ret = new ARRAY(); break;

            case ElementType.Class:
                ret = new CLASS(); break;

            case ElementType.FnPtr:
                ret = new FNPTR(); break;

            case ElementType.GenericInstance:
                ret = new GENERICINST(); break;

            case ElementType.MethodGenericVar:
                ret = new MVAR(); break;

            case ElementType.Pointer:
                ret = new PTR(); break;

            case ElementType.SzArray:
                ret = new SZARRAY(); break;

            case ElementType.ValueType:
                ret = new VALUETYPE(); break;

            case ElementType.GenericVar:
                ret = new VAR(); break;

            default:
                throw new InvalidOperationException();
            }
            ret.Read(rdr);
            return(ret);
        }