hessiancsharp.io.CBasicDeserializer.ReadList C# (CSharp) Method

ReadList() public method

Reads arrays
public ReadList ( AbstractHessianInput abstractHessianInput, int intLength ) : Object
abstractHessianInput AbstractHessianInput Hessian Input instance
intLength int Array length
return Object
        public override Object ReadList(AbstractHessianInput abstractHessianInput, int intLength)
        {
            switch (m_intCode)
            {
                case INTEGER_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        int []arrData = new int[intLength];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadInt();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadInt());

                        abstractHessianInput.ReadEnd();

                        int []arrData = new int[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (int) list[i];

                        abstractHessianInput.AddRef(arrData);

                        return arrData;
                    }
                }

                case SBYTE_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        sbyte[] arrData = new sbyte[intLength];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (sbyte)abstractHessianInput.ReadInt();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (!abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadInt());

                        abstractHessianInput.ReadEnd();

                        sbyte[] arrData = new sbyte[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (sbyte)list[i];

                        abstractHessianInput.AddRef(arrData);

                        return arrData;
                    }
                }

                case STRING_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        string []arrData = new String[intLength];
                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadString();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadString());

                        abstractHessianInput.ReadEnd();

                        string []arrData = new String[list.Count];
                        abstractHessianInput.AddRef(arrData);
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (string) list[i];

                        return arrData;
                    }
                }

                case BOOLEAN_ARRAY:
                {

                    if (intLength >= 0)
                    {
                        bool []arrData = new bool[intLength];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadBoolean();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadBoolean());

                        abstractHessianInput.ReadEnd();

                        bool []arrData = new bool[list.Count];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (bool) list[i];
                        return arrData;
                    }
                }

                case SHORT_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        short []arrData = new short[intLength];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (short) abstractHessianInput.ReadInt();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add((short) abstractHessianInput.ReadInt());

                        abstractHessianInput.ReadEnd();

                        short []arrData = new short[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (short) list[i];

                        abstractHessianInput.AddRef(arrData);

                        return arrData;
                    }
                }

                case LONG_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        long []arrData = new long[intLength];

                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadLong();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadLong());

                        abstractHessianInput.ReadEnd();

                        long []arrData = new long[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (long) list[i];

                        abstractHessianInput.AddRef(arrData);

                        return arrData;
                    }
                }

                case FLOAT_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        float []arrData = new float[intLength];
                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (float)(abstractHessianInput.ReadDouble());

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadDouble());

                        abstractHessianInput.ReadEnd();

                        float []arrData = new float[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = (float) list[i];

                        abstractHessianInput.AddRef(arrData);

                        return arrData;
                    }
                }

                case DOUBLE_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        double []arrData = new double[intLength];
                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadDouble();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadDouble());

                        abstractHessianInput.ReadEnd();

                        double []data = new double[list.Count];
                        abstractHessianInput.AddRef(data);
                        for (int i = 0; i < data.Length; i++)
                            data[i] = (double) list[i];

                        return data;
                    }
                }

                case OBJECT_ARRAY:
                {
                    if (intLength >= 0)
                    {
                        object []arrData = new Object[intLength];
                        abstractHessianInput.AddRef(arrData);

                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = abstractHessianInput.ReadObject();

                        abstractHessianInput.ReadEnd();

                        return arrData;
                    }
                    else
                    {
                        List<Object> list = new List<Object>();

                        abstractHessianInput.AddRef(list); // XXX: potential issues here

                        while (! abstractHessianInput.IsEnd())
                            list.Add(abstractHessianInput.ReadObject());

                        abstractHessianInput.ReadEnd();

                        object []arrData = new Object[list.Count];
                        for (int i = 0; i < arrData.Length; i++)
                            arrData[i] = list[i];

                        return arrData;
                    }
                }
                default:
                    throw new CHessianException("not supperted type for deserialization");
            }
        }