Beispiel #1
0
        public override void FromJson(JsonTextReader reader)
        {
            switch (reader.TokenType)
            {
            case JsonToken.String:
                string val = (string?)reader.Value ?? string.Empty;
                if (val.StartsWith("!iar "))
                {
                    ValueOffsetType.Type = 128;
                    ComplexValueData     = new PkgDataArrayReference(ParentFile);
                    ComplexValueData.FromJson(reader);
                }
                else
                {
                    ValueData = val;
                }
                break;

            case JsonToken.StartObject:
                ValueOffsetType.Type = 128;
                ComplexValueData     = new PkgObject(ParentFile);
                ComplexValueData.FromJson(reader);
                break;

            case JsonToken.StartArray:
                ValueOffsetType.Type = 128;
                ComplexValueData     = new PkgArray(ParentFile);
                ComplexValueData.FromJson(reader);
                break;

            default:
                new Exception("Unexpected token type! " + reader.TokenType);
                break;
            }
        }
Beispiel #2
0
        public override void Read(PkgBinaryReader reader)
        {
            ValueOffsetType = reader.ReadOffsetType();

            if (ValueOffsetType.Type == 128)
            {
                long pos = reader.BaseStream.Position;
                reader.Seek(ValueOffsetType.Offset, SeekOrigin.Begin);

                string chunkType = reader.ReadString(4);
                switch (chunkType)
                {
                case "!idi":
                    ComplexValueData = new PkgObject(ParentFile);
                    ComplexValueData.Read(reader);
                    break;

                case "!ili":
                    ComplexValueData = new PkgArray(ParentFile);
                    ComplexValueData.Read(reader);
                    break;

                case "!iar":
                    ComplexValueData = new PkgDataArrayReference(ParentFile);
                    ComplexValueData.Read(reader);
                    break;

                case "!vca":
                    ComplexValueData = new PkgDataArray(ParentFile);
                    ComplexValueData.Read(reader);
                    break;

                case "!sbi":
                    ComplexValueData = PkgData.Create(ParentFile, "stri");
                    ComplexValueData.Read(reader);
                    break;

                case "!vbi":
                    ComplexValueData = PkgData.Create(reader, ParentFile);
                    ComplexValueData.Read(reader);
                    break;

                default:
                    throw new Exception("Chunk type not supported! " + chunkType);
                }

                reader.Seek((int)pos, SeekOrigin.Begin);
            }
        }