Exemplo n.º 1
0
        public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
        {
            var flags = ColumnFlags.None;

            flags |= column.Flags & ColumnFlags.FIXED_ARRAY;
            flags |= column.Flags & ColumnFlags.EARRAY;
            flags |= column.Flags & ColumnFlags.INDIRECT;

            if (flags == ColumnFlags.INDIRECT)
            {
                var hasValue = input.ReadValueU32();
                if (hasValue == 0)
                {
                    return;
                }
            }

            var index  = input.ReadValueS32();
            var target = column.Subtable.Columns[index];

            output.WriteStartElement("polymorph");
            output.WriteAttributeString("name", target.Name);

            BlobFile.DeserializeColumn(target, input, output);

            output.WriteEndElement();
        }
Exemplo n.º 2
0
        public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
        {
            throw new NotSupportedException();

            /*
             * output.WriteStartElement("x");
             * output.WriteValue(input.ReadValueF32());
             * output.WriteEndElement();
             *
             * output.WriteStartElement("y");
             * output.WriteValue(input.ReadValueF32());
             * output.WriteEndElement();
             *
             * output.WriteStartElement("z");
             * output.WriteValue(input.ReadValueF32());
             * output.WriteEndElement();
             */
        }
Exemplo n.º 3
0
        public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
        {
            var flags = ColumnFlags.None;

            flags |= column.Flags & ColumnFlags.FIXED_ARRAY;
            flags |= column.Flags & ColumnFlags.EARRAY;
            flags |= column.Flags & ColumnFlags.INDIRECT;

            if (flags == ColumnFlags.INDIRECT)
            {
                var hasValue = input.ReadValueU32();
                if (hasValue == 0)
                {
                    return;
                }
            }

            BlobFile.DeserializeTable(column.Subtable, input, output);
        }
Exemplo n.º 4
0
 public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
 {
 }
Exemplo n.º 5
0
 public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
 {
     output.WriteValue(input.ReadValueS32());
 }
Exemplo n.º 6
0
 public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 7
0
        public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
        {
            var value = input.ReadStringPascalUncapped();

            output.WriteValue(value);
        }
Exemplo n.º 8
0
 public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
 {
     throw new NotSupportedException();
     //output.WriteValue(input.ReadValueF32());
 }
Exemplo n.º 9
0
        public override void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output)
        {
            var name = input.ReadString(4, true, Encoding.ASCII);

            if (_NamesToOpcodes.ContainsKey(name) == false)
            {
                throw new FormatException("invalid opcode in multival");
            }
            var op = _NamesToOpcodes[name];

            output.WriteStartElement("opcode");
            output.WriteAttributeString("type", name);

            object arg;

            switch (op)
            {
            case MultiValueOpcode.NON:
            case MultiValueOpcode.O_P:
            case MultiValueOpcode.C_P:
            case MultiValueOpcode.STM:
            case MultiValueOpcode.LES:
            case MultiValueOpcode.ADD:
            case MultiValueOpcode.SUB:
            case MultiValueOpcode.MUL:
            case MultiValueOpcode.EQU:
            case MultiValueOpcode.NOT:
            case MultiValueOpcode.RET:
            case MultiValueOpcode.AND:
            case MultiValueOpcode.NEG:
            case MultiValueOpcode.ORR:
            case MultiValueOpcode.BAN:
            case MultiValueOpcode.RZ_:
            case MultiValueOpcode.NLE:
            case MultiValueOpcode.GRE:
            case MultiValueOpcode.DIV:
            case MultiValueOpcode.BOR:
            case MultiValueOpcode.NGR:
            case MultiValueOpcode.BNT:
            {
                arg = null;
                break;
            }

            case MultiValueOpcode.S_V:
            {
                arg = input.ReadValueU32();
                break;
            }

            case MultiValueOpcode.INT:
            case MultiValueOpcode.JZ_:
            case MultiValueOpcode.J__:
            {
                arg = input.ReadValueS64();
                break;
            }

            case MultiValueOpcode.FLT:
            {
                arg = input.ReadValueF64();
                break;
            }

            case MultiValueOpcode.STR:
            case MultiValueOpcode.FUN:
            case MultiValueOpcode.OBJ:
            case MultiValueOpcode.IDS:
            case MultiValueOpcode.RP_:
            {
                arg = input.ReadStringPascalUncapped();
                break;
            }

            default: throw new NotSupportedException("unhandled opcode in multival");
            }

            if (arg != null)
            {
                output.WriteValue(arg.ToString());
            }

            output.WriteEndElement();
            //output.Flush();
        }
Exemplo n.º 10
0
 public abstract void Deserialize(Stream input, ParseSchema.Column column, XmlWriter output);