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
"plugins/amoeba/openmmapi/vscode:/vscode.git/clone" did not exist on "887d4e18d12a51eba894f335c0da53c543d1b802"
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:
...
@@ -103,8 +103,8 @@ public:
static
const
SerializationProxy
&
getProxy
(
const
std
::
type_info
&
type
);
static
const
SerializationProxy
&
getProxy
(
const
std
::
type_info
&
type
);
private:
private:
std
::
string
typeName
;
std
::
string
typeName
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
p
roxiesByType
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
&
getP
roxiesByType
()
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
p
roxiesByName
;
static
std
::
map
<
const
std
::
string
,
const
SerializationProxy
*>
&
getP
roxiesByName
()
;
};
};
}
// namespace OpenMM
}
// namespace OpenMM
...
...
serialization/src/SerializationProxy.cpp
View file @
b3ee3b69
...
@@ -36,8 +36,15 @@
...
@@ -36,8 +36,15 @@
using
namespace
OpenMM
;
using
namespace
OpenMM
;
using
namespace
std
;
using
namespace
std
;
map
<
const
string
,
const
SerializationProxy
*>
SerializationProxy
::
proxiesByType
;
map
<
const
string
,
const
SerializationProxy
*>&
SerializationProxy
::
getProxiesByType
()
{
map
<
const
string
,
const
SerializationProxy
*>
SerializationProxy
::
proxiesByName
;
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
)
{
SerializationProxy
::
SerializationProxy
(
const
string
&
typeName
)
:
typeName
(
typeName
)
{
}
}
...
@@ -47,20 +54,20 @@ const string& SerializationProxy::getTypeName() const {
...
@@ -47,20 +54,20 @@ const string& SerializationProxy::getTypeName() const {
}
}
void
SerializationProxy
::
registerProxy
(
const
type_info
&
type
,
const
SerializationProxy
*
proxy
)
{
void
SerializationProxy
::
registerProxy
(
const
type_info
&
type
,
const
SerializationProxy
*
proxy
)
{
p
roxiesByType
[
type
.
name
()]
=
proxy
;
getP
roxiesByType
()
[
type
.
name
()]
=
proxy
;
p
roxiesByName
[
proxy
->
getTypeName
()]
=
proxy
;
getP
roxiesByName
()
[
proxy
->
getTypeName
()]
=
proxy
;
}
}
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
string
&
typeName
)
{
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
string
&
typeName
)
{
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
p
roxiesByName
.
find
(
typeName
);
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
getP
roxiesByName
()
.
find
(
typeName
);
if
(
iter
==
p
roxiesByName
.
end
())
if
(
iter
==
getP
roxiesByName
()
.
end
())
throw
OpenMMException
(
"There is no serialization proxy registered for type '"
+
string
(
typeName
)
+
"'"
);
throw
OpenMMException
(
"There is no serialization proxy registered for type '"
+
string
(
typeName
)
+
"'"
);
return
*
iter
->
second
;
return
*
iter
->
second
;
}
}
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
type_info
&
type
)
{
const
SerializationProxy
&
SerializationProxy
::
getProxy
(
const
type_info
&
type
)
{
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
p
roxiesByType
.
find
(
type
.
name
());
map
<
const
string
,
const
SerializationProxy
*>::
const_iterator
iter
=
getP
roxiesByType
()
.
find
(
type
.
name
());
if
(
iter
==
p
roxiesByType
.
end
())
if
(
iter
==
getP
roxiesByType
()
.
end
())
throw
OpenMMException
(
"There is no serialization proxy registered for type "
+
string
(
type
.
name
()));
throw
OpenMMException
(
"There is no serialization proxy registered for type "
+
string
(
type
.
name
()));
return
*
iter
->
second
;
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