public virtual bool CalculateOffsets() { var Members = StructuredScope.IdentifierList; for (var i = 0; i < Members.Count; i++) { var MemVar = Members[i] as MemberVariable; if (MemVar != null) { var Type = MemVar.TypeOfSelf.RealId as Type; var Struct = Type as StructType; if (Struct != null && !Struct.CalculateLayout()) { return(false); } MemVar.Offset = DataStoring.AlignWithIncrease(VarSize, Type.Align); VarSize = MemVar.Offset + Type.Size; } } InstanceSize = Container.State.CalcPow2Size(VarSize); return(true); }
public void CalcSize() { if (Lengths == null) { return; } var ValType = TypeOfValues; ElementSize = DataStoring.AlignWithIncrease(ValType.Size, ValType.Align); var Size = ElementSize; foreach (var e in Lengths) { Size *= e; } Pow2Size = Container.State.CalcPow2Size(Size); this.Size = Pow2Size; }