1 /*
2 ** Copyright 2018 Bloomberg Finance L.P.
3 **
4 ** Licensed under the Apache License, Version 2.0 (the "License");
5 ** you may not use this file except in compliance with the License.
6 ** You may obtain a copy of the License at
7 **
8 **     http://www.apache.org/licenses/LICENSE-2.0
9 **
10 ** Unless required by applicable law or agreed to in writing, software
11 ** distributed under the License is distributed on an "AS IS" BASIS,
12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ** See the License for the specific language governing permissions and
14 ** limitations under the License.
15 */
16 //NOTE: DO NOT INCLUDE DIRECTLY
17 
18 //##############################################################################################
19 //#################################### IMPLEMENTATIONS #########################################
20 //##############################################################################################
21 
22 #include <quantum/util/quantum_local_variable_guard.h>
23 
24 namespace Bloomberg {
25 namespace quantum {
26 namespace local {
27 
28 template<typename T>
VariableGuard(const std::string & key,T * value)29 VariableGuard<T>::VariableGuard(const std::string& key, T* value) :
30     _storage(variable<T>(key)),
31     _prev(_storage)
32 {
33     _storage = value;
34 }
35 
36 template<typename T>
~VariableGuard()37 VariableGuard<T>::~VariableGuard()
38 {
39     _storage = _prev;
40 }
41 
42 }}}
43