Exemplo n.º 1
0
            public static TdfUnion Create(string Label, byte unionType = 0x7F, Tdf data = null)
            {
                TdfUnion res = new TdfUnion();

                res.Set(Label, 6);
                res.UnionType    = unionType;
                res.UnionContent = data;
                return(res);
            }
Exemplo n.º 2
0
        public static TdfDoubleVal ReadTdfDoubleVal(Tdf head, Stream s)
        {
            TdfDoubleVal res = new TdfDoubleVal();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            res.Value = ReadDoubleVal(s);
            return(res);
        }
Exemplo n.º 3
0
        public static TdfString ReadTdfString(Tdf head, Stream s)
        {
            TdfString res = new TdfString();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            res.Value = ReadString(s);
            return(res);
        }
Exemplo n.º 4
0
        public static TdfInteger ReadTdfInteger(Tdf head, Stream s)
        {
            TdfInteger res = new TdfInteger();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            res.Value = DecompressInteger(s);
            return(res);
        }
Exemplo n.º 5
0
        public static TdfFloat ReadTdfFloat(Tdf head, Stream s)
        {
            TdfFloat res = new TdfFloat();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            byte[] buff = new byte[4];
            s.Read(buff, 0, 4);
            res.Value = BitConverter.ToSingle(buff, 0);
            return(res);
        }
Exemplo n.º 6
0
        public static TdfStruct ReadTdfStruct(Tdf head, Stream s)
        {
            TdfStruct res = new TdfStruct();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            bool has2 = false;

            res.Values      = ReadStruct(s, out has2);
            res.startswith2 = has2;
            return(res);
        }
Exemplo n.º 7
0
        public static TdfBlob ReadTdfBlob(Tdf head, Stream s)
        {
            TdfBlob res = new TdfBlob();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            res.Data  = new byte[DecompressInteger(s)];
            for (int i = 0; i < res.Data.Length; i++)
            {
                res.Data[i] = (byte)s.ReadByte();
            }
            return(res);
        }
Exemplo n.º 8
0
        public static TdfUnion ReadTdfUnion(Tdf head, Stream s)
        {
            TdfUnion res = new TdfUnion();

            res.Label     = head.Label;
            res.Tag       = head.Tag;
            res.Type      = head.Type;
            res.UnionType = (byte)s.ReadByte();
            if (res.UnionType != 0x7F)
            {
                res.UnionContent = ReadTdf(s);
            }
            return(res);
        }
Exemplo n.º 9
0
        public static Tdf ReadTdf(Stream s)
        {
            Tdf  res  = new Tdf();
            uint Head = ReadUInt(s);

            res.Tag   = (Head & 0xFFFFFF00);
            res.Label = TagToLabel(res.Tag);
            res.Type  = (byte)(Head & 0xFF);
            switch (res.Type)
            {
            case 0:
                return(ReadTdfInteger(res, s));

            case 1:
                return(ReadTdfString(res, s));

            case 2:
                return(ReadTdfBlob(res, s));

            case 3:
                return(ReadTdfStruct(res, s));

            case 4:
                return(ReadTdfList(res, s));

            case 5:
                return(ReadTdfDoubleList(res, s));

            case 6:
                return(ReadTdfUnion(res, s));

            case 7:
                return(ReadTdfIntegerList(res, s));

            case 8:
                return(ReadTdfDoubleVal(res, s));

            case 9:
                return(ReadTdfTrippleVal(res, s));

            case 0xA:
                return(ReadTdfFloat(res, s));

            default:
                throw new Exception("Unknown Tdf Type: " + res.Type);
            }
        }
Exemplo n.º 10
0
        public static TdfIntegerList ReadTdfIntegerList(Tdf head, Stream s)
        {
            TdfIntegerList res = new TdfIntegerList();

            res.Label = head.Label;
            res.Tag   = head.Tag;
            res.Type  = head.Type;
            res.Count = (int)DecompressInteger(s);
            for (int i = 0; i < res.Count; i++)
            {
                if (res.List == null)
                {
                    res.List = new List <long>();
                }
                List <long> l1 = (List <long>)res.List;
                l1.Add(DecompressInteger(s));
                res.List = l1;
            }
            return(res);
        }
Exemplo n.º 11
0
        public static TdfDoubleList ReadTdfDoubleList(Tdf head, Stream s)
        {
            TdfDoubleList res = new TdfDoubleList();

            res.Label    = head.Label;
            res.Tag      = head.Tag;
            res.Type     = head.Type;
            res.SubType1 = (byte)s.ReadByte();
            res.SubType2 = (byte)s.ReadByte();
            res.Count    = (int)DecompressInteger(s);
            for (int i = 0; i < res.Count; i++)
            {
                switch (res.SubType1)
                {
                case 0:
                    if (res.List1 == null)
                    {
                        res.List1 = new List <long>();
                    }
                    List <long> l1 = (List <long>)res.List1;
                    l1.Add(DecompressInteger(s));
                    res.List1 = l1;
                    break;

                case 1:
                    if (res.List1 == null)
                    {
                        res.List1 = new List <string>();
                    }
                    List <string> l2 = (List <string>)res.List1;
                    l2.Add(ReadString(s));
                    res.List1 = l2;
                    break;

                case 3:
                    if (res.List1 == null)
                    {
                        res.List1 = new List <TdfStruct>();
                    }
                    List <TdfStruct> l3  = (List <TdfStruct>)res.List1;
                    Blaze.TdfStruct  tmp = new TdfStruct();
                    tmp.startswith2 = false;
                    tmp.Values      = ReadStruct(s, out tmp.startswith2);
                    l3.Add(tmp);
                    res.List1 = l3;
                    break;

                case 0xA:
                    if (res.List1 == null)
                    {
                        res.List1 = new List <float>();
                    }
                    List <float> lf3 = (List <float>)res.List1;
                    lf3.Add(ReadFloat(s));
                    res.List1 = lf3;
                    break;

                default:
                    throw new Exception("Unknown Tdf Type in Double List: " + res.SubType1);
                }
                switch (res.SubType2)
                {
                case 0:
                    if (res.List2 == null)
                    {
                        res.List2 = new List <long>();
                    }
                    List <long> l1 = (List <long>)res.List2;
                    l1.Add(DecompressInteger(s));
                    res.List2 = l1;
                    break;

                case 1:
                    if (res.List2 == null)
                    {
                        res.List2 = new List <string>();
                    }
                    List <string> l2 = (List <string>)res.List2;
                    l2.Add(ReadString(s));
                    res.List2 = l2;
                    break;

                case 3:
                    if (res.List2 == null)
                    {
                        res.List2 = new List <TdfStruct>();
                    }
                    List <TdfStruct> l3  = (List <TdfStruct>)res.List2;
                    Blaze.TdfStruct  tmp = new TdfStruct();
                    tmp.startswith2 = false;
                    tmp.Values      = ReadStruct(s, out tmp.startswith2);
                    l3.Add(tmp);
                    res.List2 = l3;
                    break;

                case 0xA:
                    if (res.List2 == null)
                    {
                        res.List2 = new List <float>();
                    }
                    List <float> lf3 = (List <float>)res.List2;
                    lf3.Add(ReadFloat(s));
                    res.List2 = lf3;
                    break;

                default:
                    throw new Exception("Unknown Tdf Type in Double List: " + res.SubType2);
                }
            }
            return(res);
        }
Exemplo n.º 12
0
        public static TdfList ReadTdfList(Tdf head, Stream s)
        {
            TdfList res = new TdfList();

            res.Label   = head.Label;
            res.Tag     = head.Tag;
            res.Type    = head.Type;
            res.SubType = (byte)s.ReadByte();
            res.Count   = (int)DecompressInteger(s);
            for (int i = 0; i < res.Count; i++)
            {
                switch (res.SubType)
                {
                case 0:
                    if (res.List == null)
                    {
                        res.List = new List <long>();
                    }
                    List <long> l1 = (List <long>)res.List;
                    l1.Add(DecompressInteger(s));
                    res.List = l1;
                    break;

                case 1:
                    if (res.List == null)
                    {
                        res.List = new List <string>();
                    }
                    List <string> l2 = (List <string>)res.List;
                    l2.Add(ReadString(s));
                    res.List = l2;
                    break;

                case 3:
                    if (res.List == null)
                    {
                        res.List = new List <TdfStruct>();
                    }
                    List <TdfStruct> l3  = (List <TdfStruct>)res.List;
                    Blaze.TdfStruct  tmp = new TdfStruct();
                    tmp.startswith2 = false;
                    tmp.Values      = ReadStruct(s, out tmp.startswith2);
                    l3.Add(tmp);
                    res.List = l3;
                    break;

                case 9:
                    if (res.List == null)
                    {
                        res.List = new List <TrippleVal>();
                    }
                    List <TrippleVal> l4 = (List <TrippleVal>)res.List;
                    l4.Add(ReadTrippleVal(s));
                    res.List = l4;
                    break;

                default:
                    throw new Exception("Unknown Tdf Type in List: " + res.Type);
                }
            }
            return(res);
        }
Exemplo n.º 13
0
        public static void WriteTdf(Tdf tdf, Stream s)
        {
            s.WriteByte((byte)(tdf.Tag >> 24));
            s.WriteByte((byte)(tdf.Tag >> 16));
            s.WriteByte((byte)(tdf.Tag >> 8));
            s.WriteByte(tdf.Type);
            switch (tdf.Type)
            {
            case 0:
                TdfInteger ti = (TdfInteger)tdf;
                CompressInteger(ti.Value, s);
                break;

            case 1:
                TdfString ts = (TdfString)tdf;
                WriteString(ts.Value, s);
                break;

            case 2:
                TdfBlob tb = (TdfBlob)tdf;
                CompressInteger(tb.Data.Length, s);
                for (int i = 0; i < tb.Data.Length; i++)
                {
                    s.WriteByte(tb.Data[i]);
                }
                break;

            case 3:
                TdfStruct tst = (TdfStruct)tdf;
                if (tst.startswith2)
                {
                    s.WriteByte(2);
                }
                foreach (Tdf ttdf in tst.Values)
                {
                    WriteTdf(ttdf, s);
                }
                s.WriteByte(0);
                break;

            case 4:
                WriteTdfList((TdfList)tdf, s);
                break;

            case 5:
                WriteTdfDoubleList((TdfDoubleList)tdf, s);
                break;

            case 6:
                TdfUnion tu = (TdfUnion)tdf;
                s.WriteByte(tu.UnionType);
                if (tu.UnionType != 0x7F)
                {
                    WriteTdf(tu.UnionContent, s);
                }
                break;

            case 7:
                TdfIntegerList til = (TdfIntegerList)tdf;
                CompressInteger(til.Count, s);
                if (til.Count != 0)
                {
                    foreach (long l in til.List)
                    {
                        CompressInteger(l, s);
                    }
                }
                break;

            case 8:
                WriteDoubleValue(((TdfDoubleVal)tdf).Value, s);
                break;

            case 9:
                WriteTrippleValue(((TdfTrippleVal)tdf).Value, s);
                break;

            case 0xA:
                TdfFloat tf = (TdfFloat)tdf;
                WriteFloat(s, tf.Value);
                break;
            }
        }