Added FileVersion attribute to XML format to distinguish legacy float binary files from new double binary files

This commit is contained in:
jrheinlaender 2013-03-27 11:47:18 +04:30
parent 4dcc5eb6cb
commit fdc3e50811
39 changed files with 119 additions and 78 deletions

View File

@ -597,7 +597,11 @@ void Document::Save (Base::Writer &writer) const
<< " FreeCAD Document, see http://free-cad.sourceforge.net for more information..." << endl
<< "-->" << endl;
writer.Stream() << "<Document SchemaVersion=\"4\">" << endl;
//writer.Stream() << "<Document SchemaVersion=\"4\">" << endl;
writer.Stream() << "<Document SchemaVersion=\"4\" ProgramVersion=\""
<< App::Application::Config()["BuildVersionMajor"] << "."
<< App::Application::Config()["BuildVersionMinor"] << "R"
<< App::Application::Config()["BuildRevision"] << "\" FileVersion=\"1\">" << endl;
PropertyContainer::Save(writer);
@ -612,6 +616,16 @@ void Document::Restore(Base::XMLReader &reader)
reader.readElement("Document");
long scheme = reader.getAttributeAsInteger("SchemaVersion");
reader.DocumentSchema = scheme;
if (reader.hasAttribute("ProgramVersion")) {
reader.ProgramVersion = reader.getAttribute("ProgramVersion");
} else {
reader.ProgramVersion = "pre-0.14";
}
if (reader.hasAttribute("FileVersion")) {
reader.FileVersion = reader.getAttributeAsUnsigned("FileVersion");
} else {
reader.FileVersion = 0;
}
// When this document was created the FileName and Label properties
// were set to the absolute path or file name, respectively. To save
@ -693,7 +707,11 @@ void Document::exportObjects(const std::vector<App::DocumentObject*>& obj,
Base::ZipWriter writer(out);
writer.putNextEntry("Document.xml");
writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << endl;
writer.Stream() << "<Document SchemaVersion=\"4\">" << endl;
//writer.Stream() << "<Document SchemaVersion=\"4\">" << endl;
writer.Stream() << "<Document SchemaVersion=\"4\" ProgramVersion=\""
<< App::Application::Config()["BuildVersionMajor"] << "."
<< App::Application::Config()["BuildVersionMinor"] << "R"
<< App::Application::Config()["BuildRevision"] << "\" FileVersion=\"1\">" << endl;
// Add this block to have the same layout as for normal documents
writer.Stream() << "<Properties Count=\"0\">" << endl;
writer.Stream() << "</Properties>" << endl;
@ -800,6 +818,16 @@ Document::importObjects(Base::XMLReader& reader)
reader.readElement("Document");
long scheme = reader.getAttributeAsInteger("SchemaVersion");
reader.DocumentSchema = scheme;
if (reader.hasAttribute("ProgramVersion")) {
reader.ProgramVersion = reader.getAttribute("ProgramVersion");
} else {
reader.ProgramVersion = "pre-0.14";
}
if (reader.hasAttribute("FileVersion")) {
reader.FileVersion = reader.getAttributeAsUnsigned("FileVersion");
} else {
reader.FileVersion = 0;
}
std::vector<App::DocumentObject*> objs = readObjects(reader);
@ -1729,8 +1757,8 @@ std::vector<DocumentObject*> Document::getObjectsOfType(const Base::Type& typeId
std::vector<DocumentObject*> Document::findObjects(const Base::Type& typeId, const char* objname) const
{
boost::regex rx(objname);
boost::cmatch what;
boost::regex rx(objname);
boost::cmatch what;
std::vector<DocumentObject*> Objects;
for (std::vector<DocumentObject*>::const_iterator it = d->objectArray.begin(); it != d->objectArray.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(typeId)) {

View File

@ -327,7 +327,7 @@ void PropertyFileIncluded::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyFileIncluded::RestoreDocFile(Base::Reader &reader)
void PropertyFileIncluded::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::ofstream to(Base::FileInfo(_cValue.c_str()));
if (!to)

View File

@ -91,7 +91,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);
@ -114,4 +114,4 @@ protected:
} // namespace App
#endif // APP_PROPERTFILE_H
#endif // APP_PROPERTFILE_H

View File

@ -301,7 +301,7 @@ void PropertyVectorList::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyVectorList::RestoreDocFile(Base::Reader &reader)
void PropertyVectorList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;

View File

@ -147,7 +147,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);

View File

@ -372,7 +372,7 @@ void PropertyPythonObject::SaveDocFile (Base::Writer &writer) const
writer.Stream().put(*it);
}
void PropertyPythonObject::RestoreDocFile(Base::Reader &reader)
void PropertyPythonObject::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
aboutToSetValue();
std::string buffer;

View File

