コード例 #1
0
        private void ReadClassMember5(EndianStream stream, ClassStruct classStruct, List <ClassMember> members, long stringPosition)
        {
            ushort num0    = stream.ReadUInt16();
            byte   level   = stream.ReadByte();
            bool   isArray = stream.ReadBoolean();

            string memberType = ReadClassType(stream, stringPosition);
            string memberName = ReadClassType(stream, stringPosition);

            int size  = stream.ReadInt32();
            int index = stream.ReadInt32();
            int flag  = stream.ReadInt32();

            if (index == 0)
            {
                classStruct.BaseType = memberType;
                classStruct.BaseName = memberName;
            }
            else
            {
                ClassMember member = new ClassMember();
                member.Level   = level;
                member.Type    = memberType;
                member.Name    = memberName;
                member.Size    = size;
                member.Index   = index;
                member.IsArray = isArray;
                member.Num0    = num0;
                member.Flag    = flag;
                members.Add(member);
            }
        }
コード例 #2
0
        private void ReadClassMember(EndianStream stream, List <ClassMember> members, int level)
        {
            ClassMember member = new ClassMember();

            member.Level      = level;
            member.Type       = stream.ReadStringZeroTerm();
            member.Name       = stream.ReadStringZeroTerm();
            member.Size       = stream.ReadInt32();
            member.Index      = stream.ReadInt32();
            member.IsArray    = stream.ReadInt32() != 0;
            member.Num0       = stream.ReadInt32();
            member.Flag       = stream.ReadInt32();
            member.ChildCount = stream.ReadInt32();

            members.Add(member);
            for (int i = 0; i < member.ChildCount; i++)
            {
                ReadClassMember(stream, members, level + 1);
            }
        }