Ejemplo n.º 1
0
        internal static CTFType GetStructType(CTFScope scope, string name, List <CTFStructOrVariantDeclaration> list, int align)
        {
            if (list == null)
            {
                // Already defined or empty ?
                return((name == null) ? EmptyStruct : scope.FindStructSymbol(name).CtfType);
            }

            CTFStructType cst = CTFStructType.GetStructType(scope, list, align);

            if (name != null)
            {
                scope.AddStruct(new CTFSymbol(name, cst));
            }

            return(cst);
        }
Ejemplo n.º 2
0
        public override CTFRecord Read(BitReader r)
        {
            r.Align(Align());
            uint        id = (uint)Elems[0].Read(this, null, r); // must be int
            CTFEnumType ct = (CTFEnumType)Elems[0].CtfType;      // must be enum

            // Select correct range
            string        name = ct.GetName((int)id);
            CTFStructType cst  = subtypes[name];

            if (cst.Changed)
            {
                return(cst.Read(r));
            }
            else
            {
                CTFRecord cr = cst.Read(r, 1);
                cr.array[0] = id;
                return(cr);
            }
        }
Ejemplo n.º 3
0
 internal virtual object Read(CTFStructType t, Object[] objects, BitReader r)
 {
     return(CtfType.GetObject(r));
 }
Ejemplo n.º 4
0
 internal override object Read(CTFStructType t, Object[] objects, BitReader r)
 {
     return(ReadArray(r, (uint)objects[pos]));
 }
Ejemplo n.º 5
0
 public CTFRecord(CTFType type, object[] array)
 {
     ct         = (CTFStructType)type;
     this.array = array;
 }