Linux GNU 11.4.0 Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 92.5% 99 / 0 / 107
Functions: 94.1% 16 / 1 / 18
Branches: 89.6% 60 / 0 / 67

OMCompiler/SimulationRuntime/cpp/Core/Utils/extension/type_map.hpp
Line Branch Exec Source
1 /*
2 * Boost.Extension / factory map:
3 * map of factories (for the implementations)
4 *
5 * (C) Copyright Jeremy Pack 2008
6 * Distributed under the Boost Software License, Version 1.0. (See
7 * accompanying file LICENSE_1_0.txt or copy at
8 * http://www.boost.org/LICENSE_1_0.txt)
9 *
10 * See http://www.boost.org/ for latest version.
11 */
12
13 #ifndef BOOST_EXTENSION_TYPE_MAP_HPP
14 #define BOOST_EXTENSION_TYPE_MAP_HPP
15
16 #include <map>
17 #include <Core/Utils/extension/impl/typeinfo.hpp>
18 #include <type_traits>
19
20 namespace boost {
21 namespace extensions {
22
23 /** \brief A collection of types.
24 * \tparam TypeInfo The type used for TypeInfo. By default,
25 * RTTI is used, but users can define their own TypeInfo.
26 * See impl/typeinfo.hpp.
27 *
28 * The `type_map` class is used for holding an arbitrary collection
29 * of types - no more than one of each type.
30 * In general, standard usage is as follows:
31 *
32 * \code
33 * type_map types;
34 * // This will add an integer to the type_map, or retrieve
35 * // one if it already exists.
36 * int& first_int(types.get());
37 * first_int = 5;
38 * // This will make second_int point to the same value
39 * // as first_int.
40 * int& second_int(types.get());
41 * second_int = 10;
42 * // Now first_int is 10.
43 * // It is also possible to use arbitrary types in the map,
44 * // as long as they are default constructible.
45 * std::set<std::string>& my_string(types.get());
46 * \endcode
47 */
48 template <class TypeInfo>
49 400 class basic_type_map {
50 public:
51
52 #ifndef BOOST_EXTENSION_DOXYGEN_INVOKED
53 class type_map_convertible {
54 public:
55 friend class basic_type_map<TypeInfo>;
56 360 ~type_map_convertible() {
57 360 for (typename std::map<TypeInfo, generic_type_holder*>::iterator
58
2/2
✓ Branch 0 taken 706 times.
✓ Branch 1 taken 360 times.
1066 it =instances_.begin(); it != instances_.end(); ++it) {
59
1/2
✓ Branch 0 taken 706 times.
✗ Branch 1 not taken.
706 delete it->second;
60 }
61 360 }
62 template <class Type>
63
27/30
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 280 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinSolverSettings> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinSolverSettings> > > > >():
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 128 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> > > > > >():
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 128 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> > > > > >():
✗ Branch 0 not taken.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinSolverSettings> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinSolverSettings> > > > >():
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> > > > > >():
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimData>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimData> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimData>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimData> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*> > > > >():
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 80 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*> > > > >():
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
1752 operator Type&() {
64 typedef typename std::remove_const<Type>::type StoredType;
65 TypeInfo t =
66 type_info_handler<TypeInfo, StoredType>
67 ::get_class_type();
68 typename std::map<TypeInfo, generic_type_holder*>::iterator
69 it = instances_.find(t);
70
71 type_holder<StoredType>* holder;
72
27/30
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IAlgLoopSolverFactory, IGlobalSettings*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IHistory, IGlobalSettings&, unsigned long> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 280 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinSolverSettings> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinSolverSettings> > > > >():
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 128 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ILinearAlgLoopSolver, ILinSolverSettings*, std::shared_ptr<ILinearAlgLoop> > > > > >():
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 128 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<IMixedSystem, IGlobalSettings*, std::shared_ptr<ISimObjects> > > > > >():
✗ Branch 0 not taken.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinSolverSettings> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinSolverSettings>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinSolverSettings> > > > >():
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<INonLinearAlgLoopSolver, INonLinSolverSettings*, std::shared_ptr<INonLinearAlgLoop> > > > > >():
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISettingsFactory, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimController, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >():
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimData>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimData> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimData>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimData> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimObjects, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, IGlobalSettings*> > > > >():
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISimVars, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolver, IMixedSystem*, ISolverSettings*> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > > >():
✓ Branch 0 taken 80 times.
✓ Branch 1 taken 80 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<SolverDefaultImplementation, IMixedSystem*, ISolverSettings*> > > > >():
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
1752 if (it == instances_.end()) {
73 666 holder = new type_holder<StoredType>;
74 666 it = instances_.insert(std::make_pair(t, holder)).first;
75 }
76 else {
77 1086 holder = static_cast<type_holder<StoredType>*>(it->second);
78 }
79 1752 return holder->val;
80 }
81
82 private:
83 struct generic_type_holder {
84 ✗ virtual ~generic_type_holder() {}
85 };
86
87 // T must be default constructible.
88 template <class T>
89 666 struct type_holder : generic_type_holder {
90 T val;
91 };
92 std::map<TypeInfo, generic_type_holder*> instances_;
93 };
94
95 size_t size() {
96 return convertible_.instances_.size();
97 }
98
99 bool empty() {
100 return convertible_.instances_.empty();
101 }
102
103 type_map_convertible& get() {
104
3/3
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::operator std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > >&<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::extensions::factory<ISolverSettings, IGlobalSettings*>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::extensions::factory<ISolverSettings, IGlobalSettings*> > > > >():
✓ Branch 1 taken 40 times.
boost::extensions::basic_type_map<boost::extensions::default_type_info>::type_map_convertible::~type_map_convertible():
✓ Branch 2 taken 90 times.
✓ Branch 6 taken 68 times.
596 return convertible_;
105 }
106 #endif
107 /** \brief Retrieve a given type from the type_map.
108 *
109 * This is the only method users should ever need to use.
110 * By calling it with a template argument `Type`, a reference
111 * to the single object of that type will be returned, after
112 * being created if necessary.
113 * It is possible to omit the template parameter if it is clear
114 * from context:
115 * \code
116 * type_map types;
117 * int& my_int(types.get());
118 * \endcode
119 * \tparam Type The type of the object to return a reference to.
120 */
121 template <class Type>
122 Type& get() {
123 1156 return convertible_;
124 }
125 private:
126 type_map_convertible convertible_;
127
128 };
129 /** A typedef for convenience - provides the most common
130 * type of basic_factory_map.
131 */
132 typedef basic_type_map<default_type_info> type_map;
133
134 /** A macro to use as a generic
135 * function declaration for
136 * functions in shared libraries
137 * taking a reference to type_map
138 * and returning void.
139 */
140 #define BOOST_EXTENSION_TYPE_MAP_FUNCTION \
141 extern "C" \
142 void BOOST_EXTENSION_EXPORT_DECL \
143 boost_extension_exported_type_map_function \
144 (boost::extensions::type_map& types)
145
146 } // namespace extensions
147 } // namespace boost
148
149 #endif // BOOST_EXTENSION_TYPE_MAP_HPP
150