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); }
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); } }
internal virtual object Read(CTFStructType t, Object[] objects, BitReader r) { return(CtfType.GetObject(r)); }
internal override object Read(CTFStructType t, Object[] objects, BitReader r) { return(ReadArray(r, (uint)objects[pos])); }
public CTFRecord(CTFType type, object[] array) { ct = (CTFStructType)type; this.array = array; }