Added support for double Vec*Array objects

This commit is contained in:
Robert Osfield
2007-12-04 14:44:49 +00:00
parent a909a62b85
commit 2e821b77a2

View File

@@ -550,6 +550,23 @@ Array* Array_readLocalData(Input& fr)
++fr;
return_array = array;
}
else if (strcmp(arrayName,"DoubleArray")==0)
{
DoubleArray* array = new DoubleArray;
array->reserve(capacity);
while (!fr.eof() && fr[0].getNoNestedBrackets()>entry)
{
double double_value;
if (fr[0].getFloat(double_value))
{
++fr;
array->push_back(double_value);
}
else ++fr;
}
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec2Array")==0)
{
Vec2Array* array = new Vec2Array;
@@ -567,6 +584,23 @@ Array* Array_readLocalData(Input& fr)
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec2dArray")==0)
{
Vec2dArray* array = new Vec2dArray;
array->reserve(capacity);
while (!fr.eof() && fr[0].getNoNestedBrackets()>entry)
{
Vec2d v;
if (fr[0].getFloat(v.x()) && fr[1].getFloat(v.y()))
{
fr += 2;
array->push_back(v);
}
else ++fr;
}
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec3Array")==0)
{
Vec3Array* array = new Vec3Array;
@@ -584,6 +618,23 @@ Array* Array_readLocalData(Input& fr)
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec3dArray")==0)
{
Vec3dArray* array = new Vec3dArray;
array->reserve(capacity);
while (!fr.eof() && fr[0].getNoNestedBrackets()>entry)
{
Vec3d v;
if (fr[0].getFloat(v.x()) && fr[1].getFloat(v.y()) && fr[2].getFloat(v.z()))
{
fr += 3;
array->push_back(v);
}
else ++fr;
}
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec4Array")==0)
{
Vec4Array* array = new Vec4Array;
@@ -601,6 +652,23 @@ Array* Array_readLocalData(Input& fr)
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec4dArray")==0)
{
Vec4dArray* array = new Vec4dArray;
array->reserve(capacity);
while (!fr.eof() && fr[0].getNoNestedBrackets()>entry)
{
Vec4d v;
if (fr[0].getFloat(v.x()) && fr[1].getFloat(v.y()) && fr[2].getFloat(v.z()) && fr[3].getFloat(v.w()))
{
fr += 4;
array->push_back(v);
}
else ++fr;
}
++fr;
return_array = array;
}
else if (strcmp(arrayName,"Vec2bArray")==0)
{
Vec2bArray* array = new Vec2bArray;
@@ -835,6 +903,46 @@ bool Array_writeLocalData(const Array& array,Output& fw)
return true;
}
break;
case(Array::DoubleArrayType):
{
int prec = fw.precision(15);
const DoubleArray& carray = static_cast<const DoubleArray&>(array);
fw<<array.className()<<" "<<carray.size()<<std::endl;
writeArray(fw,carray.begin(),carray.end());
fw.precision(prec);
return true;
}
break;
case(Array::Vec2dArrayType):
{
int prec = fw.precision(15);
const Vec2dArray& carray = static_cast<const Vec2dArray&>(array);
fw<<array.className()<<" "<<carray.size()<<std::endl;
writeArray(fw,carray.begin(),carray.end(),1);
fw.precision(prec);
return true;
}
break;
case(Array::Vec3dArrayType):
{
int prec = fw.precision(15);
const Vec3dArray& carray = static_cast<const Vec3dArray&>(array);
fw<<array.className()<<" "<<carray.size()<<std::endl;
writeArray(fw,carray.begin(),carray.end(),1);
fw.precision(prec);
return true;
}
break;
case(Array::Vec4dArrayType):
{
int prec = fw.precision(15);
const Vec4dArray& carray = static_cast<const Vec4dArray&>(array);
fw<<array.className()<<" "<<carray.size()<<std::endl;
writeArray(fw,carray.begin(),carray.end(),1);
fw.precision(prec);
return true;
}
break;
case(Array::Vec2sArrayType):
{
const Vec2sArray& carray = static_cast<const Vec2sArray&>(array);