@ -63,7 +63,7 @@ public:
/** Use Python's pickle module to restore the object */
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual unsigned int getMemSize (void) const;
virtual Property *Copy(void) const;

View File

@ -1127,14 +1127,20 @@ void PropertyFloatList::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyFloatList::RestoreDocFile(Base::Reader &reader)
void PropertyFloatList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;
str >> uCt;
std::vector<double> values(uCt);
for (std::vector<double>::iterator it = values.begin(); it != values.end(); ++it) {
str >> *it;
if (FileVersion > 0) {
str >> *it;
} else {
float val;
str >> val;
(*it) = val;
}
}
setValues(values);
}
@ -2084,7 +2090,7 @@ void PropertyColorList::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyColorList::RestoreDocFile(Base::Reader &reader)
void PropertyColorList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;

View File

@ -537,7 +537,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);
@ -830,7 +830,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);

View File

@ -65,6 +65,6 @@ void Persistence::SaveDocFile (Writer &/*writer*/) const
{
}
void Persistence::RestoreDocFile(Reader &/*reader*/)
void Persistence::RestoreDocFile(Reader &/*reader*/, const int FileVersion)
{
}

View File

@ -145,7 +145,7 @@ public:
* \endcode
* @see Base::Reader,Base::XMLReader
*/
virtual void RestoreDocFile(Reader &/*reader*/);
virtual void RestoreDocFile(Reader &/*reader*/, const int FileVersion);
};
} //namespace Base

View File

@ -304,7 +304,7 @@ void Base::XMLReader::readFiles(zipios::ZipInputStream &zipstream) const
// no file name for the current entry in the zip was registered.
if (jt != FileList.end()) {
try {
jt->Object->RestoreDocFile(zipstream);
jt->Object->RestoreDocFile(zipstream, FileVersion);
}
catch(...) {
// For any exception we just continue with the next file.

View File

@ -165,6 +165,10 @@ public:
/// Schema Version of the document
int DocumentSchema;
/// Version of FreeCAD that wrote this document
std::string ProgramVersion;
/// Version of the file format
int FileVersion;
protected:
/// read the next element

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) 2004 Jürgen Riegel <juergen.riegel@web.de> *
* Copyright (c) 2004 Jrgen Riegel <juergen.riegel@web.de> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
@ -674,7 +674,7 @@ void Document::Restore(Base::XMLReader &reader)
/**
* Restores the properties of the view providers.
*/
void Document::RestoreDocFile(Base::Reader &reader)
void Document::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
// We must create an XML parser to read from the input stream
Base::XMLReader xmlReader("GuiDocument.xml", reader);

View File

@ -119,7 +119,7 @@ public:
/// This method is used to save large amounts of data to a binary file.
virtual void SaveDocFile (Base::Writer &writer) const;
/// This method is used to restore large amounts of data from a binary file.
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
void exportObjects(const std::vector<App::DocumentObject*>&, Base::Writer&);
void importObjects(const std::vector<App::DocumentObject*>&, Base::Reader&);
//@}

View File

@ -160,7 +160,7 @@ void MergeDocuments::SaveDocFile (Base::Writer & w) const
document->exportObjects(objects, w);
}
void MergeDocuments::RestoreDocFile(Base::Reader & reader)
void MergeDocuments::RestoreDocFile(Base::Reader & reader, const int FileVersion)
{
std::vector<App::DocumentObject*> obj = objects;
// We must create an XML parser to read from the input stream

View File

@ -49,7 +49,7 @@ public:
void Save (Base::Writer & w) const;
void Restore(Base::XMLReader &r);
void SaveDocFile (Base::Writer & w) const;
void RestoreDocFile(Base::Reader & r);
void RestoreDocFile(Base::Reader & r, const int FileVersion);
private:
zipios::ZipInputStream* stream;

View File

@ -110,6 +110,6 @@ void Thumbnail::SaveDocFile (Base::Writer &writer) const
writer.Stream().write(ba.constData(), ba.length());
}
void Thumbnail::RestoreDocFile(Base::Reader &reader)
void Thumbnail::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
}

View File

@ -50,7 +50,7 @@ public:
/// This method is used to save large amounts of data to a binary file.
void SaveDocFile (Base::Writer &writer) const;
/// This method is used to restore large amounts of data from a binary file.
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
//@}
private:

View File

@ -744,7 +744,7 @@ void FemMesh::SaveDocFile (Base::Writer &writer) const
fi.deleteFile();
}
void FemMesh::RestoreDocFile(Base::Reader &reader)
void FemMesh::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
// create a temporary file and copy the content from the zip stream
Base::FileInfo fi(Base::FileInfo::getTempFileName().c_str());

View File

@ -23,7 +23,7 @@
#ifndef FEM_FEMMESH_H
#define FEM_FEMMESH_H
#include <App/ComplexGeoData.h>
#include <Base/Placement.h>
@ -65,7 +65,7 @@ public:
virtual void Save (Base::Writer &/*writer*/) const;
virtual void Restore(Base::XMLReader &/*reader*/);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
/** @name Subelement management */
//@{

View File

@ -162,9 +162,9 @@ void PropertyFemMesh::SaveDocFile (Base::Writer &writer) const
_FemMesh->SaveDocFile(writer);
}
void PropertyFemMesh::RestoreDocFile(Base::Reader &reader)
void PropertyFemMesh::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
aboutToSetValue();
_FemMesh->RestoreDocFile(reader);
_FemMesh->RestoreDocFile(reader, FileVersion);
hasSetValue();
}

View File

@ -77,7 +77,7 @@ public:
void Save (Base::Writer &writer) const;
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
App::Property *Copy(void) const;
void Paste(const App::Property &from);

View File

@ -297,7 +297,7 @@ void MeshObject::Restore(Base::XMLReader &reader)
// this is handled by the property class
}
void MeshObject::RestoreDocFile(Base::Reader &reader)
void MeshObject::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
load(reader);
}
@ -1154,8 +1154,8 @@ void MeshObject::removeSelfIntersections(const std::vector<unsigned long>& indic
for (it = indices.begin(); it != indices.end(); ) {
unsigned long id1 = *it; ++it;
unsigned long id2 = *it; ++it;
selfIntersections.push_back(std::make_pair
<unsigned long, unsigned long>(id1,id2));
selfIntersections.push_back(std::make_pair
<unsigned long, unsigned long>(id1,id2));
}
if (!selfIntersections.empty()) {
@ -1171,12 +1171,12 @@ void MeshObject::removeFoldsOnSurface()
MeshCore::MeshEvalFoldsOnSurface s_eval(_kernel);
MeshCore::MeshEvalFoldOversOnSurface f_eval(_kernel);
f_eval.Evaluate();
std::vector<unsigned long> inds = f_eval.GetIndices();
s_eval.Evaluate();
f_eval.Evaluate();
std::vector<unsigned long> inds = f_eval.GetIndices();
s_eval.Evaluate();
std::vector<unsigned long> inds1 = s_eval.GetIndices();
// remove duplicates
inds.insert(inds.end(), inds1.begin(), inds1.end());
std::sort(inds.begin(), inds.end());
@ -1188,8 +1188,8 @@ void MeshObject::removeFoldsOnSurface()
// do this as additional check after removing folds on closed area
for (int i=0; i<5; i++) {
MeshCore::MeshEvalFoldsOnBoundary b_eval(_kernel);
if (b_eval.Evaluate())
break;
if (b_eval.Evaluate())
break;
inds = b_eval.GetIndices();
if (!inds.empty())
deleteFacets(inds);

View File

@ -141,7 +141,7 @@ public:
void Save (Base::Writer &writer) const;
void SaveDocFile (Base::Writer &writer) const;
void Restore(Base::XMLReader &reader);
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
void save(const char* file,MeshCore::MeshIO::Format f=MeshCore::MeshIO::Undefined,
const MeshCore::Material* mat = 0) const;
void save(std::ostream&) const;
@ -175,7 +175,7 @@ public:
void addMesh(const MeshCore::MeshKernel&);
void deleteFacets(const std::vector<unsigned long>& removeIndices);
void deletePoints(const std::vector<unsigned long>& removeIndices);
std::vector<std::vector<unsigned long> > getComponents() const;
std::vector<std::vector<unsigned long> > getComponents() const;
unsigned long countComponents() const;
void removeComponents(unsigned long);
/**
@ -364,4 +364,4 @@ private:
} // namespace Mesh
#endif // MESH_MESH_H
#endif // MESH_MESH_H

View File

@ -45,7 +45,7 @@ using namespace Mesh;
TYPESYSTEM_SOURCE(Mesh::PropertyNormalList, App::PropertyVectorList);
TYPESYSTEM_SOURCE(Mesh::PropertyCurvatureList , App::PropertyLists);
TYPESYSTEM_SOURCE(Mesh::PropertyMeshKernel , App::PropertyComplexGeoData);
void PropertyNormalList::transform(const Base::Matrix4D &mat)
{
// A normal vector is only a direction with unit length, so we only need to rotate it
@ -221,7 +221,7 @@ void PropertyCurvatureList::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader)
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;
@ -422,7 +422,7 @@ void PropertyMeshKernel::setPyObject(PyObject *value)
}
}
else if (PyList_Check(value)) {
// new instance of MeshObject
// new instance of MeshObject
Py::List triangles(value);
MeshObject* mesh = MeshObject::createMeshFromList(triangles);
setValuePtr(mesh);
@ -478,7 +478,7 @@ void PropertyMeshKernel::SaveDocFile (Base::Writer &writer) const
_meshObject->save(writer.Stream());
}
void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader)
void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
aboutToSetValue();
_meshObject->load(reader);
@ -500,4 +500,4 @@ void PropertyMeshKernel::Paste(const App::Property &from)
const PropertyMeshKernel& prop = dynamic_cast<const PropertyMeshKernel&>(from);
*(this->_meshObject) = *(prop._meshObject);
hasSetValue();
}
}

View File

@ -107,7 +107,7 @@ public:
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
/** @name Python interface */
//@{
@ -205,7 +205,7 @@ public:
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
App::Property *Copy(void) const;
void Paste(const App::Property &from);

View File

@ -261,8 +261,8 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
const TopoDS_Shape& myShape = copy.Shape();
BRepTools::Clean(myShape); // remove triangulation
// create a temporary file and copy the content to the zip stream
// once the tmp. filename is known use always the same because otherwise
// create a temporary file and copy the content to the zip stream
// once the tmp. filename is known use always the same because otherwise
// we may run into some problems on the Linux platform
static Base::FileInfo fi(Base::FileInfo::getTempFileName());
@ -304,7 +304,7 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
fi.deleteFile();
}
void PropertyPartShape::RestoreDocFile(Base::Reader &reader)
void PropertyPartShape::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
BRep_Builder builder;
@ -397,7 +397,7 @@ void PropertyShapeHistory::SaveDocFile (Base::Writer &writer) const
{
}
void PropertyShapeHistory::RestoreDocFile(Base::Reader &reader)
void PropertyShapeHistory::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
}
@ -505,7 +505,7 @@ void PropertyFilletEdges::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyFilletEdges::RestoreDocFile(Base::Reader &reader)
void PropertyFilletEdges::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;

View File

@ -87,7 +87,7 @@ public:
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
App::Property *Copy(void) const;
void Paste(const App::Property &from);
@ -138,7 +138,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);
@ -191,7 +191,7 @@ public:
virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader);
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);

View File

@ -939,7 +939,7 @@ void TopoShape::SaveDocFile (Base::Writer &writer) const
{
}
void TopoShape::RestoreDocFile(Base::Reader &reader)
void TopoShape::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
}

View File

@ -111,7 +111,7 @@ public:
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
unsigned int getMemSize (void) const;
//@}

View File

@ -134,19 +134,22 @@ void PointKernel::Restore(Base::XMLReader &reader)
}
}
void PointKernel::RestoreDocFile(Base::Reader &reader)
void PointKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt = 0;
str >> uCt;
_Points.resize(uCt);
for (unsigned long i=0; i < uCt; i++) {
// if doubleFileVersion
// double x, y, z
// else
float x, y, z;
str >> x >> y >> z;
_Points[i].Set(x,y,z);
if (FileVersion > 0) {
double x, y, z;
str >> x >> y >> z;
_Points[i].Set(x,y,z);
} else {
float x, y, z;
str >> x >> y >> z;
_Points[i].Set(x,y,z);
}
}
}

View File

@ -90,7 +90,7 @@ public:
void Save (Base::Writer &writer) const;
void SaveDocFile (Base::Writer &writer) const;
void Restore(Base::XMLReader &reader);
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
void save(const char* file) const;
void save(std::ostream&) const;
void load(const char* file);

View File

@ -64,10 +64,10 @@ void Feature::Restore(Base::XMLReader &reader)
GeoFeature::Restore(reader);
}
void Feature::RestoreDocFile(Base::Reader &reader)
void Feature::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
// This gets only invoked if a points file has been added from Restore()
Points.RestoreDocFile(reader);
Points.RestoreDocFile(reader, FileVersion);
}
void Feature::onChanged(const App::Property* prop)

View File

@ -60,7 +60,7 @@ public:
/** @name methods overide Feature */
//@{
void Restore(Base::XMLReader &reader);
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
/// recalculate the Feature
virtual App::DocumentObjectExecReturn *execute(void);
/// returns the type name of the ViewProvider

View File

@ -291,7 +291,7 @@ void PropertyCurvatureList::SaveDocFile (Base::Writer &writer) const
}
}
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader)
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
Base::InputStream str(reader);
uint32_t uCt=0;

View File

@ -141,7 +141,7 @@ public:
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
//@}
/** @name Undo/Redo */

View File

@ -134,10 +134,10 @@ void PropertyPointKernel::SaveDocFile (Base::Writer &writer) const
// does nothing
}
void PropertyPointKernel::RestoreDocFile(Base::Reader &reader)
void PropertyPointKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
{
aboutToSetValue();
_cPoints->RestoreDocFile(reader);
_cPoints->RestoreDocFile(reader, FileVersion);
hasSetValue();
}

View File

@ -78,7 +78,7 @@ public:
void Save (Base::Writer &writer) const;
void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader);
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
//@}
/** @name Modification */