LCOV - code coverage report
Current view: top level - usr/include/boost/wave/util - iteration_context.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 13 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 1 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(ITERATION_CONTEXT_HPP_9556CD16_F11E_4ADC_AC8B_FB9A174BE664_INCLUDED)
      12             : #define ITERATION_CONTEXT_HPP_9556CD16_F11E_4ADC_AC8B_FB9A174BE664_INCLUDED
      13             : 
      14             : #include <cstdlib>
      15             : #include <cstdio>
      16             : #include <stack>
      17             : 
      18             : #include <boost/wave/wave_config.hpp>
      19             : #include <boost/wave/cpp_exceptions.hpp>
      20             : 
      21             : // this must occur after all of the includes and before any code appears
      22             : #ifdef BOOST_HAS_ABI_HEADERS
      23             : #include BOOST_ABI_PREFIX
      24             : #endif
      25             : 
      26             : ///////////////////////////////////////////////////////////////////////////////
      27             : namespace boost {
      28             : namespace wave {
      29             : namespace util {
      30             : 
      31             : ///////////////////////////////////////////////////////////////////////////////
      32             : template <typename IterationContextT>
      33           0 : class iteration_context_stack
      34             : {
      35             :     typedef std::stack<IterationContextT> base_type;
      36             : 
      37             : public:
      38             :     typedef typename base_type::size_type size_type;
      39             : 
      40           0 :     iteration_context_stack()
      41           0 :     :   max_include_nesting_depth(BOOST_WAVE_MAX_INCLUDE_LEVEL_DEPTH)
      42           0 :     {}
      43             : 
      44             :     void set_max_include_nesting_depth(size_type new_depth)
      45             :         {  max_include_nesting_depth = new_depth; }
      46             :     size_type get_max_include_nesting_depth() const
      47             :         { return max_include_nesting_depth; }
      48             : 
      49           0 :     typename base_type::size_type size() const { return iter_ctx.size(); }
      50           0 :     typename base_type::value_type &top() { return iter_ctx.top(); }
      51           0 :     void pop() { iter_ctx.pop(); }
      52             : 
      53             :     template <typename Context, typename PositionT>
      54           0 :     void push(Context& ctx, PositionT const &pos,
      55             :         typename base_type::value_type const &val)
      56             :     {
      57           0 :         if (iter_ctx.size() == max_include_nesting_depth) {
      58             :         char buffer[22];    // 21 bytes holds all NUL-terminated unsigned 64-bit numbers
      59             : 
      60             :             using namespace std;    // for some systems sprintf is in namespace std
      61           0 :             sprintf(buffer, "%d", (int)max_include_nesting_depth);
      62           0 :             BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
      63             :                 include_nesting_too_deep, buffer, pos);
      64             :         }
      65           0 :         iter_ctx.push(val);
      66           0 :     }
      67             : 
      68             : private:
      69             :     size_type max_include_nesting_depth;
      70             :     base_type iter_ctx;
      71             : };
      72             : 
      73             : ///////////////////////////////////////////////////////////////////////////////
      74             : }   // namespace util
      75             : }   // namespace wave
      76             : }   // namespace boost
      77             : 
      78             : // the suffix header occurs after all of the code
      79             : #ifdef BOOST_HAS_ABI_HEADERS
      80             : #include BOOST_ABI_SUFFIX
      81             : #endif
      82             : 
      83             : #endif // !defined(ITERATION_CONTEXT_HPP_9556CD16_F11E_4ADC_AC8B_FB9A174BE664_INCLUDED)

Generated by: LCOV version 1.14