Commit f48120f9 authored by Charlles Abreu's avatar Charlles Abreu
Browse files

Implementation of ContinuousPeriodic1DFunction: serialization

parent 19d806da
...@@ -40,7 +40,7 @@ namespace OpenMM { ...@@ -40,7 +40,7 @@ namespace OpenMM {
/** /**
* This is a proxy for serializing Continuous1DFunction objects. * This is a proxy for serializing Continuous1DFunction objects.
*/ */
class OPENMM_EXPORT Continuous1DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Continuous1DFunctionProxy : public SerializationProxy {
public: public:
Continuous1DFunctionProxy(); Continuous1DFunctionProxy();
...@@ -48,10 +48,21 @@ public: ...@@ -48,10 +48,21 @@ 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.
*/ */
class OPENMM_EXPORT Continuous2DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Continuous2DFunctionProxy : public SerializationProxy {
public: public:
Continuous2DFunctionProxy(); Continuous2DFunctionProxy();
...@@ -62,7 +73,7 @@ public: ...@@ -62,7 +73,7 @@ public:
/** /**
* This is a proxy for serializing Continuous3DFunction objects. * This is a proxy for serializing Continuous3DFunction objects.
*/ */
class OPENMM_EXPORT Continuous3DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Continuous3DFunctionProxy : public SerializationProxy {
public: public:
Continuous3DFunctionProxy(); Continuous3DFunctionProxy();
...@@ -73,7 +84,7 @@ public: ...@@ -73,7 +84,7 @@ public:
/** /**
* This is a proxy for serializing Discrete1DFunction objects. * This is a proxy for serializing Discrete1DFunction objects.
*/ */
class OPENMM_EXPORT Discrete1DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Discrete1DFunctionProxy : public SerializationProxy {
public: public:
Discrete1DFunctionProxy(); Discrete1DFunctionProxy();
...@@ -84,7 +95,7 @@ public: ...@@ -84,7 +95,7 @@ public:
/** /**
* This is a proxy for serializing Discrete2DFunction objects. * This is a proxy for serializing Discrete2DFunction objects.
*/ */
class OPENMM_EXPORT Discrete2DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Discrete2DFunctionProxy : public SerializationProxy {
public: public:
Discrete2DFunctionProxy(); Discrete2DFunctionProxy();
...@@ -95,7 +106,7 @@ public: ...@@ -95,7 +106,7 @@ public:
/** /**
* This is a proxy for serializing Discrete3DFunction objects. * This is a proxy for serializing Discrete3DFunction objects.
*/ */
class OPENMM_EXPORT Discrete3DFunctionProxy : public SerializationProxy { class OPENMM_EXPORT Discrete3DFunctionProxy : public SerializationProxy {
public: public:
Discrete3DFunctionProxy(); Discrete3DFunctionProxy();
......
...@@ -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