Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
08e8b206
Commit
08e8b206
authored
Mar 31, 2017
by
peastman
Committed by
GitHub
Mar 31, 2017
Browse files
Merge pull request #1769 from peastman/loops
Use C++11 style loops
parents
55ee0b9f
083bc501
Changes
96
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
113 additions
and
184 deletions
+113
-184
serialization/src/CustomIntegratorProxy.cpp
serialization/src/CustomIntegratorProxy.cpp
+24
-29
serialization/src/CustomManyParticleForceProxy.cpp
serialization/src/CustomManyParticleForceProxy.cpp
+11
-21
serialization/src/CustomNonbondedForceProxy.cpp
serialization/src/CustomNonbondedForceProxy.cpp
+19
-31
serialization/src/CustomTorsionForceProxy.cpp
serialization/src/CustomTorsionForceProxy.cpp
+4
-11
serialization/src/GBSAOBCForceProxy.cpp
serialization/src/GBSAOBCForceProxy.cpp
+1
-3
serialization/src/GayBerneForceProxy.cpp
serialization/src/GayBerneForceProxy.cpp
+2
-6
serialization/src/HarmonicAngleForceProxy.cpp
serialization/src/HarmonicAngleForceProxy.cpp
+1
-3
serialization/src/HarmonicBondForceProxy.cpp
serialization/src/HarmonicBondForceProxy.cpp
+1
-3
serialization/src/NonbondedForceProxy.cpp
serialization/src/NonbondedForceProxy.cpp
+2
-6
serialization/src/PeriodicTorsionForceProxy.cpp
serialization/src/PeriodicTorsionForceProxy.cpp
+1
-3
serialization/src/RBTorsionForceProxy.cpp
serialization/src/RBTorsionForceProxy.cpp
+1
-3
serialization/src/SerializationNode.cpp
serialization/src/SerializationNode.cpp
+6
-6
serialization/src/StateProxy.cpp
serialization/src/StateProxy.cpp
+8
-23
serialization/src/SystemProxy.cpp
serialization/src/SystemProxy.cpp
+3
-6
serialization/src/TabulatedFunctionProxies.cpp
serialization/src/TabulatedFunctionProxies.cpp
+24
-24
serialization/src/XmlSerializer.cpp
serialization/src/XmlSerializer.cpp
+5
-6
No files found.
serialization/src/CustomIntegratorProxy.cpp
View file @
08e8b206
...
@@ -74,45 +74,40 @@ void* CustomIntegratorProxy::deserialize(const SerializationNode& node) const {
...
@@ -74,45 +74,40 @@ void* CustomIntegratorProxy::deserialize(const SerializationNode& node) const {
throw
OpenMMException
(
"Unsupported version number"
);
throw
OpenMMException
(
"Unsupported version number"
);
CustomIntegrator
*
integrator
=
new
CustomIntegrator
(
node
.
getDoubleProperty
(
"stepSize"
));
CustomIntegrator
*
integrator
=
new
CustomIntegrator
(
node
.
getDoubleProperty
(
"stepSize"
));
const
SerializationNode
&
globalVariablesNode
=
node
.
getChildNode
(
"GlobalVariables"
);
const
SerializationNode
&
globalVariablesNode
=
node
.
getChildNode
(
"GlobalVariables"
);
const
map
<
string
,
string
>
&
globalVariableProp
=
globalVariablesNode
.
getProperties
();
for
(
auto
&
prop
:
globalVariablesNode
.
getProperties
())
for
(
map
<
string
,
string
>::
const_iterator
cit
=
globalVariableProp
.
begin
();
cit
!=
globalVariableProp
.
end
();
cit
++
)
{
integrator
->
addGlobalVariable
(
prop
.
first
,
globalVariablesNode
.
getDoubleProperty
(
prop
.
first
));
integrator
->
addGlobalVariable
(
cit
->
first
,
globalVariablesNode
.
getDoubleProperty
(
cit
->
first
));
}
const
SerializationNode
&
perDofVariablesNode
=
node
.
getChildNode
(
"PerDofVariables"
);
const
SerializationNode
&
perDofVariablesNode
=
node
.
getChildNode
(
"PerDofVariables"
);
const
vector
<
SerializationNode
>&
perDofVariableList
=
perDofVariablesNode
.
getChildren
();
int
count
=
0
;
int
count
=
0
;
for
(
vector
<
SerializationNode
>::
const_iterator
cit
=
perDofVariableList
.
begin
();
cit
!=
perDofVariableList
.
end
();
cit
++
,
count
++
)
{
for
(
auto
&
var
:
perDofVariablesNode
.
getChildren
())
{
const
vector
<
SerializationNode
>&
perDofVariableVector
=
cit
->
getChildren
();
integrator
->
addPerDofVariable
(
var
.
getName
(),
0
);
integrator
->
addPerDofVariable
(
cit
->
getName
(),
0
);
vector
<
Vec3
>
perDofValues
;
vector
<
Vec3
>
perDofValues
;
for
(
vector
<
SerializationNode
>::
const_iterator
dit
=
perDofVariableVector
.
begin
();
dit
!=
perDofVariableVector
.
end
();
dit
++
)
{
for
(
auto
&
child
:
var
.
getChildren
())
perDofValues
.
push_back
(
Vec3
(
dit
->
getDoubleProperty
(
"x"
),
dit
->
getDoubleProperty
(
"y"
),
dit
->
getDoubleProperty
(
"z"
)));
perDofValues
.
push_back
(
Vec3
(
child
.
getDoubleProperty
(
"x"
),
child
.
getDoubleProperty
(
"y"
),
child
.
getDoubleProperty
(
"z"
)));
}
integrator
->
setPerDofVariable
(
count
,
perDofValues
);
integrator
->
setPerDofVariable
(
count
,
perDofValues
);
count
++
;
}
}
const
SerializationNode
&
computationsNode
=
node
.
getChildNode
(
"Computations"
);
const
SerializationNode
&
computationsNode
=
node
.
getChildNode
(
"Computations"
);
const
vector
<
SerializationNode
>&
computationsList
=
computationsNode
.
getChildren
();
for
(
auto
&
comp
:
computationsNode
.
getChildren
())
{
for
(
vector
<
SerializationNode
>::
const_iterator
cit
=
computationsList
.
begin
();
cit
!=
computationsList
.
end
();
cit
++
)
{
CustomIntegrator
::
ComputationType
computationType
=
static_cast
<
CustomIntegrator
::
ComputationType
>
(
comp
.
getIntProperty
(
"computationType"
));
CustomIntegrator
::
ComputationType
computationType
=
static_cast
<
CustomIntegrator
::
ComputationType
>
(
cit
->
getIntProperty
(
"computationType"
));
// make sure that the int casts to a valid enum
// make sure that the int casts to a valid enum
if
(
computationType
==
CustomIntegrator
::
ComputeGlobal
)
{
if
(
computationType
==
CustomIntegrator
::
ComputeGlobal
)
{
integrator
->
addComputeGlobal
(
c
it
->
getStringProperty
(
"computationVariable"
),
c
it
->
getStringProperty
(
"computationExpression"
));
integrator
->
addComputeGlobal
(
c
omp
.
getStringProperty
(
"computationVariable"
),
c
omp
.
getStringProperty
(
"computationExpression"
));
}
else
if
(
computationType
==
CustomIntegrator
::
ComputePerDof
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
ComputePerDof
)
{
integrator
->
addComputePerDof
(
c
it
->
getStringProperty
(
"computationVariable"
),
c
it
->
getStringProperty
(
"computationExpression"
));
integrator
->
addComputePerDof
(
c
omp
.
getStringProperty
(
"computationVariable"
),
c
omp
.
getStringProperty
(
"computationExpression"
));
}
else
if
(
computationType
==
CustomIntegrator
::
ComputeSum
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
ComputeSum
)
{
integrator
->
addComputeSum
(
c
it
->
getStringProperty
(
"computationVariable"
),
c
it
->
getStringProperty
(
"computationExpression"
));
integrator
->
addComputeSum
(
c
omp
.
getStringProperty
(
"computationVariable"
),
c
omp
.
getStringProperty
(
"computationExpression"
));
}
else
if
(
computationType
==
CustomIntegrator
::
ConstrainPositions
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
ConstrainPositions
)
{
integrator
->
addConstrainPositions
();
integrator
->
addConstrainPositions
();
}
else
if
(
computationType
==
CustomIntegrator
::
ConstrainVelocities
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
ConstrainVelocities
)
{
integrator
->
addConstrainVelocities
();
integrator
->
addConstrainVelocities
();
}
else
if
(
computationType
==
CustomIntegrator
::
UpdateContextState
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
UpdateContextState
)
{
integrator
->
addUpdateContextState
();
integrator
->
addUpdateContextState
();
}
else
if
(
computationType
==
CustomIntegrator
::
IfBlockStart
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
IfBlockStart
)
{
integrator
->
beginIfBlock
(
c
it
->
getStringProperty
(
"computationExpression"
));
integrator
->
beginIfBlock
(
c
omp
.
getStringProperty
(
"computationExpression"
));
}
else
if
(
computationType
==
CustomIntegrator
::
WhileBlockStart
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
WhileBlockStart
)
{
integrator
->
beginWhileBlock
(
c
it
->
getStringProperty
(
"computationExpression"
));
integrator
->
beginWhileBlock
(
c
omp
.
getStringProperty
(
"computationExpression"
));
}
else
if
(
computationType
==
CustomIntegrator
::
BlockEnd
)
{
}
else
if
(
computationType
==
CustomIntegrator
::
BlockEnd
)
{
integrator
->
endBlock
();
integrator
->
endBlock
();
}
else
{
}
else
{
throw
(
OpenMMException
(
"Custom Integrator Deserialization: Unknown computation type"
));
throw
(
OpenMMException
(
"Custom Integrator Deserialization: Unknown computation type"
));
}
}
...
...
serialization/src/CustomManyParticleForceProxy.cpp
View file @
08e8b206
...
@@ -84,10 +84,10 @@ void CustomManyParticleForceProxy::serialize(const void* object, SerializationNo
...
@@ -84,10 +84,10 @@ void CustomManyParticleForceProxy::serialize(const void* object, SerializationNo
force
.
getTypeFilter
(
i
,
types
);
force
.
getTypeFilter
(
i
,
types
);
stringstream
list
;
stringstream
list
;
bool
first
=
true
;
bool
first
=
true
;
for
(
set
<
int
>::
const_iterator
iter
=
types
.
begin
();
iter
!=
types
.
end
();
++
iter
)
{
for
(
int
type
:
types
)
{
if
(
!
first
)
if
(
!
first
)
list
<<
","
;
list
<<
","
;
list
<<
*
iter
;
list
<<
type
;
first
=
false
;
first
=
false
;
}
}
filters
.
createChildNode
(
"Filter"
).
setIntProperty
(
"index"
,
i
).
setStringProperty
(
"types"
,
list
.
str
());
filters
.
createChildNode
(
"Filter"
).
setIntProperty
(
"index"
,
i
).
setStringProperty
(
"types"
,
list
.
str
());
...
@@ -108,19 +108,14 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
...
@@ -108,19 +108,14 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
force
->
setPermutationMode
((
CustomManyParticleForce
::
PermutationMode
)
node
.
getIntProperty
(
"permutationMode"
));
force
->
setPermutationMode
((
CustomManyParticleForce
::
PermutationMode
)
node
.
getIntProperty
(
"permutationMode"
));
force
->
setCutoffDistance
(
node
.
getDoubleProperty
(
"cutoff"
));
force
->
setCutoffDistance
(
node
.
getDoubleProperty
(
"cutoff"
));
const
SerializationNode
&
perParticleParams
=
node
.
getChildNode
(
"PerParticleParameters"
);
const
SerializationNode
&
perParticleParams
=
node
.
getChildNode
(
"PerParticleParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
perParticleParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
perParticleParams
.
getChildren
())
const
SerializationNode
&
parameter
=
perParticleParams
.
getChildren
()[
i
];
force
->
addPerParticleParameter
(
parameter
.
getStringProperty
(
"name"
));
force
->
addPerParticleParameter
(
parameter
.
getStringProperty
(
"name"
));
}
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
globalParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
globalParams
.
getChildren
())
const
SerializationNode
&
parameter
=
globalParams
.
getChildren
()[
i
];
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
}
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
vector
<
double
>
params
(
force
->
getNumPerParticleParameters
());
vector
<
double
>
params
(
force
->
getNumPerParticleParameters
());
for
(
int
i
=
0
;
i
<
(
int
)
particles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
particles
.
getChildren
())
{
const
SerializationNode
&
particle
=
particles
.
getChildren
()[
i
];
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
stringstream
key
;
stringstream
key
;
key
<<
"param"
;
key
<<
"param"
;
...
@@ -130,13 +125,10 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
...
@@ -130,13 +125,10 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
force
->
addParticle
(
params
,
particle
.
getIntProperty
(
"type"
));
force
->
addParticle
(
params
,
particle
.
getIntProperty
(
"type"
));
}
}
const
SerializationNode
&
exclusions
=
node
.
getChildNode
(
"Exclusions"
);
const
SerializationNode
&
exclusions
=
node
.
getChildNode
(
"Exclusions"
);
for
(
int
i
=
0
;
i
<
(
int
)
exclusions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
exclusion
:
exclusions
.
getChildren
())
const
SerializationNode
&
exclusion
=
exclusions
.
getChildren
()[
i
];
force
->
addExclusion
(
exclusion
.
getIntProperty
(
"p1"
),
exclusion
.
getIntProperty
(
"p2"
));
force
->
addExclusion
(
exclusion
.
getIntProperty
(
"p1"
),
exclusion
.
getIntProperty
(
"p2"
));
}
const
SerializationNode
&
filters
=
node
.
getChildNode
(
"TypeFilters"
);
const
SerializationNode
&
filters
=
node
.
getChildNode
(
"TypeFilters"
);
for
(
int
i
=
0
;
i
<
(
int
)
filters
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
filter
:
filters
.
getChildren
())
{
const
SerializationNode
&
filter
=
filters
.
getChildren
()[
i
];
string
typesString
=
filter
.
getStringProperty
(
"types"
);
string
typesString
=
filter
.
getStringProperty
(
"types"
);
vector
<
string
>
splitTypes
;
vector
<
string
>
splitTypes
;
size_t
searchPos
=
0
,
nextPos
;
size_t
searchPos
=
0
,
nextPos
;
...
@@ -146,20 +138,18 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
...
@@ -146,20 +138,18 @@ void* CustomManyParticleForceProxy::deserialize(const SerializationNode& node) c
}
}
splitTypes
.
push_back
(
typesString
.
substr
(
searchPos
));
splitTypes
.
push_back
(
typesString
.
substr
(
searchPos
));
set
<
int
>
types
;
set
<
int
>
types
;
for
(
int
j
=
0
;
j
<
(
int
)
splitTypes
.
size
();
j
++
)
{
for
(
auto
&
t
:
splitTypes
)
{
if
(
splitTypes
[
j
]
.
size
()
>
0
)
{
if
(
t
.
size
()
>
0
)
{
int
type
;
int
type
;
stringstream
(
splitTypes
[
j
]
)
>>
type
;
stringstream
(
t
)
>>
type
;
types
.
insert
(
type
);
types
.
insert
(
type
);
}
}
}
}
force
->
setTypeFilter
(
filter
.
getIntProperty
(
"index"
),
types
);
force
->
setTypeFilter
(
filter
.
getIntProperty
(
"index"
),
types
);
}
}
const
SerializationNode
&
functions
=
node
.
getChildNode
(
"Functions"
);
const
SerializationNode
&
functions
=
node
.
getChildNode
(
"Functions"
);
for
(
int
i
=
0
;
i
<
(
int
)
functions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
function
:
functions
.
getChildren
())
const
SerializationNode
&
function
=
functions
.
getChildren
()[
i
];
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
function
.
decodeObject
<
TabulatedFunction
>
());
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
function
.
decodeObject
<
TabulatedFunction
>
());
}
return
force
;
return
force
;
}
}
catch
(...)
{
catch
(...)
{
...
...
serialization/src/CustomNonbondedForceProxy.cpp
View file @
08e8b206
...
@@ -92,11 +92,11 @@ void CustomNonbondedForceProxy::serialize(const void* object, SerializationNode&
...
@@ -92,11 +92,11 @@ void CustomNonbondedForceProxy::serialize(const void* object, SerializationNode&
std
::
set
<
int
>
set2
;
std
::
set
<
int
>
set2
;
force
.
getInteractionGroupParameters
(
i
,
set1
,
set2
);
force
.
getInteractionGroupParameters
(
i
,
set1
,
set2
);
SerializationNode
&
set1node
=
interactionGroup
.
createChildNode
(
"Set1"
);
SerializationNode
&
set1node
=
interactionGroup
.
createChildNode
(
"Set1"
);
for
(
std
::
set
<
int
>::
iterator
it
=
set1
.
begin
();
it
!=
set1
.
end
();
++
it
)
for
(
int
p
:
set1
)
set1node
.
createChildNode
(
"Particle"
).
setIntProperty
(
"index"
,
*
it
);
set1node
.
createChildNode
(
"Particle"
).
setIntProperty
(
"index"
,
p
);
SerializationNode
&
set2node
=
interactionGroup
.
createChildNode
(
"Set2"
);
SerializationNode
&
set2node
=
interactionGroup
.
createChildNode
(
"Set2"
);
for
(
std
::
set
<
int
>::
iterator
it
=
set2
.
begin
();
it
!=
set2
.
end
();
++
it
)
for
(
int
p
:
set2
)
set2node
.
createChildNode
(
"Particle"
).
setIntProperty
(
"index"
,
*
it
);
set2node
.
createChildNode
(
"Particle"
).
setIntProperty
(
"index"
,
p
);
}
}
}
}
...
@@ -114,26 +114,19 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
...
@@ -114,26 +114,19 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
force
->
setSwitchingDistance
(
node
.
getDoubleProperty
(
"switchingDistance"
,
-
1.0
));
force
->
setSwitchingDistance
(
node
.
getDoubleProperty
(
"switchingDistance"
,
-
1.0
));
force
->
setUseLongRangeCorrection
(
node
.
getBoolProperty
(
"useLongRangeCorrection"
,
false
));
force
->
setUseLongRangeCorrection
(
node
.
getBoolProperty
(
"useLongRangeCorrection"
,
false
));
const
SerializationNode
&
perParticleParams
=
node
.
getChildNode
(
"PerParticleParameters"
);
const
SerializationNode
&
perParticleParams
=
node
.
getChildNode
(
"PerParticleParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
perParticleParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
perParticleParams
.
getChildren
())
const
SerializationNode
&
parameter
=
perParticleParams
.
getChildren
()[
i
];
force
->
addPerParticleParameter
(
parameter
.
getStringProperty
(
"name"
));
force
->
addPerParticleParameter
(
parameter
.
getStringProperty
(
"name"
));
}
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
globalParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
globalParams
.
getChildren
())
const
SerializationNode
&
parameter
=
globalParams
.
getChildren
()[
i
];
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
}
if
(
version
>
1
)
{
if
(
version
>
1
)
{
const
SerializationNode
&
energyDerivs
=
node
.
getChildNode
(
"EnergyParameterDerivatives"
);
const
SerializationNode
&
energyDerivs
=
node
.
getChildNode
(
"EnergyParameterDerivatives"
);
for
(
int
i
=
0
;
i
<
(
int
)
energyDerivs
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
energyDerivs
.
getChildren
())
const
SerializationNode
&
parameter
=
energyDerivs
.
getChildren
()[
i
];
force
->
addEnergyParameterDerivative
(
parameter
.
getStringProperty
(
"name"
));
force
->
addEnergyParameterDerivative
(
parameter
.
getStringProperty
(
"name"
));
}
}
}
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
vector
<
double
>
params
(
force
->
getNumPerParticleParameters
());
vector
<
double
>
params
(
force
->
getNumPerParticleParameters
());
for
(
int
i
=
0
;
i
<
(
int
)
particles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
particles
.
getChildren
())
{
const
SerializationNode
&
particle
=
particles
.
getChildren
()[
i
];
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
stringstream
key
;
stringstream
key
;
key
<<
"param"
;
key
<<
"param"
;
...
@@ -143,13 +136,10 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
...
@@ -143,13 +136,10 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
force
->
addParticle
(
params
);
force
->
addParticle
(
params
);
}
}
const
SerializationNode
&
exclusions
=
node
.
getChildNode
(
"Exclusions"
);
const
SerializationNode
&
exclusions
=
node
.
getChildNode
(
"Exclusions"
);
for
(
int
i
=
0
;
i
<
(
int
)
exclusions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
exclusion
:
exclusions
.
getChildren
())
const
SerializationNode
&
exclusion
=
exclusions
.
getChildren
()[
i
];
force
->
addExclusion
(
exclusion
.
getIntProperty
(
"p1"
),
exclusion
.
getIntProperty
(
"p2"
));
force
->
addExclusion
(
exclusion
.
getIntProperty
(
"p1"
),
exclusion
.
getIntProperty
(
"p2"
));
}
const
SerializationNode
&
functions
=
node
.
getChildNode
(
"Functions"
);
const
SerializationNode
&
functions
=
node
.
getChildNode
(
"Functions"
);
for
(
int
i
=
0
;
i
<
(
int
)
functions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
function
:
functions
.
getChildren
())
{
const
SerializationNode
&
function
=
functions
.
getChildren
()[
i
];
if
(
function
.
hasProperty
(
"type"
))
{
if
(
function
.
hasProperty
(
"type"
))
{
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
function
.
decodeObject
<
TabulatedFunction
>
());
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
function
.
decodeObject
<
TabulatedFunction
>
());
}
}
...
@@ -158,30 +148,28 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
...
@@ -158,30 +148,28 @@ void* CustomNonbondedForceProxy::deserialize(const SerializationNode& node) cons
const
SerializationNode
&
valuesNode
=
function
.
getChildNode
(
"Values"
);
const
SerializationNode
&
valuesNode
=
function
.
getChildNode
(
"Values"
);
vector
<
double
>
values
;
vector
<
double
>
values
;
for
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
new
Continuous1DFunction
(
values
,
function
.
getDoubleProperty
(
"min"
),
function
.
getDoubleProperty
(
"max"
)));
force
->
addTabulatedFunction
(
function
.
getStringProperty
(
"name"
),
new
Continuous1DFunction
(
values
,
function
.
getDoubleProperty
(
"min"
),
function
.
getDoubleProperty
(
"max"
)));
}
}
}
}
bool
hasInteractionGroups
=
false
;
// Older files will be missing this block.
bool
hasInteractionGroups
=
false
;
// Older files will be missing this block.
for
(
int
i
=
0
;
i
<
(
int
)
node
.
getChildren
()
.
size
();
i
++
)
{
for
(
auto
&
child
:
node
.
getChildren
()
)
if
(
node
.
getChildren
()[
i
]
.
getName
()
==
"InteractionGroups"
)
if
(
child
.
getName
()
==
"InteractionGroups"
)
hasInteractionGroups
=
true
;
hasInteractionGroups
=
true
;
}
if
(
hasInteractionGroups
)
{
if
(
hasInteractionGroups
)
{
const
SerializationNode
&
interactionGroups
=
node
.
getChildNode
(
"InteractionGroups"
);
const
SerializationNode
&
interactionGroups
=
node
.
getChildNode
(
"InteractionGroups"
);
for
(
int
i
=
0
;
i
<
(
int
)
interactionGroups
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
interactionGroup
:
interactionGroups
.
getChildren
())
{
const
SerializationNode
&
interactionGroup
=
interactionGroups
.
getChildren
()[
i
];
// Get set 1.
// Get set 1.
const
SerializationNode
&
set1node
=
interactionGroup
.
getChildNode
(
"Set1"
);
const
SerializationNode
&
set1node
=
interactionGroup
.
getChildNode
(
"Set1"
);
std
::
set
<
int
>
set1
;
std
::
set
<
int
>
set1
;
for
(
int
j
=
0
;
j
<
(
int
)
set1node
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
set1node
.
getChildren
())
set1
.
insert
(
set1node
.
getChildren
()[
j
]
.
getIntProperty
(
"index"
));
set1
.
insert
(
child
.
getIntProperty
(
"index"
));
// Get set 2.
// Get set 2.
const
SerializationNode
&
set2node
=
interactionGroup
.
getChildNode
(
"Set2"
);
const
SerializationNode
&
set2node
=
interactionGroup
.
getChildNode
(
"Set2"
);
std
::
set
<
int
>
set2
;
std
::
set
<
int
>
set2
;
for
(
int
j
=
0
;
j
<
(
int
)
set2node
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
set2node
.
getChildren
())
set2
.
insert
(
set2node
.
getChildren
()[
j
]
.
getIntProperty
(
"index"
));
set2
.
insert
(
child
.
getIntProperty
(
"index"
));
force
->
addInteractionGroup
(
set1
,
set2
);
force
->
addInteractionGroup
(
set1
,
set2
);
}
}
}
}
...
...
serialization/src/CustomTorsionForceProxy.cpp
View file @
08e8b206
...
@@ -85,26 +85,19 @@ void* CustomTorsionForceProxy::deserialize(const SerializationNode& node) const
...
@@ -85,26 +85,19 @@ void* CustomTorsionForceProxy::deserialize(const SerializationNode& node) const
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
const
SerializationNode
&
perTorsionParams
=
node
.
getChildNode
(
"PerTorsionParameters"
);
const
SerializationNode
&
perTorsionParams
=
node
.
getChildNode
(
"PerTorsionParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
perTorsionParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
perTorsionParams
.
getChildren
())
const
SerializationNode
&
parameter
=
perTorsionParams
.
getChildren
()[
i
];
force
->
addPerTorsionParameter
(
parameter
.
getStringProperty
(
"name"
));
force
->
addPerTorsionParameter
(
parameter
.
getStringProperty
(
"name"
));
}
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
const
SerializationNode
&
globalParams
=
node
.
getChildNode
(
"GlobalParameters"
);
for
(
int
i
=
0
;
i
<
(
int
)
globalParams
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
globalParams
.
getChildren
())
const
SerializationNode
&
parameter
=
globalParams
.
getChildren
()[
i
];
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
force
->
addGlobalParameter
(
parameter
.
getStringProperty
(
"name"
),
parameter
.
getDoubleProperty
(
"default"
));
}
if
(
version
>
2
)
{
if
(
version
>
2
)
{
const
SerializationNode
&
energyDerivs
=
node
.
getChildNode
(
"EnergyParameterDerivatives"
);
const
SerializationNode
&
energyDerivs
=
node
.
getChildNode
(
"EnergyParameterDerivatives"
);
for
(
int
i
=
0
;
i
<
(
int
)
energyDerivs
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
parameter
:
energyDerivs
.
getChildren
())
const
SerializationNode
&
parameter
=
energyDerivs
.
getChildren
()[
i
];
force
->
addEnergyParameterDerivative
(
parameter
.
getStringProperty
(
"name"
));
force
->
addEnergyParameterDerivative
(
parameter
.
getStringProperty
(
"name"
));
}
}
}
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
vector
<
double
>
params
(
force
->
getNumPerTorsionParameters
());
vector
<
double
>
params
(
force
->
getNumPerTorsionParameters
());
for
(
int
i
=
0
;
i
<
(
int
)
torsions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
torsion
:
torsions
.
getChildren
())
{
const
SerializationNode
&
torsion
=
torsions
.
getChildren
()[
i
];
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
for
(
int
j
=
0
;
j
<
(
int
)
params
.
size
();
j
++
)
{
stringstream
key
;
stringstream
key
;
key
<<
"param"
;
key
<<
"param"
;
...
...
serialization/src/GBSAOBCForceProxy.cpp
View file @
08e8b206
...
@@ -72,10 +72,8 @@ void* GBSAOBCForceProxy::deserialize(const SerializationNode& node) const {
...
@@ -72,10 +72,8 @@ void* GBSAOBCForceProxy::deserialize(const SerializationNode& node) const {
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setSurfaceAreaEnergy
(
node
.
getDoubleProperty
(
"surfaceAreaEnergy"
));
force
->
setSurfaceAreaEnergy
(
node
.
getDoubleProperty
(
"surfaceAreaEnergy"
));
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
for
(
int
i
=
0
;
i
<
(
int
)
particles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
particles
.
getChildren
())
const
SerializationNode
&
particle
=
particles
.
getChildren
()[
i
];
force
->
addParticle
(
particle
.
getDoubleProperty
(
"q"
),
particle
.
getDoubleProperty
(
"r"
),
particle
.
getDoubleProperty
(
"scale"
));
force
->
addParticle
(
particle
.
getDoubleProperty
(
"q"
),
particle
.
getDoubleProperty
(
"r"
),
particle
.
getDoubleProperty
(
"scale"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/GayBerneForceProxy.cpp
View file @
08e8b206
...
@@ -78,17 +78,13 @@ void* GayBerneForceProxy::deserialize(const SerializationNode& node) const {
...
@@ -78,17 +78,13 @@ void* GayBerneForceProxy::deserialize(const SerializationNode& node) const {
force
->
setUseSwitchingFunction
(
node
.
getBoolProperty
(
"useSwitchingFunction"
,
false
));
force
->
setUseSwitchingFunction
(
node
.
getBoolProperty
(
"useSwitchingFunction"
,
false
));
force
->
setSwitchingDistance
(
node
.
getDoubleProperty
(
"switchingDistance"
,
-
1.0
));
force
->
setSwitchingDistance
(
node
.
getDoubleProperty
(
"switchingDistance"
,
-
1.0
));
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
for
(
int
i
=
0
;
i
<
(
int
)
particles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
particles
.
getChildren
())
const
SerializationNode
&
particle
=
particles
.
getChildren
()[
i
];
force
->
addParticle
(
particle
.
getDoubleProperty
(
"sig"
),
particle
.
getDoubleProperty
(
"eps"
),
particle
.
getIntProperty
(
"xparticle"
),
force
->
addParticle
(
particle
.
getDoubleProperty
(
"sig"
),
particle
.
getDoubleProperty
(
"eps"
),
particle
.
getIntProperty
(
"xparticle"
),
particle
.
getIntProperty
(
"yparticle"
),
particle
.
getDoubleProperty
(
"sx"
),
particle
.
getDoubleProperty
(
"sy"
),
particle
.
getDoubleProperty
(
"sz"
),
particle
.
getIntProperty
(
"yparticle"
),
particle
.
getDoubleProperty
(
"sx"
),
particle
.
getDoubleProperty
(
"sy"
),
particle
.
getDoubleProperty
(
"sz"
),
particle
.
getDoubleProperty
(
"ex"
),
particle
.
getDoubleProperty
(
"ey"
),
particle
.
getDoubleProperty
(
"ez"
));
particle
.
getDoubleProperty
(
"ex"
),
particle
.
getDoubleProperty
(
"ey"
),
particle
.
getDoubleProperty
(
"ez"
));
}
const
SerializationNode
&
exceptions
=
node
.
getChildNode
(
"Exceptions"
);
const
SerializationNode
&
exceptions
=
node
.
getChildNode
(
"Exceptions"
);
for
(
int
i
=
0
;
i
<
(
int
)
exceptions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
exception
:
exceptions
.
getChildren
())
const
SerializationNode
&
exception
=
exceptions
.
getChildren
()[
i
];
force
->
addException
(
exception
.
getIntProperty
(
"p1"
),
exception
.
getIntProperty
(
"p2"
),
exception
.
getDoubleProperty
(
"sig"
),
exception
.
getDoubleProperty
(
"eps"
));
force
->
addException
(
exception
.
getIntProperty
(
"p1"
),
exception
.
getIntProperty
(
"p2"
),
exception
.
getDoubleProperty
(
"sig"
),
exception
.
getDoubleProperty
(
"eps"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/HarmonicAngleForceProxy.cpp
View file @
08e8b206
...
@@ -65,10 +65,8 @@ void* HarmonicAngleForceProxy::deserialize(const SerializationNode& node) const
...
@@ -65,10 +65,8 @@ void* HarmonicAngleForceProxy::deserialize(const SerializationNode& node) const
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
const
SerializationNode
&
angles
=
node
.
getChildNode
(
"Angles"
);
const
SerializationNode
&
angles
=
node
.
getChildNode
(
"Angles"
);
for
(
int
i
=
0
;
i
<
(
int
)
angles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
angle
:
angles
.
getChildren
())
const
SerializationNode
&
angle
=
angles
.
getChildren
()[
i
];
force
->
addAngle
(
angle
.
getIntProperty
(
"p1"
),
angle
.
getIntProperty
(
"p2"
),
angle
.
getIntProperty
(
"p3"
),
angle
.
getDoubleProperty
(
"a"
),
angle
.
getDoubleProperty
(
"k"
));
force
->
addAngle
(
angle
.
getIntProperty
(
"p1"
),
angle
.
getIntProperty
(
"p2"
),
angle
.
getIntProperty
(
"p3"
),
angle
.
getDoubleProperty
(
"a"
),
angle
.
getDoubleProperty
(
"k"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/HarmonicBondForceProxy.cpp
View file @
08e8b206
...
@@ -65,10 +65,8 @@ void* HarmonicBondForceProxy::deserialize(const SerializationNode& node) const {
...
@@ -65,10 +65,8 @@ void* HarmonicBondForceProxy::deserialize(const SerializationNode& node) const {
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
const
SerializationNode
&
bonds
=
node
.
getChildNode
(
"Bonds"
);
const
SerializationNode
&
bonds
=
node
.
getChildNode
(
"Bonds"
);
for
(
int
i
=
0
;
i
<
(
int
)
bonds
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
bond
:
bonds
.
getChildren
())
const
SerializationNode
&
bond
=
bonds
.
getChildren
()[
i
];
force
->
addBond
(
bond
.
getIntProperty
(
"p1"
),
bond
.
getIntProperty
(
"p2"
),
bond
.
getDoubleProperty
(
"d"
),
bond
.
getDoubleProperty
(
"k"
));
force
->
addBond
(
bond
.
getIntProperty
(
"p1"
),
bond
.
getIntProperty
(
"p2"
),
bond
.
getDoubleProperty
(
"d"
),
bond
.
getDoubleProperty
(
"k"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/NonbondedForceProxy.cpp
View file @
08e8b206
...
@@ -108,15 +108,11 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const {
...
@@ -108,15 +108,11 @@ void* NonbondedForceProxy::deserialize(const SerializationNode& node) const {
}
}
force
->
setReciprocalSpaceForceGroup
(
node
.
getIntProperty
(
"recipForceGroup"
,
-
1
));
force
->
setReciprocalSpaceForceGroup
(
node
.
getIntProperty
(
"recipForceGroup"
,
-
1
));
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
const
SerializationNode
&
particles
=
node
.
getChildNode
(
"Particles"
);
for
(
int
i
=
0
;
i
<
(
int
)
particles
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
particles
.
getChildren
())
const
SerializationNode
&
particle
=
particles
.
getChildren
()[
i
];
force
->
addParticle
(
particle
.
getDoubleProperty
(
"q"
),
particle
.
getDoubleProperty
(
"sig"
),
particle
.
getDoubleProperty
(
"eps"
));
force
->
addParticle
(
particle
.
getDoubleProperty
(
"q"
),
particle
.
getDoubleProperty
(
"sig"
),
particle
.
getDoubleProperty
(
"eps"
));
}
const
SerializationNode
&
exceptions
=
node
.
getChildNode
(
"Exceptions"
);
const
SerializationNode
&
exceptions
=
node
.
getChildNode
(
"Exceptions"
);
for
(
int
i
=
0
;
i
<
(
int
)
exceptions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
exception
:
exceptions
.
getChildren
())
const
SerializationNode
&
exception
=
exceptions
.
getChildren
()[
i
];
force
->
addException
(
exception
.
getIntProperty
(
"p1"
),
exception
.
getIntProperty
(
"p2"
),
exception
.
getDoubleProperty
(
"q"
),
exception
.
getDoubleProperty
(
"sig"
),
exception
.
getDoubleProperty
(
"eps"
));
force
->
addException
(
exception
.
getIntProperty
(
"p1"
),
exception
.
getIntProperty
(
"p2"
),
exception
.
getDoubleProperty
(
"q"
),
exception
.
getDoubleProperty
(
"sig"
),
exception
.
getDoubleProperty
(
"eps"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/PeriodicTorsionForceProxy.cpp
View file @
08e8b206
...
@@ -65,11 +65,9 @@ void* PeriodicTorsionForceProxy::deserialize(const SerializationNode& node) cons
...
@@ -65,11 +65,9 @@ void* PeriodicTorsionForceProxy::deserialize(const SerializationNode& node) cons
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
for
(
int
i
=
0
;
i
<
(
int
)
torsions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
torsion
:
torsions
.
getChildren
())
const
SerializationNode
&
torsion
=
torsions
.
getChildren
()[
i
];
force
->
addTorsion
(
torsion
.
getIntProperty
(
"p1"
),
torsion
.
getIntProperty
(
"p2"
),
torsion
.
getIntProperty
(
"p3"
),
torsion
.
getIntProperty
(
"p4"
),
force
->
addTorsion
(
torsion
.
getIntProperty
(
"p1"
),
torsion
.
getIntProperty
(
"p2"
),
torsion
.
getIntProperty
(
"p3"
),
torsion
.
getIntProperty
(
"p4"
),
torsion
.
getIntProperty
(
"periodicity"
),
torsion
.
getDoubleProperty
(
"phase"
),
torsion
.
getDoubleProperty
(
"k"
));
torsion
.
getIntProperty
(
"periodicity"
),
torsion
.
getDoubleProperty
(
"phase"
),
torsion
.
getDoubleProperty
(
"k"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/RBTorsionForceProxy.cpp
View file @
08e8b206
...
@@ -65,12 +65,10 @@ void* RBTorsionForceProxy::deserialize(const SerializationNode& node) const {
...
@@ -65,12 +65,10 @@ void* RBTorsionForceProxy::deserialize(const SerializationNode& node) const {
if
(
version
>
1
)
if
(
version
>
1
)
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
force
->
setUsesPeriodicBoundaryConditions
(
node
.
getBoolProperty
(
"usesPeriodic"
));
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
const
SerializationNode
&
torsions
=
node
.
getChildNode
(
"Torsions"
);
for
(
int
i
=
0
;
i
<
(
int
)
torsions
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
torsion
:
torsions
.
getChildren
())
const
SerializationNode
&
torsion
=
torsions
.
getChildren
()[
i
];
force
->
addTorsion
(
torsion
.
getIntProperty
(
"p1"
),
torsion
.
getIntProperty
(
"p2"
),
torsion
.
getIntProperty
(
"p3"
),
torsion
.
getIntProperty
(
"p4"
),
force
->
addTorsion
(
torsion
.
getIntProperty
(
"p1"
),
torsion
.
getIntProperty
(
"p2"
),
torsion
.
getIntProperty
(
"p3"
),
torsion
.
getIntProperty
(
"p4"
),
torsion
.
getDoubleProperty
(
"c0"
),
torsion
.
getDoubleProperty
(
"c1"
),
torsion
.
getDoubleProperty
(
"c2"
),
torsion
.
getDoubleProperty
(
"c0"
),
torsion
.
getDoubleProperty
(
"c1"
),
torsion
.
getDoubleProperty
(
"c2"
),
torsion
.
getDoubleProperty
(
"c3"
),
torsion
.
getDoubleProperty
(
"c4"
),
torsion
.
getDoubleProperty
(
"c5"
));
torsion
.
getDoubleProperty
(
"c3"
),
torsion
.
getDoubleProperty
(
"c4"
),
torsion
.
getDoubleProperty
(
"c5"
));
}
}
}
catch
(...)
{
catch
(...)
{
delete
force
;
delete
force
;
...
...
serialization/src/SerializationNode.cpp
View file @
08e8b206
...
@@ -56,16 +56,16 @@ vector<SerializationNode>& SerializationNode::getChildren() {
...
@@ -56,16 +56,16 @@ vector<SerializationNode>& SerializationNode::getChildren() {
}
}
const
SerializationNode
&
SerializationNode
::
getChildNode
(
const
std
::
string
&
name
)
const
{
const
SerializationNode
&
SerializationNode
::
getChildNode
(
const
std
::
string
&
name
)
const
{
for
(
int
i
=
0
;
i
<
(
int
)
children
.
size
();
i
++
)
for
(
auto
&
child
:
children
)
if
(
child
ren
[
i
]
.
name
==
name
)
if
(
child
.
name
==
name
)
return
child
ren
[
i
]
;
return
child
;
throw
OpenMMException
(
"Unknown child '"
+
name
+
"' for node '"
+
getName
()
+
"'"
);
throw
OpenMMException
(
"Unknown child '"
+
name
+
"' for node '"
+
getName
()
+
"'"
);
}
}
SerializationNode
&
SerializationNode
::
getChildNode
(
const
std
::
string
&
name
)
{
SerializationNode
&
SerializationNode
::
getChildNode
(
const
std
::
string
&
name
)
{
for
(
int
i
=
0
;
i
<
(
int
)
children
.
size
();
i
++
)
for
(
auto
&
child
:
children
)
if
(
child
ren
[
i
]
.
name
==
name
)
if
(
child
.
name
==
name
)
return
child
ren
[
i
]
;
return
child
;
throw
OpenMMException
(
"Unknown child '"
+
name
+
"' for node '"
+
getName
()
+
"'"
);
throw
OpenMMException
(
"Unknown child '"
+
name
+
"' for node '"
+
getName
()
+
"'"
);
}
}
...
...
serialization/src/StateProxy.cpp
View file @
08e8b206
...
@@ -56,11 +56,8 @@ void StateProxy::serialize(const void* object, SerializationNode& node) const {
...
@@ -56,11 +56,8 @@ void StateProxy::serialize(const void* object, SerializationNode& node) const {
if
((
s
.
getDataTypes
()
&
State
::
Parameters
)
!=
0
)
{
if
((
s
.
getDataTypes
()
&
State
::
Parameters
)
!=
0
)
{
s
.
getParameters
();
s
.
getParameters
();
SerializationNode
&
parametersNode
=
node
.
createChildNode
(
"Parameters"
);
SerializationNode
&
parametersNode
=
node
.
createChildNode
(
"Parameters"
);
map
<
string
,
double
>
stateParams
=
s
.
getParameters
();
for
(
auto
&
param
:
s
.
getParameters
())
map
<
string
,
double
>::
const_iterator
it
;
parametersNode
.
setDoubleProperty
(
param
.
first
,
param
.
second
);
for
(
it
=
stateParams
.
begin
();
it
!=
stateParams
.
end
();
it
++
)
{
parametersNode
.
setDoubleProperty
(
it
->
first
,
it
->
second
);
}
}
}
if
((
s
.
getDataTypes
()
&
State
::
Energy
)
!=
0
)
{
if
((
s
.
getDataTypes
()
&
State
::
Energy
)
!=
0
)
{
s
.
getPotentialEnergy
();
s
.
getPotentialEnergy
();
...
@@ -108,17 +105,11 @@ void* StateProxy::deserialize(const SerializationNode& node) const {
...
@@ -108,17 +105,11 @@ void* StateProxy::deserialize(const SerializationNode& node) const {
int
types
=
0
;
int
types
=
0
;
vector
<
int
>
arraySizes
;
vector
<
int
>
arraySizes
;
State
::
StateBuilder
builder
(
outTime
);
State
::
StateBuilder
builder
(
outTime
);
const
vector
<
SerializationNode
>&
children
=
node
.
getChildren
();
for
(
auto
&
child
:
node
.
getChildren
())
{
for
(
int
j
=
0
;
j
<
(
int
)
children
.
size
();
j
++
)
{
const
SerializationNode
&
child
=
children
[
j
];
if
(
child
.
getName
()
==
"Parameters"
)
{
if
(
child
.
getName
()
==
"Parameters"
)
{
map
<
string
,
double
>
outStateParams
;
map
<
string
,
double
>
outStateParams
;
// inStateParams is really a <string,double> pair, where string is the name and double is the value
for
(
auto
&
param
:
child
.
getProperties
())
// but we want to avoid casting a string to a double and instead use the built in routines,
outStateParams
[
param
.
first
]
=
child
.
getDoubleProperty
(
param
.
first
);
map
<
string
,
string
>
inStateParams
=
child
.
getProperties
();
for
(
map
<
string
,
string
>::
const_iterator
pit
=
inStateParams
.
begin
();
pit
!=
inStateParams
.
end
();
pit
++
)
{
outStateParams
[
pit
->
first
]
=
child
.
getDoubleProperty
(
pit
->
first
);
}
builder
.
setParameters
(
outStateParams
);
builder
.
setParameters
(
outStateParams
);
}
}
else
if
(
child
.
getName
()
==
"Energies"
)
{
else
if
(
child
.
getName
()
==
"Energies"
)
{
...
@@ -128,28 +119,22 @@ void* StateProxy::deserialize(const SerializationNode& node) const {
...
@@ -128,28 +119,22 @@ void* StateProxy::deserialize(const SerializationNode& node) const {
}
}
else
if
(
child
.
getName
()
==
"Positions"
)
{
else
if
(
child
.
getName
()
==
"Positions"
)
{
vector
<
Vec3
>
outPositions
;
vector
<
Vec3
>
outPositions
;
for
(
int
i
=
0
;
i
<
(
int
)
child
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
child
.
getChildren
())
const
SerializationNode
&
particle
=
child
.
getChildren
()[
i
];
outPositions
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
outPositions
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
}
builder
.
setPositions
(
outPositions
);
builder
.
setPositions
(
outPositions
);
arraySizes
.
push_back
(
outPositions
.
size
());
arraySizes
.
push_back
(
outPositions
.
size
());
}
}
else
if
(
child
.
getName
()
==
"Velocities"
)
{
else
if
(
child
.
getName
()
==
"Velocities"
)
{
vector
<
Vec3
>
outVelocities
;
vector
<
Vec3
>
outVelocities
;
for
(
int
i
=
0
;
i
<
(
int
)
child
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
child
.
getChildren
())
const
SerializationNode
&
particle
=
child
.
getChildren
()[
i
];
outVelocities
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
outVelocities
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
}
builder
.
setVelocities
(
outVelocities
);
builder
.
setVelocities
(
outVelocities
);
arraySizes
.
push_back
(
outVelocities
.
size
());
arraySizes
.
push_back
(
outVelocities
.
size
());
}
}
else
if
(
child
.
getName
()
==
"Forces"
)
{
else
if
(
child
.
getName
()
==
"Forces"
)
{
vector
<
Vec3
>
outForces
;
vector
<
Vec3
>
outForces
;
for
(
int
i
=
0
;
i
<
(
int
)
child
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
particle
:
child
.
getChildren
())
const
SerializationNode
&
particle
=
child
.
getChildren
()[
i
];
outForces
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
outForces
.
push_back
(
Vec3
(
particle
.
getDoubleProperty
(
"x"
),
particle
.
getDoubleProperty
(
"y"
),
particle
.
getDoubleProperty
(
"z"
)));
}
builder
.
setForces
(
outForces
);
builder
.
setForces
(
outForces
);
arraySizes
.
push_back
(
outForces
.
size
());
arraySizes
.
push_back
(
outForces
.
size
());
}
}
...
...
serialization/src/SystemProxy.cpp
View file @
08e8b206
...
@@ -129,14 +129,11 @@ void* SystemProxy::deserialize(const SerializationNode& node) const {
...
@@ -129,14 +129,11 @@ void* SystemProxy::deserialize(const SerializationNode& node) const {
}
}
}
}
const
SerializationNode
&
constraints
=
node
.
getChildNode
(
"Constraints"
);
const
SerializationNode
&
constraints
=
node
.
getChildNode
(
"Constraints"
);
for
(
int
i
=
0
;
i
<
(
int
)
constraints
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
constraint
:
constraints
.
getChildren
())
const
SerializationNode
&
constraint
=
constraints
.
getChildren
()[
i
];
system
->
addConstraint
(
constraint
.
getIntProperty
(
"p1"
),
constraint
.
getIntProperty
(
"p2"
),
constraint
.
getDoubleProperty
(
"d"
));
system
->
addConstraint
(
constraint
.
getIntProperty
(
"p1"
),
constraint
.
getIntProperty
(
"p2"
),
constraint
.
getDoubleProperty
(
"d"
));
}
const
SerializationNode
&
forces
=
node
.
getChildNode
(
"Forces"
);
const
SerializationNode
&
forces
=
node
.
getChildNode
(
"Forces"
);
for
(
int
i
=
0
;
i
<
(
int
)
forces
.
getChildren
().
size
();
i
++
)
{
for
(
auto
&
force
:
forces
.
getChildren
())
system
->
addForce
(
forces
.
getChildren
()[
i
].
decodeObject
<
Force
>
());
system
->
addForce
(
force
.
decodeObject
<
Force
>
());
}
}
}
catch
(...)
{
catch
(...)
{
delete
system
;
delete
system
;
...
...
serialization/src/TabulatedFunctionProxies.cpp
View file @
08e8b206
...
@@ -49,8 +49,8 @@ void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode&
...
@@ -49,8 +49,8 @@ void Continuous1DFunctionProxy::serialize(const void* object, SerializationNode&
node
.
setDoubleProperty
(
"min"
,
min
);
node
.
setDoubleProperty
(
"min"
,
min
);
node
.
setDoubleProperty
(
"max"
,
max
);
node
.
setDoubleProperty
(
"max"
,
max
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Continuous1DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Continuous1DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -58,8 +58,8 @@ void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) cons
...
@@ -58,8 +58,8 @@ void* Continuous1DFunctionProxy::deserialize(const SerializationNode& node) cons
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Continuous1DFunction
(
values
,
node
.
getDoubleProperty
(
"min"
),
node
.
getDoubleProperty
(
"max"
));
return
new
Continuous1DFunction
(
values
,
node
.
getDoubleProperty
(
"min"
),
node
.
getDoubleProperty
(
"max"
));
}
}
...
@@ -80,8 +80,8 @@ void Continuous2DFunctionProxy::serialize(const void* object, SerializationNode&
...
@@ -80,8 +80,8 @@ void Continuous2DFunctionProxy::serialize(const void* object, SerializationNode&
node
.
setDoubleProperty
(
"ymin"
,
ymin
);
node
.
setDoubleProperty
(
"ymin"
,
ymin
);
node
.
setDoubleProperty
(
"ymax"
,
ymax
);
node
.
setDoubleProperty
(
"ymax"
,
ymax
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Continuous2DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Continuous2DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -89,8 +89,8 @@ void* Continuous2DFunctionProxy::deserialize(const SerializationNode& node) cons
...
@@ -89,8 +89,8 @@ void* Continuous2DFunctionProxy::deserialize(const SerializationNode& node) cons
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Continuous2DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
values
,
return
new
Continuous2DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
values
,
node
.
getDoubleProperty
(
"xmin"
),
node
.
getDoubleProperty
(
"xmax"
),
node
.
getDoubleProperty
(
"ymin"
),
node
.
getDoubleProperty
(
"ymax"
));
node
.
getDoubleProperty
(
"xmin"
),
node
.
getDoubleProperty
(
"xmax"
),
node
.
getDoubleProperty
(
"ymin"
),
node
.
getDoubleProperty
(
"ymax"
));
}
}
...
@@ -115,8 +115,8 @@ void Continuous3DFunctionProxy::serialize(const void* object, SerializationNode&
...
@@ -115,8 +115,8 @@ void Continuous3DFunctionProxy::serialize(const void* object, SerializationNode&
node
.
setDoubleProperty
(
"zmin"
,
zmin
);
node
.
setDoubleProperty
(
"zmin"
,
zmin
);
node
.
setDoubleProperty
(
"zmax"
,
zmax
);
node
.
setDoubleProperty
(
"zmax"
,
zmax
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Continuous3DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Continuous3DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -124,8 +124,8 @@ void* Continuous3DFunctionProxy::deserialize(const SerializationNode& node) cons
...
@@ -124,8 +124,8 @@ void* Continuous3DFunctionProxy::deserialize(const SerializationNode& node) cons
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Continuous3DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
node
.
getIntProperty
(
"zsize"
),
values
,
return
new
Continuous3DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
node
.
getIntProperty
(
"zsize"
),
values
,
node
.
getDoubleProperty
(
"xmin"
),
node
.
getDoubleProperty
(
"xmax"
),
node
.
getDoubleProperty
(
"ymin"
),
node
.
getDoubleProperty
(
"ymax"
),
node
.
getDoubleProperty
(
"xmin"
),
node
.
getDoubleProperty
(
"xmax"
),
node
.
getDoubleProperty
(
"ymin"
),
node
.
getDoubleProperty
(
"ymax"
),
node
.
getDoubleProperty
(
"zmin"
),
node
.
getDoubleProperty
(
"zmax"
));
node
.
getDoubleProperty
(
"zmin"
),
node
.
getDoubleProperty
(
"zmax"
));
...
@@ -140,8 +140,8 @@ void Discrete1DFunctionProxy::serialize(const void* object, SerializationNode& n
...
@@ -140,8 +140,8 @@ void Discrete1DFunctionProxy::serialize(const void* object, SerializationNode& n
vector
<
double
>
values
;
vector
<
double
>
values
;
function
.
getFunctionParameters
(
values
);
function
.
getFunctionParameters
(
values
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Discrete1DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Discrete1DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -149,8 +149,8 @@ void* Discrete1DFunctionProxy::deserialize(const SerializationNode& node) const
...
@@ -149,8 +149,8 @@ void* Discrete1DFunctionProxy::deserialize(const SerializationNode& node) const
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Discrete1DFunction
(
values
);
return
new
Discrete1DFunction
(
values
);
}
}
...
@@ -166,8 +166,8 @@ void Discrete2DFunctionProxy::serialize(const void* object, SerializationNode& n
...
@@ -166,8 +166,8 @@ void Discrete2DFunctionProxy::serialize(const void* object, SerializationNode& n
node
.
setDoubleProperty
(
"xsize"
,
xsize
);
node
.
setDoubleProperty
(
"xsize"
,
xsize
);
node
.
setDoubleProperty
(
"ysize"
,
ysize
);
node
.
setDoubleProperty
(
"ysize"
,
ysize
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Discrete2DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Discrete2DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -175,8 +175,8 @@ void* Discrete2DFunctionProxy::deserialize(const SerializationNode& node) const
...
@@ -175,8 +175,8 @@ void* Discrete2DFunctionProxy::deserialize(const SerializationNode& node) const
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Discrete2DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
values
);
return
new
Discrete2DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
values
);
}
}
...
@@ -193,8 +193,8 @@ void Discrete3DFunctionProxy::serialize(const void* object, SerializationNode& n
...
@@ -193,8 +193,8 @@ void Discrete3DFunctionProxy::serialize(const void* object, SerializationNode& n
node
.
setDoubleProperty
(
"ysize"
,
ysize
);
node
.
setDoubleProperty
(
"ysize"
,
ysize
);
node
.
setDoubleProperty
(
"zsize"
,
zsize
);
node
.
setDoubleProperty
(
"zsize"
,
zsize
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
SerializationNode
&
valuesNode
=
node
.
createChildNode
(
"Values"
);
for
(
int
j
=
0
;
j
<
(
int
)
values
.
size
();
j
++
)
for
(
auto
v
:
values
)
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
alues
[
j
]
);
valuesNode
.
createChildNode
(
"Value"
).
setDoubleProperty
(
"v"
,
v
);
}
}
void
*
Discrete3DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
void
*
Discrete3DFunctionProxy
::
deserialize
(
const
SerializationNode
&
node
)
const
{
...
@@ -202,7 +202,7 @@ void* Discrete3DFunctionProxy::deserialize(const SerializationNode& node) const
...
@@ -202,7 +202,7 @@ void* Discrete3DFunctionProxy::deserialize(const SerializationNode& node) const
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
(
int
j
=
0
;
j
<
(
int
)
valuesNode
.
getChildren
()
.
size
();
j
++
)
for
(
auto
&
child
:
valuesNode
.
getChildren
())
values
.
push_back
(
valuesNode
.
getChildren
()[
j
]
.
getDoubleProperty
(
"v"
));
values
.
push_back
(
child
.
getDoubleProperty
(
"v"
));
return
new
Discrete3DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
node
.
getIntProperty
(
"zsize"
),
values
);
return
new
Discrete3DFunction
(
node
.
getIntProperty
(
"xsize"
),
node
.
getIntProperty
(
"ysize"
),
node
.
getIntProperty
(
"zsize"
),
values
);
}
}
serialization/src/XmlSerializer.cpp
View file @
08e8b206
...
@@ -115,11 +115,10 @@ void XmlSerializer::encodeNode(const SerializationNode& node, std::ostream& stre
...
@@ -115,11 +115,10 @@ void XmlSerializer::encodeNode(const SerializationNode& node, std::ostream& stre
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
stream
<<
'\t'
;
stream
<<
'\t'
;
stream
<<
'<'
<<
node
.
getName
();
stream
<<
'<'
<<
node
.
getName
();
const
map
<
string
,
string
>&
properties
=
node
.
getProperties
();
for
(
auto
&
prop
:
node
.
getProperties
())
{
for
(
map
<
string
,
string
>::
const_iterator
iter
=
properties
.
begin
();
iter
!=
properties
.
end
();
++
iter
)
{
string
name
,
value
;
string
name
,
value
;
encodeString
(
iter
->
first
,
&
name
);
encodeString
(
prop
.
first
,
&
name
);
encodeString
(
iter
->
second
,
&
value
);
encodeString
(
prop
.
second
,
&
value
);
stream
<<
' '
<<
name
<<
"=
\"
"
<<
value
<<
'\"'
;
stream
<<
' '
<<
name
<<
"=
\"
"
<<
value
<<
'\"'
;
}
}
const
vector
<
SerializationNode
>&
children
=
node
.
getChildren
();
const
vector
<
SerializationNode
>&
children
=
node
.
getChildren
();
...
@@ -127,8 +126,8 @@ void XmlSerializer::encodeNode(const SerializationNode& node, std::ostream& stre
...
@@ -127,8 +126,8 @@ void XmlSerializer::encodeNode(const SerializationNode& node, std::ostream& stre
stream
<<
"/>
\n
"
;
stream
<<
"/>
\n
"
;
else
{
else
{
stream
<<
">
\n
"
;
stream
<<
">
\n
"
;
for
(
int
i
=
0
;
i
<
(
int
)
children
.
size
();
i
++
)
for
(
auto
&
child
:
children
)
encodeNode
(
child
ren
[
i
]
,
stream
,
depth
+
1
);
encodeNode
(
child
,
stream
,
depth
+
1
);
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
stream
<<
'\t'
;
stream
<<
'\t'
;
stream
<<
"</"
<<
node
.
getName
()
<<
">
\n
"
;
stream
<<
"</"
<<
node
.
getName
()
<<
">
\n
"
;
...
...
Prev
1
2
3
4
5
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment