LCOV - code coverage report
Current view: top level - usr/include/boost/wave/util - symbol_table.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 3 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*=============================================================================
       2             :     Boost.Wave: A Standard compliant C++ preprocessor library
       3             : 
       4             :     http://www.boost.org/
       5             : 
       6             :     Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
       7             :     Software License, Version 1.0. (See accompanying file
       8             :     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       9             : =============================================================================*/
      10             : 
      11             : #if !defined(SYMBOL_TABLE_HPP_32B0F7C6_3DD6_4113_95A5_E16516C6F45A_INCLUDED)
      12             : #define SYMBOL_TABLE_HPP_32B0F7C6_3DD6_4113_95A5_E16516C6F45A_INCLUDED
      13             : 
      14             : #include <map>
      15             : 
      16             : #include <boost/wave/wave_config.hpp>
      17             : #include <boost/intrusive_ptr.hpp>
      18             : 
      19             : #if BOOST_WAVE_SERIALIZATION != 0
      20             : #include <boost/serialization/serialization.hpp>
      21             : #include <boost/serialization/map.hpp>
      22             : #include <boost/shared_ptr.hpp>
      23             : #else
      24             : #include <boost/intrusive_ptr.hpp>
      25             : #endif
      26             : 
      27             : #include <boost/iterator/transform_iterator.hpp>
      28             : 
      29             : // this must occur after all of the includes and before any code appears
      30             : #ifdef BOOST_HAS_ABI_HEADERS
      31             : #include BOOST_ABI_PREFIX
      32             : #endif
      33             : 
      34             : ///////////////////////////////////////////////////////////////////////////////
      35             : namespace boost {
      36             : namespace wave {
      37             : namespace util {
      38             : 
      39             : ///////////////////////////////////////////////////////////////////////////////
      40             : //
      41             : //  The symbol_table class is used for the storage of defined macros.
      42             : //
      43             : ///////////////////////////////////////////////////////////////////////////////
      44             : 
      45             : template <typename StringT, typename MacroDefT>
      46           0 : struct symbol_table
      47             : #if BOOST_WAVE_SERIALIZATION != 0
      48             : :   public std::map<StringT, boost::shared_ptr<MacroDefT> >
      49             : #else
      50             : :   public std::map<StringT, boost::intrusive_ptr<MacroDefT> >
      51             : #endif
      52             : {
      53             : #if BOOST_WAVE_SERIALIZATION != 0
      54             :     typedef std::map<StringT, boost::shared_ptr<MacroDefT> > base_type;
      55             : #else
      56             :     typedef std::map<StringT, boost::intrusive_ptr<MacroDefT> > base_type;
      57             : #endif
      58             :     typedef typename base_type::iterator iterator_type;
      59             :     typedef typename base_type::const_iterator const_iterator_type;
      60             : 
      61           0 :     symbol_table(long uid_ = 0)
      62           0 :     {}
      63             : 
      64             : #if BOOST_WAVE_SERIALIZATION != 0
      65             : private:
      66             :     friend class boost::serialization::access;
      67             :     template<typename Archive>
      68             :     void serialize(Archive &ar, const unsigned int version)
      69             :     {
      70             :         using namespace boost::serialization;
      71             :         ar & make_nvp("symbol_table",
      72             :             boost::serialization::base_object<base_type>(*this));
      73             :     }
      74             : #endif
      75             : 
      76             : private:
      77             :     ///////////////////////////////////////////////////////////////////////////
      78             :     //
      79             :     //  This is a special iterator allowing to iterate the names of all defined
      80             :     //  macros.
      81             :     //
      82             :     ///////////////////////////////////////////////////////////////////////////
      83             :     template <typename StringT1>
      84             :     struct get_first
      85             :     {
      86             :         typedef StringT1 const& result_type;
      87             : 
      88             :         template <typename First, typename Second>
      89             :         StringT1 const& operator() (std::pair<First, Second> const& p) const
      90             :         {
      91             :             return p.first;
      92             :         }
      93             :     };
      94             :     typedef get_first<StringT> unary_functor;
      95             : 
      96             : public:
      97             :     typedef transform_iterator<unary_functor, iterator_type>
      98             :         name_iterator;
      99             :     typedef transform_iterator<unary_functor, const_iterator_type>
     100             :         const_name_iterator;
     101             : 
     102             :     template <typename Iterator>
     103             :     static
     104             :     transform_iterator<unary_functor, Iterator> make_iterator(Iterator it)
     105             :     {
     106             :         return boost::make_transform_iterator<unary_functor>(it);
     107             :     }
     108             : };
     109             : 
     110             : ///////////////////////////////////////////////////////////////////////////////
     111             : }   // namespace util
     112             : }   // namespace wave
     113             : }   // namespace boost
     114             : 
     115             : // the suffix header occurs after all of the code
     116             : #ifdef BOOST_HAS_ABI_HEADERS
     117             : #include BOOST_ABI_SUFFIX
     118             : #endif
     119             : 
     120             : #endif // !defined(SYMBOL_TABLE_HPP_32B0F7C6_3DD6_4113_95A5_E16516C6F45A_INCLUDED)

Generated by: LCOV version 1.14