Commit 1d5ee1a3 authored by Charlles Abreu's avatar Charlles Abreu
Browse files

Version 2 of Continuous1DFunction serialization

parent eaad0655
...@@ -41,7 +41,7 @@ Continuous1DFunctionProxy::Continuous1DFunctionProxy() : SerializationProxy("Con ...@@ -41,7 +41,7 @@ Continuous1DFunctionProxy::Continuous1DFunctionProxy() : SerializationProxy("Con
} }
void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode& node) const { void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode& node) const {
node.setIntProperty("version", 1); node.setIntProperty("version", 2);
const Continuous1DFunction& function = *reinterpret_cast<const Continuous1DFunction*>(object); const Continuous1DFunction& function = *reinterpret_cast<const Continuous1DFunction*>(object);
double min, max; double min, max;
vector<double> values; vector<double> values;
...@@ -57,13 +57,19 @@ void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode& ...@@ -57,13 +57,19 @@ void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode&
} }
void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) const { void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) const {
if (node.getIntProperty("version") != 1) int version = node.getIntProperty("version");
if (version < 1 || version > 2)
throw OpenMMException("Unsupported version number"); throw OpenMMException("Unsupported version number");
const SerializationNode& valuesNode = node.getChildNode("Values"); const SerializationNode& valuesNode = node.getChildNode("Values");
vector<double> values; vector<double> values;
for (auto& child : valuesNode.getChildren()) for (auto& child : valuesNode.getChildren())
values.push_back(child.getDoubleProperty("v")); values.push_back(child.getDoubleProperty("v"));
return new Continuous1DFunction(values, node.getDoubleProperty("min"), node.getDoubleProperty("max"), node.getBoolProperty("periodic")); bool periodic;
if (version == 1)
periodic = false;
else
periodic = node.getBoolProperty("periodic");
return new Continuous1DFunction(values, node.getDoubleProperty("min"), node.getDoubleProperty("max"), periodic);
} }
Continuous2DFunctionProxy::Continuous2DFunctionProxy() : SerializationProxy("Continuous2DFunction") { Continuous2DFunctionProxy::Continuous2DFunctionProxy() : SerializationProxy("Continuous2DFunction") {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment