|
Boost : |
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk