示例#1
0
        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);
        }
示例#2
0
        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;
        }