Exemple #1
0
            public FieldListEntry(Stream s)
            {
                pos = (uint)s.Position;
                u1  = StreamHelper.ReadU16(s);
                switch (u1)
                {
                case 0x1502:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    if ((u3 & 0x8000) != 0)
                    {
                        u4 = StreamHelper.ReadU32(s);
                    }
                    name = StreamHelper.ReadCString(s);
                    break;

                case 0x150D:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    u4 = StreamHelper.ReadU32(s);
                    if ((u4 & 0x80000000) != 0)
                    {
                        u5 = StreamHelper.ReadU32(s);
                    }
                    name = StreamHelper.ReadCString(s);
                    break;

                case 0x150E:
                case 0x150F:
                case 0x1510:
                case 0x1511:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    u4 = StreamHelper.ReadU16(s);
                    if ((u2 & 0x10) != 0 && u2 != 0x16)
                    {
                        u5 = StreamHelper.ReadU32(s);
                    }
                    name = StreamHelper.ReadCString(s);
                    break;

                case 0x1400:
                    u2   = StreamHelper.ReadU16(s);
                    u3   = StreamHelper.ReadU16(s);
                    u4   = StreamHelper.ReadU32(s);
                    name = "";
                    break;

                case 0x1401:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    u4 = StreamHelper.ReadU32(s);
                    StreamHelper.ReadU32(s);
                    StreamHelper.ReadU16(s);
                    name = "";
                    break;

                case 0x1402:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    u4 = StreamHelper.ReadU32(s);
                    u5 = StreamHelper.ReadU32(s);
                    StreamHelper.ReadU16(s);
                    name = "";
                    break;

                case 0x1404:
                    u2 = StreamHelper.ReadU16(s);
                    u3 = StreamHelper.ReadU16(s);
                    u4 = StreamHelper.ReadU16(s);
                    u5 = StreamHelper.ReadU16(s);
                    StreamHelper.ReadU16(s);
                    name = "";
                    break;

                case 0x1409:
                    u2   = StreamHelper.ReadU16(s);
                    u3   = StreamHelper.ReadU16(s);
                    u4   = StreamHelper.ReadU16(s);
                    name = "";
                    break;

                default:
                    throw new Exception();
                }
                StreamHelper.Align(s);
            }