$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Felipe Magno de Almeida (felipe.m.almeida_at_[hidden])
Date: 2007-05-18 22:51:35
On 5/18/07, Hartmut Kaiser <hartmut.kaiser_at_[hidden]> wrote:
> Felipe,
>
> > I have modified it in my local copy to have this.
>
> That's a nice idea! Could you send me a patch, please? I'll incorporate it
> into the codebase.
Sure, in the end of the message.
Used cvs diff. Hope it is right.
>
> Regards Hartmut
Index: util/cpp_iterator.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/wave/util/cpp_iterator.hpp,v
retrieving revision 1.35.2.16
diff -r1.35.2.16 cpp_iterator.hpp
1205,1223c1205
< ctx.get_hooks().found_include_directive(f, include_next);
<
< file_path = util::impl::unescape_lit(file_path);
< if (!ctx.find_include_file (file_path, dir_path, is_system,
current_name)) {
< BOOST_WAVE_THROW(preprocess_exception, bad_include_file,
< file_path.c_str(), act_pos);
< }
<
< fs::path native_path(file_path, fs::native);
<
< if (!fs::exists(native_path)) {
< BOOST_WAVE_THROW(preprocess_exception, bad_include_file,
< file_path.c_str(), act_pos);
< }
<
< // test, if this file is known through a #pragma once directive
< #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
< if (!ctx.has_pragma_once(native_path.native_file_string()))
< #endif
---
> if(ctx.get_hooks().found_include_directive(f, include_next))
1225,1251d1206
< // the new include file determines the actual current directory
< ctx.set_current_directory(native_path.native_file_string().c_str());
<
< // preprocess the opened file
< boost::shared_ptr<base_iteration_context_type> new_iter_ctx (
< new iteration_context_type(native_path.native_file_string().c_str(),
< act_pos,
boost::wave::enable_prefer_pp_numbers(ctx.get_language())));
<
< // call the include policy trace function
< ctx.get_hooks().opened_include_file(dir_path, file_path,
< ctx.get_iteration_depth(), is_system);
<
< // store current file position
< iter_ctx->filename = act_pos.get_file();
< iter_ctx->line = act_pos.get_line();
< iter_ctx->if_block_depth = ctx.get_if_block_depth();
<
< // push the old iteration context onto the stack and continue with the new
< ctx.push_iteration_context(act_pos, iter_ctx);
< iter_ctx = new_iter_ctx;
< seen_newline = true; // fake a newline to trigger pp_directive
< must_emit_line_directive = true;
<
< act_pos.set_file(iter_ctx->filename); // initialize file position
< #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
< ctx.set_current_filename(iter_ctx->real_filename.c_str());
< #endif
1253,1254c1208,1256
< act_pos.set_line(iter_ctx->line);
< act_pos.set_column(0);
---
> file_path = util::impl::unescape_lit(file_path);
> if (!ctx.find_include_file (file_path, dir_path, is_system, current_name)) {
> BOOST_WAVE_THROW(preprocess_exception, bad_include_file,
> file_path.c_str(), act_pos);
> }
>
> fs::path native_path(file_path, fs::native);
>
> if (!fs::exists(native_path)) {
> BOOST_WAVE_THROW(preprocess_exception, bad_include_file,
> file_path.c_str(), act_pos);
> }
>
> // test, if this file is known through a #pragma once directive
> #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
> if (!ctx.has_pragma_once(native_path.native_file_string()))
> #endif
> {
> // the new include file determines the actual current directory
> ctx.set_current_directory(native_path.native_file_string().c_str());
>
> // preprocess the opened file
> boost::shared_ptr<base_iteration_context_type> new_iter_ctx (
> new iteration_context_type(native_path.native_file_string().c_str(),
> act_pos, boost::wave::enable_prefer_pp_numbers(ctx.get_language())));
>
> // call the include policy trace function
> ctx.get_hooks().opened_include_file(dir_path, file_path,
> ctx.get_iteration_depth(), is_system);
>
> // store current file position
> iter_ctx->filename = act_pos.get_file();
> iter_ctx->line = act_pos.get_line();
> iter_ctx->if_block_depth = ctx.get_if_block_depth();
>
> // push the old iteration context onto the stack and continue with the new
> ctx.push_iteration_context(act_pos, iter_ctx);
> iter_ctx = new_iter_ctx;
> seen_newline = true; // fake a newline to trigger pp_directive
> must_emit_line_directive = true;
>
> act_pos.set_file(iter_ctx->filename); // initialize file position
> #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
> ctx.set_current_filename(iter_ctx->real_filename.c_str());
> #endif
>
> act_pos.set_line(iter_ctx->line);
> act_pos.set_column(0);
> }
--
Felipe Magno de Almeida