environment.ipp
来自「Boost provides free peer-reviewed portab」· IPP 代码 · 共 118 行
IPP
118 行
// (C) Copyright Gennadiy Rozental 2005-2008.// Distributed under the Boost Software License, Version 1.0.// (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt)// See http://www.boost.org/libs/test for the library home page.//// File : $RCSfile$//// Version : $Revision: 49312 $//// Description : implements model of program environment // ***************************************************************************#ifndef BOOST_RT_ENV_ENVIRONMENT_IPP_062904GER#define BOOST_RT_ENV_ENVIRONMENT_IPP_062904GER// Boost.Runtime.Parameter#include <boost/test/utils/runtime/config.hpp>#include <boost/test/utils/runtime/validation.hpp>#include <boost/test/utils/runtime/env/variable.hpp>// Boost.Test#include <boost/test/utils/basic_cstring/compare.hpp>#include <boost/test/utils/basic_cstring/io.hpp>// STL#include <map>#include <list>namespace boost {namespace BOOST_RT_PARAM_NAMESPACE {namespace environment {// ************************************************************************** //// ************** runtime::environment ************** //// ************************************************************************** //namespace rt_env_detail {typedef std::map<cstring,rt_env_detail::variable_data> registry;typedef std::list<dstring> keys;BOOST_RT_PARAM_INLINE registry& s_registry() { static registry instance; return instance; }BOOST_RT_PARAM_INLINE keys& s_keys() { static keys instance; return instance; }BOOST_RT_PARAM_INLINE variable_data&new_var_record( cstring var_name ){ // save the name in list of keys s_keys().push_back( dstring() ); dstring& key = s_keys().back(); assign_op( key, var_name, 0 ); // create and return new record variable_data& new_var_data = s_registry()[key]; new_var_data.m_var_name = key; return new_var_data;}//____________________________________________________________________________//BOOST_RT_PARAM_INLINE variable_data*find_var_record( cstring var_name ){ registry::iterator it = s_registry().find( var_name ); return it == s_registry().end() ? 0 : &(it->second);}//____________________________________________________________________________//BOOST_RT_PARAM_INLINE cstringsys_read_var( cstring var_name ){ using namespace std; return BOOST_RT_PARAM_GETENV( var_name.begin() );}//____________________________________________________________________________//BOOST_RT_PARAM_INLINE voidsys_write_var( cstring var_name, format_stream& var_value ){ BOOST_RT_PARAM_PUTENV( var_name, cstring( var_value.str() ) );}//____________________________________________________________________________//} // namespace rt_env_detailBOOST_RT_PARAM_INLINE variable_basevar( cstring var_name ){ rt_env_detail::variable_data* vd = rt_env_detail::find_var_record( var_name ); BOOST_RT_PARAM_VALIDATE_LOGIC( !!vd, BOOST_RT_PARAM_LITERAL( "First access to the environment variable " ) << var_name << BOOST_RT_PARAM_LITERAL( " should be typed" ) ); return variable_base( *vd );}//____________________________________________________________________________//} // namespace environment} // namespace BOOST_RT_PARAM_NAMESPACE} // namespace boost#endif // BOOST_RT_ENV_ENVIRONMENT_IPP_062904GER
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?