Add SchemaVersion to RestoreDocFile to distinquish double from float binary

This commit is contained in:
jriegel 2013-09-23 13:13:50 +02:00
parent 29c3fa6458
commit 68078487c7
39 changed files with 78 additions and 70 deletions

View File

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

View File

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

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 DocumentSchema)
{ {
Base::InputStream str(reader); Base::InputStream str(reader);
uint32_t uCt=0; uint32_t uCt=0;

View File

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

View File

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

View File

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

View File

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

View File

@ -540,7 +540,7 @@ public:
virtual void Restore(Base::XMLReader &reader); virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const; virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader); virtual void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
virtual Property *Copy(void) const; virtual Property *Copy(void) const;
virtual void Paste(const Property &from); virtual void Paste(const Property &from);
@ -833,7 +833,7 @@ public:
virtual void Restore(Base::XMLReader &reader); virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const; virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader); virtual void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
virtual Property *Copy(void) const; virtual Property *Copy(void) const;
virtual void Paste(const Property &from); 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 DocumentSchema)
{ {
} }

View File

@ -145,7 +145,7 @@ public:
* \endcode * \endcode
* @see Base::Reader,Base::XMLReader * @see Base::Reader,Base::XMLReader
*/ */
virtual void RestoreDocFile(Reader &/*reader*/); virtual void RestoreDocFile(Reader &/*reader*/, const int DocumentSchema);
}; };
} //namespace Base } //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. // no file name for the current entry in the zip was registered.
if (jt != FileList.end()) { if (jt != FileList.end()) {
try { try {
jt->Object->RestoreDocFile(zipstream); jt->Object->RestoreDocFile(zipstream, DocumentSchema);
} }
catch(...) { catch(...) {
// For any exception we just continue with the next file. // For any exception we just continue with the next file.

View File

@ -165,6 +165,8 @@ public:
/// Schema Version of the document /// Schema Version of the document
int DocumentSchema; int DocumentSchema;
/// Version of FreeCAD that wrote this document
std::string ProgramVersion;
protected: protected:
/// read the next element /// 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. * * This file is part of the FreeCAD CAx development system. *
* * * *
@ -649,7 +649,7 @@ void Document::Restore(Base::XMLReader &reader)
/** /**
* Restores the properties of the view providers. * Restores the properties of the view providers.
*/ */
void Document::RestoreDocFile(Base::Reader &reader) void Document::RestoreDocFile(Base::Reader &reader, const int DocumentSchema)
{ {
// We must create an XML parser to read from the input stream // We must create an XML parser to read from the input stream
Base::XMLReader xmlReader("GuiDocument.xml", reader); 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. /// This method is used to save large amounts of data to a binary file.
virtual void SaveDocFile (Base::Writer &writer) const; virtual void SaveDocFile (Base::Writer &writer) const;
/// This method is used to restore large amounts of data from a binary file. /// 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 DocumentSchema);
void exportObjects(const std::vector<App::DocumentObject*>&, Base::Writer&); void exportObjects(const std::vector<App::DocumentObject*>&, Base::Writer&);
void importObjects(const std::vector<App::DocumentObject*>&, Base::Reader&); 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); document->exportObjects(objects, w);
} }
void MergeDocuments::RestoreDocFile(Base::Reader & reader) void MergeDocuments::RestoreDocFile(Base::Reader & reader, const int DocumentSchema)
{ {
std::vector<App::DocumentObject*> obj = objects; std::vector<App::DocumentObject*> obj = objects;
// We must create an XML parser to read from the input stream // 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 Save (Base::Writer & w) const;
void Restore(Base::XMLReader &r); void Restore(Base::XMLReader &r);
void SaveDocFile (Base::Writer & w) const; void SaveDocFile (Base::Writer & w) const;
void RestoreDocFile(Base::Reader & r); void RestoreDocFile(Base::Reader & r, const int DocumentSchema);
private: private:
zipios::ZipInputStream* stream; zipios::ZipInputStream* stream;

View File

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

View File

@ -52,7 +52,7 @@ public:
/// This method is used to save large amounts of data to a binary file. /// This method is used to save large amounts of data to a binary file.
void SaveDocFile (Base::Writer &writer) const; void SaveDocFile (Base::Writer &writer) const;
/// This method is used to restore large amounts of data from a binary file. /// 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 DocumentSchema);
//@} //@}
private: private:

View File

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

View File

@ -66,7 +66,7 @@ public:
virtual void Save (Base::Writer &/*writer*/) const; virtual void Save (Base::Writer &/*writer*/) const;
virtual void Restore(Base::XMLReader &/*reader*/); virtual void Restore(Base::XMLReader &/*reader*/);
void SaveDocFile (Base::Writer &writer) const; void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader); void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
/** @name Subelement management */ /** @name Subelement management */
//@{ //@{

View File

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

View File

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

View File

@ -157,7 +157,7 @@ bool MeshTrimming::PolygonContainsCompleteFacet(bool bInner, unsigned long ulInd
bool MeshTrimming::IsPolygonPointInFacet(unsigned long ulIndex, Base::Vector3f& clPoint) bool MeshTrimming::IsPolygonPointInFacet(unsigned long ulIndex, Base::Vector3f& clPoint)
{ {
Base::Vector2D A, B, C, P; Base::Vector2D A, B, C, P;
double u,v,w, fDetPAC, fDetPBC, fDetPAB, fDetABC; float u,v,w, fDetPAC, fDetPBC, fDetPAB, fDetABC;
Base::Polygon2D clFacPoly; Base::Polygon2D clFacPoly;
const MeshGeomFacet &rclFacet = myMesh.GetFacet(ulIndex); const MeshGeomFacet &rclFacet = myMesh.GetFacet(ulIndex);

View File

@ -297,7 +297,7 @@ void MeshObject::Restore(Base::XMLReader &reader)
// this is handled by the property class // this is handled by the property class
} }
void MeshObject::RestoreDocFile(Base::Reader &reader) void MeshObject::RestoreDocFile(Base::Reader &reader, const int DocumentSchema)
{ {
load(reader); load(reader);
} }

View File

@ -147,7 +147,7 @@ public:
void Save (Base::Writer &writer) const; void Save (Base::Writer &writer) const;
void SaveDocFile (Base::Writer &writer) const; void SaveDocFile (Base::Writer &writer) const;
void Restore(Base::XMLReader &reader); void Restore(Base::XMLReader &reader);
void RestoreDocFile(Base::Reader &reader); void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
void save(const char* file,MeshCore::MeshIO::Format f=MeshCore::MeshIO::Undefined, void save(const char* file,MeshCore::MeshIO::Format f=MeshCore::MeshIO::Undefined,
const MeshCore::Material* mat = 0) const; const MeshCore::Material* mat = 0) const;
void save(std::ostream&) const; void save(std::ostream&) const;

View File

@ -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 DocumentSchema)
{ {
Base::InputStream str(reader); Base::InputStream str(reader);
uint32_t uCt=0; uint32_t uCt=0;
@ -478,7 +478,7 @@ void PropertyMeshKernel::SaveDocFile (Base::Writer &writer) const
_meshObject->save(writer.Stream()); _meshObject->save(writer.Stream());
} }
void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader) void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader, const int DocumentSchema)
{ {
aboutToSetValue(); aboutToSetValue();
_meshObject->load(reader); _meshObject->load(reader);

View File

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

View File

@ -304,7 +304,7 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
fi.deleteFile(); fi.deleteFile();
} }
void PropertyPartShape::RestoreDocFile(Base::Reader &reader) void PropertyPartShape::RestoreDocFile(Base::Reader &reader, const int DocumentSchema)
{ {
BRep_Builder builder; 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 DocumentSchema)
{ {
} }
@ -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 DocumentSchema)
{ {
Base::InputStream str(reader); Base::InputStream str(reader);
uint32_t uCt=0; uint32_t uCt=0;

View File

@ -87,7 +87,7 @@ public:
void Restore(Base::XMLReader &reader); void Restore(Base::XMLReader &reader);
void SaveDocFile (Base::Writer &writer) const; void SaveDocFile (Base::Writer &writer) const;
void RestoreDocFile(Base::Reader &reader); void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
App::Property *Copy(void) const; App::Property *Copy(void) const;
void Paste(const App::Property &from); void Paste(const App::Property &from);
@ -138,7 +138,7 @@ public:
virtual void Restore(Base::XMLReader &reader); virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const; virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader); virtual void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
virtual Property *Copy(void) const; virtual Property *Copy(void) const;
virtual void Paste(const Property &from); virtual void Paste(const Property &from);
@ -191,7 +191,7 @@ public:
virtual void Restore(Base::XMLReader &reader); virtual void Restore(Base::XMLReader &reader);
virtual void SaveDocFile (Base::Writer &writer) const; virtual void SaveDocFile (Base::Writer &writer) const;
virtual void RestoreDocFile(Base::Reader &reader); virtual void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
virtual Property *Copy(void) const; virtual Property *Copy(void) const;
virtual void Paste(const Property &from); 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 DocumentSchema)
{ {
} }

View File

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

View File

@ -134,7 +134,7 @@ void PointKernel::Restore(Base::XMLReader &reader)
} }
} }
void PointKernel::RestoreDocFile(Base::Reader &reader) void PointKernel::RestoreDocFile(Base::Reader &reader, const int DocumentSchema)
{ {
Base::InputStream str(reader); Base::InputStream str(reader);
uint32_t uCt = 0; uint32_t uCt = 0;

View File

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

View File

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

View File

@ -60,7 +60,7 @@ public:
/** @name methods overide Feature */ /** @name methods overide Feature */
//@{ //@{
void Restore(Base::XMLReader &reader); void Restore(Base::XMLReader &reader);
void RestoreDocFile(Base::Reader &reader); void RestoreDocFile(Base::Reader &reader, const int DocumentSchema);
/// recalculate the Feature /// recalculate the Feature
virtual App::DocumentObjectExecReturn *execute(void); virtual App::DocumentObjectExecReturn *execute(void);
/// returns the type name of the ViewProvider /// 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 DocumentSchema)
{ {
Base::InputStream str(reader); Base::InputStream str(reader);
uint32_t uCt=0; uint32_t uCt=0;

View File

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

View File

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

View File

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