Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78552 - trunk/boost/wave
From: hartmut.kaiser_at_[hidden]
Date: 2012-05-23 10:34:49


Author: hkaiser
Date: 2012-05-23 10:34:49 EDT (Wed, 23 May 2012)
New Revision: 78552
URL: http://svn.boost.org/trac/boost/changeset/78552

Log:
Wave: Fixed #6758: not all members are initialized by base_iteration_context constructor.

Text files modified:
   trunk/boost/wave/cpp_iteration_context.hpp | 62 ++++++++++++++++++++-------------------
   1 files changed, 32 insertions(+), 30 deletions(-)

Modified: trunk/boost/wave/cpp_iteration_context.hpp
==============================================================================
--- trunk/boost/wave/cpp_iteration_context.hpp (original)
+++ trunk/boost/wave/cpp_iteration_context.hpp 2012-05-23 10:34:49 EDT (Wed, 23 May 2012)
@@ -1,10 +1,10 @@
 /*=============================================================================
     Boost.Wave: A Standard compliant C++ preprocessor library
     Definition of the preprocessor context
-
+
     http://www.boost.org/
 
- Copyright (c) 2001-2011 Hartmut Kaiser. Distributed under the Boost
+ Copyright (c) 2001-2012 Hartmut Kaiser. 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)
 =============================================================================*/
@@ -22,7 +22,7 @@
 #include <boost/wave/cpp_exceptions.hpp>
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
-// #include <boost/spirit/include/iterator/classic_multi_pass.hpp> // make_multi_pass
+// #include <boost/spirit/include/iterator/classic_multi_pass.hpp> // make_multi_pass
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -36,9 +36,9 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// The iteration_context_policies templates are policies for the
-// boost::wave::iteration_context which allows to control, how a given
-// input file is to be represented by a pair of iterators pointing to the
+// The iteration_context_policies templates are policies for the
+// boost::wave::iteration_context which allows to control, how a given
+// input file is to be represented by a pair of iterators pointing to the
 // begin and the end of the resulting input sequence.
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -47,18 +47,18 @@
     //
     // load_file_to_string
     //
- // Loads a file into a string and returns the iterators pointing to
+ // Loads a file into a string and returns the iterators pointing to
     // the beginning and the end of the loaded string.
     //
     ///////////////////////////////////////////////////////////////////////////
- struct load_file_to_string
+ struct load_file_to_string
     {
         template <typename IterContextT>
- class inner
+ class inner
         {
         public:
             template <typename PositionT>
- static void init_iterators(IterContextT &iter_ctx,
+ static void init_iterators(IterContextT &iter_ctx,
                 PositionT const &act_pos, language_support language)
             {
                 typedef typename IterContextT::iterator_type iterator_type;
@@ -66,7 +66,7 @@
                 // read in the file
                 std::ifstream instream(iter_ctx.filename.c_str());
                 if (!instream.is_open()) {
- BOOST_WAVE_THROW_CTX(iter_ctx.ctx, preprocess_exception,
+ BOOST_WAVE_THROW_CTX(iter_ctx.ctx, preprocess_exception,
                         bad_include_file, iter_ctx.filename.c_str(), act_pos);
                     return;
                 }
@@ -77,7 +77,7 @@
                     std::istreambuf_iterator<char>());
 
                 iter_ctx.first = iterator_type(
- iter_ctx.instring.begin(), iter_ctx.instring.end(),
+ iter_ctx.instring.begin(), iter_ctx.instring.end(),
                     PositionT(iter_ctx.filename), language);
                 iter_ctx.last = iterator_type();
             }
@@ -92,7 +92,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Base class for iteration contexts
 template <typename ContextT, typename IteratorT>
-struct base_iteration_context
+struct base_iteration_context
 {
     enum file_type
     {
@@ -103,21 +103,23 @@
     };
 
     base_iteration_context(ContextT& ctx_,
- BOOST_WAVE_STRINGTYPE const &fname, std::size_t if_block_depth = 0)
- : real_filename(fname), real_relative_filename(fname), filename(fname),
- line(1), emitted_lines(0), if_block_depth(if_block_depth), ctx(ctx_)
+ BOOST_WAVE_STRINGTYPE const &fname, std::size_t if_block_depth = 0)
+ : real_filename(fname), real_relative_filename(fname), filename(fname),
+ line(1), emitted_lines(0), if_block_depth(if_block_depth), ctx(ctx_),
+ type(main_file)
     {}
- base_iteration_context(ContextT& ctx_,
- IteratorT const &first_, IteratorT const &last_,
+ base_iteration_context(ContextT& ctx_,
+ IteratorT const &first_, IteratorT const &last_,
             BOOST_WAVE_STRINGTYPE const &fname, std::size_t if_block_depth = 0,
- file_type type = main_file)
- : first(first_), last(last_), real_filename(fname),
- real_relative_filename(fname), filename(fname),
- line(1), emitted_lines(0), if_block_depth(if_block_depth), ctx(ctx_)
+ file_type type_ = main_file)
+ : first(first_), last(last_), real_filename(fname),
+ real_relative_filename(fname), filename(fname),
+ line(1), emitted_lines(0), if_block_depth(if_block_depth), ctx(ctx_),
+ type(type_)
     {}
 
 // the actual input stream
- IteratorT first; // actual input stream position
+ IteratorT first; // actual input stream position
     IteratorT last; // end of input stream
     BOOST_WAVE_STRINGTYPE real_filename; // real name of the current file
     BOOST_WAVE_STRINGTYPE real_relative_filename; // real relative name of the current file
@@ -130,14 +132,14 @@
 };
 
 ///////////////////////////////////////////////////////////////////////////////
-//
+//
 template <
- typename ContextT, typename IteratorT,
- typename InputPolicyT = typename ContextT::input_policy_type
+ typename ContextT, typename IteratorT,
+ typename InputPolicyT = typename ContextT::input_policy_type
>
 struct iteration_context
 : public base_iteration_context<ContextT, IteratorT>,
- public InputPolicyT::template
+ public InputPolicyT::template
         inner<iteration_context<ContextT, IteratorT, InputPolicyT> >
 {
     typedef IteratorT iterator_type;
@@ -146,10 +148,10 @@
     typedef base_iteration_context<ContextT, IteratorT> base_type;
     typedef iteration_context<ContextT, IteratorT, InputPolicyT> self_type;
 
- iteration_context(ContextT& ctx, BOOST_WAVE_STRINGTYPE const &fname,
- position_type const &act_pos,
+ iteration_context(ContextT& ctx, BOOST_WAVE_STRINGTYPE const &fname,
+ position_type const &act_pos,
             boost::wave::language_support language_,
- typename base_type::file_type type = base_type::main_file)
+ typename base_type::file_type type = base_type::main_file)
     : base_iteration_context<ContextT, IteratorT>(ctx, fname, type)
     {
         InputPolicyT::template inner<self_type>::init_iterators(


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk