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
b3ee3b69
Commit
b3ee3b69
authored
Feb 03, 2011
by
Peter Eastman
Browse files
Eliminated the potential for initialization order problems
parent
00874c4a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
10 deletions
+17
-10
serialization/include/openmm/serialization/SerializationProxy.h
...ization/include/openmm/serialization/SerializationProxy.h
+2
-2
serialization/src/SerializationProxy.cpp
serialization/src/SerializationProxy.cpp
+15
-8
No files found.
serialization/include/openmm/serialization/SerializationProxy.h
View file @
b3ee3b69
...
...
@@ -103,8 +103,8 @@ public:
static
const
SerializationProxy
&
getProxy
(
const
std
::
type_info
&
type
);
private:
std
::
string
typeName
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
p
roxiesByType
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
p
roxiesByName
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
&
getP
roxiesByType
()
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
&
getP
roxiesByName
()
;
};
}
// namespace OpenMM
...
...
serialization/src/SerializationProxy.cpp
View file @
b3ee3b69
...
...
@@ -36,8 +36,15 @@
using
namespace
OpenMM
;
using
namespace
std
;
map
<
const
string
,
const
SerializationProxy
*>
SerializationProxy
::
proxiesByType
;
map
<
const
string
,
const
SerializationProxy
*>
SerializationProxy
::
proxiesByName
;
map
<
const
string
,
const
SerializationProxy
*>&
SerializationProxy
::
getProxiesByType
()
{
static
map
<
const
string
,
const
SerializationProxy
*>
proxies
;
return
proxies
;
}
map
<
const
string
,
const
SerializationProxy
*>&
SerializationProxy
::
getProxiesByName
()
{
static
map
<
const
string
,
const
SerializationProxy
*>
proxies
;
return
proxies
;
}
SerializationProxy
::
SerializationProxy
(
const
string
&
typeName
)
:
typeName
(
typeName
)
{
}
...
...
@@ -47,20 +54,20 @@ const string& SerializationProxy::getTypeName() const {
}
void
SerializationProxy
::
registerProxy
(
const
type_info
&
type
,
const
SerializationProxy
*
proxy
)
{
p
roxiesByType
[
type
.
name
()]
=
proxy
;
p
roxiesByName
[
proxy
->
getTypeName
()]
=
proxy
;
getP
roxiesByType
()
[
type
.
name
()]
=
proxy
;
getP
roxiesByName
()
[
proxy
->
getTypeName
()]
=
proxy
;
}
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
string
&
typeName
)
{
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
p
roxiesByName
.
find
(
typeName
);
if
(
iter
==
p
roxiesByName
.
end
())
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
getP
roxiesByName
()
.
find
(
typeName
);
if
(
iter
==
getP
roxiesByName
()
.
end
())
throw
OpenMMException
(
"There is no serialization proxy registered for type '"
+
string
(
typeName
)
+
"'"
);
return
*
iter
->
second
;
}
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
type_info
&
type
)
{
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
p
roxiesByType
.
find
(
type
.
name
());
if
(
iter
==
p
roxiesByType
.
end
())
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
getP
roxiesByType
()
.
find
(
type
.
name
());
if
(
iter
==
getP
roxiesByType
()
.
end
())
throw
OpenMMException
(
"There is no serialization proxy registered for type "
+
string
(
type
.
name
()));
return
*
iter
->
second
;
}
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