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");
}
}