"platforms/cuda2/tests/TestCudaVirtualSites.cpp" did not exist on "7401af022a9bbbf2732352d0bfcb569e25124b57"
Commit f48120f9 authored by Charlles Abreu's avatar Charlles Abreu
Browse files

Implementation of ContinuousPeriodic1DFunction: serialization

parent 19d806da
...@@ -48,6 +48,17 @@ public: ...@@ -48,6 +48,17 @@ public:
void* deserialize(const SerializationNode& node) const; void* deserialize(const SerializationNode& node) const;
}; };
/**
* This is a proxy for serializing ContinuousPeriodic1DFunction objects.
*/
class OPENMM_EXPORT ContinuousPeriodic1DFunctionProxy : public SerializationProxy {
public:
ContinuousPeriodic1DFunctionProxy();
void serialize(const void* object, SerializationNode& node) const;
void* deserialize(const SerializationNode& node) const;
};
/** /**
* This is a proxy for serializing Continuous2DFunction objects. * This is a proxy for serializing Continuous2DFunction objects.
*/ */
......
...@@ -63,6 +63,32 @@ void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) cons ...@@ -63,6 +63,32 @@ void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) cons
return new Continuous1DFunction(values, node.getDoubleProperty("min"), node.getDoubleProperty("max")); return new Continuous1DFunction(values, node.getDoubleProperty("min"), node.getDoubleProperty("max"));
} }
ContinuousPeriodic1DFunctionProxy::ContinuousPeriodic1DFunctionProxy() : SerializationProxy("ContinuousPeriodic1DFunction") {
}
void ContinuousPeriodic1DFunctionProxy::serialize(const void* object, SerializationNode& node) const {
node.setIntProperty("version", 1);
const ContinuousPeriodic1DFunction& function = *reinterpret_cast<const ContinuousPeriodic1DFunction*>(object);
double min, max;
vector<double> values;
function.getFunctionParameters(values, min, max);
node.setDoubleProperty("min", min);
node.setDoubleProperty("max", max);
SerializationNode& valuesNode = node.createChildNode("Values");
for (auto v : values)
valuesNode.createChildNode("Value").setDoubleProperty("v", v);
}
void* ContinuousPeriodic1DFunctionProxy::deserialize(const SerializationNode& node) const {
if (node.getIntProperty("version") != 1)
throw OpenMMException("Unsupported version number");
const SerializationNode& valuesNode = node.getChildNode("Values");
vector<double> values;
for (auto& child : valuesNode.getChildren())
values.push_back(child.getDoubleProperty("v"));
return new ContinuousPeriodic1DFunction(values, node.getDoubleProperty("min"), node.getDoubleProperty("max"));
}
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