Part/Sketcher: GeometryExtension/GeometryPersistentExtension split
================================================================== GeometryExtension was originally designed to be serializable (save/restore). However, GeometryMigrationExtension and ViewProviderSketchGeometryExtension have demonstrated the usefulness of runtime-only GeometryExtensions. The problem with runtime-only extensions being of a serializable type (GeometryExtension before this commit) arises when Part::Geometry is to serialize the extensions and serialise the number of extensions the geometry has. If runtime-only GeometryExtensions do not save a tag, then the restore mechanism will expect more extensions that are actually in the XML file. This commit makes GeometryExtension by default not serializable and deriving directly from Base::BaseClass. A new class GeometryPersistentExtension is created, deriving from GeometryExtension to provide serialisation. All Extensions requiring serialization derive from GeometryPersistentExtension and those not requiring it from GeometryExtension directly. This commit adapts all extensions to the new situation: Part: GeometryDefaultExtension Part: GeometryMigrationExtension Sketcher: ViewProvierSketchGeometryExtension Sketcher: SketchGeometryExtension and ExternalGeometryExtension
This commit is contained in:
committed by
abdullahtahiriyo
parent
4e199bd23e
commit
11d4d6c18e
@@ -45,12 +45,6 @@ GeometryDefaultExtension<T>::GeometryDefaultExtension(const T& val, std::string
|
||||
}
|
||||
|
||||
// Persistence implementer
|
||||
template <typename T>
|
||||
unsigned int GeometryDefaultExtension<T>::getMemSize (void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void GeometryDefaultExtension<T>::Save(Base::Writer &writer) const
|
||||
{
|
||||
@@ -114,7 +108,7 @@ namespace Part {
|
||||
//typedef Part::GeometryStringExtension<std::string> GeometryStringExtension;
|
||||
|
||||
// ---------- GeometryIntExtension ----------
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryIntExtension,Part::GeometryExtension)
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryIntExtension,Part::GeometryPersistenceExtension)
|
||||
|
||||
template <>
|
||||
PyObject * GeometryDefaultExtension<long>::getPyObject(void)
|
||||
@@ -131,7 +125,7 @@ void GeometryDefaultExtension<long>::Restore(Base::XMLReader &reader)
|
||||
}
|
||||
|
||||
// ---------- GeometryStringExtension ----------
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryStringExtension,Part::GeometryExtension)
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryStringExtension,Part::GeometryPersistenceExtension)
|
||||
|
||||
template <>
|
||||
PyObject * GeometryDefaultExtension<std::string>::getPyObject(void)
|
||||
@@ -140,7 +134,7 @@ PyObject * GeometryDefaultExtension<std::string>::getPyObject(void)
|
||||
}
|
||||
|
||||
// ---------- GeometryBoolExtension ----------
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryBoolExtension,Part::GeometryExtension)
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryBoolExtension,Part::GeometryPersistenceExtension)
|
||||
|
||||
template <>
|
||||
PyObject * GeometryDefaultExtension<bool>::getPyObject(void)
|
||||
@@ -157,7 +151,7 @@ void GeometryDefaultExtension<bool>::Restore(Base::XMLReader &reader)
|
||||
}
|
||||
|
||||
// ---------- GeometryDoubleExtension ----------
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryDoubleExtension,Part::GeometryExtension)
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryDoubleExtension,Part::GeometryPersistenceExtension)
|
||||
|
||||
template <>
|
||||
PyObject * GeometryDefaultExtension<double>::getPyObject(void)
|
||||
|
||||
Reference in New Issue
Block a user