bool Array_writeLocalData( const osg::Array& array, osgDB::Output& fw )
{
    switch(array.getType())
    {
    case( osg::Array::ByteArrayType):
    {
        const osg::ByteArray& carray = static_cast<const osg::ByteArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArrayAsInts(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::ShortArrayType):
    {
        const osg::ShortArray& carray = static_cast<const osg::ShortArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::IntArrayType):
    {
        const osg::IntArray& carray = static_cast<const osg::IntArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::UByteArrayType):
    {
        const osg::UByteArray& carray = static_cast<const osg::UByteArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArrayAsInts(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::UShortArrayType):
    {
        const osg::UShortArray& carray = static_cast<const osg::UShortArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::UIntArrayType):
    {
        const osg::UIntArray& carray = static_cast<const osg::UIntArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<" ";
        osgDB::writeArray(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::Vec4ubArrayType):
    {
        const osg::Vec4ubArray& carray = static_cast<const osg::Vec4ubArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<" ";
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case( osg::Array::FloatArrayType):
    {
        const osg::FloatArray& carray = static_cast<const osg::FloatArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end());
        return true;
    }
    break;
    case( osg::Array::Vec2ArrayType):
    {
        const osg::Vec2Array& carray = static_cast<const osg::Vec2Array&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case( osg::Array::Vec3ArrayType):
    {
        const osg::Vec3Array& carray = static_cast<const osg::Vec3Array&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case( osg::Array::Vec4ArrayType):
    {
        const osg::Vec4Array& carray = static_cast<const osg::Vec4Array&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case( osg::Array::DoubleArrayType):
    {
        int prec = fw.precision(15);
        const osg::DoubleArray& carray = static_cast<const osg::DoubleArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end());
        fw.precision(prec);
        return true;
    }
    break;
    case( osg::Array::Vec2dArrayType):
    {
        int prec = fw.precision(15);
        const osg::Vec2dArray& carray = static_cast<const osg::Vec2dArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        fw.precision(prec);
        return true;
    }
    break;
    case( osg::Array::Vec3dArrayType):
    {
        int prec = fw.precision(15);
        const osg::Vec3dArray& carray = static_cast<const osg::Vec3dArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        fw.precision(prec);
        return true;
    }
    break;
    case( osg::Array::Vec4dArrayType):
    {
        int prec = fw.precision(15);
        const osg::Vec4dArray& carray = static_cast<const osg::Vec4dArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        fw.precision(prec);
        return true;
    }
    break;
    case( osg::Array::Vec2sArrayType):
    {
        const osg::Vec2sArray& carray = static_cast<const osg::Vec2sArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(), 3);
        return true;
    }
    break;
    case( osg::Array::Vec3sArrayType):
    {
        const osg::Vec3sArray& carray = static_cast<const osg::Vec3sArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(), 2);
        return true;
    }
    break;
    case( osg::Array::Vec4sArrayType):
    {
        const osg::Vec4sArray& carray = static_cast<const osg::Vec4sArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<std::endl;
        osgDB::writeArray(fw,carray.begin(),carray.end(), 1);
        return true;
    }
    break;
    case( osg::Array::Vec2bArrayType):
    {
        const osg::Vec2bArray& carray = static_cast<const osg::Vec2bArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<" ";
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case( osg::Array::Vec3bArrayType):
    {
        const osg::Vec3bArray& carray = static_cast<const osg::Vec3bArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<" ";
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case(osg::Array::Vec4bArrayType):
    {
        const osg::Vec4bArray& carray = static_cast<const osg::Vec4bArray&>(array);
        fw<<array.className()<<" "<<carray.size()<<" ";
        osgDB::writeArray(fw,carray.begin(),carray.end(),1);
        return true;
    }
    break;
    case(osg::Array::ArrayType):
    default:
        return false;
    }
}