|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56192 - in branches/release: boost/wave boost/wave/cpplexer boost/wave/cpplexer/re2clex boost/wave/grammars boost/wave/util libs/wave libs/wave/doc libs/wave/samples/advanced_hooks libs/wave/samples/advanced_hooks/build libs/wave/samples/cpp_tokens libs/wave/samples/cpp_tokens/build libs/wave/samples/cpp_tokens/slex libs/wave/samples/hannibal libs/wave/samples/hannibal/build libs/wave/samples/lexed_tokens/build libs/wave/samples/list_includes libs/wave/samples/list_includes/build libs/wave/samples/list_includes/lexertl libs/wave/samples/quick_start/build libs/wave/samples/real_positions libs/wave/samples/real_positions/build libs/wave/samples/token_statistics libs/wave/samples/token_statistics/build libs/wave/samples/token_statistics/xlex libs/wave/samples/waveidl/build libs/wave/samples/waveidl/idllexer libs/wave/src libs/wave/src/cpplexer/re2clex libs/wave/test libs/wave/test/build libs/wave/test/testwave tools/wave
From: hartmut.kaiser_at_[hidden]
Date: 2009-09-14 14:16:05
Author: hkaiser
Date: 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
New Revision: 56192
URL: http://svn.boost.org/trac/boost/changeset/56192
Log:
Merging Wave from trunk
Added:
branches/release/boost/wave/util/filesystem_compatibility.hpp
- copied unchanged from r56191, /trunk/boost/wave/util/filesystem_compatibility.hpp
branches/release/libs/wave/CMakeLists.txt
- copied unchanged from r56191, /trunk/libs/wave/CMakeLists.txt
branches/release/libs/wave/module.cmake
- copied unchanged from r56191, /trunk/libs/wave/module.cmake
branches/release/libs/wave/src/CMakeLists.txt
- copied unchanged from r56191, /trunk/libs/wave/src/CMakeLists.txt
branches/release/libs/wave/test/CMakeLists.txt
- copied unchanged from r56191, /trunk/libs/wave/test/CMakeLists.txt
branches/release/tools/wave/CMakeLists.txt
- copied unchanged from r56191, /trunk/tools/wave/CMakeLists.txt
Properties modified:
branches/release/boost/wave/ (props changed)
branches/release/libs/wave/ (props changed)
branches/release/tools/wave/ (props changed)
Text files modified:
branches/release/boost/wave/cpp_context.hpp | 37 +-
branches/release/boost/wave/cpp_iteration_context.hpp | 13
branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp | 6
branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp | 13
branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp | 26
branches/release/boost/wave/cpplexer/cpp_lex_token.hpp | 63 +++-
branches/release/boost/wave/cpplexer/detect_include_guards.hpp | 12
branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp | 105 ++++---
branches/release/boost/wave/cpplexer/re2clex/scanner.hpp | 2
branches/release/boost/wave/cpplexer/token_cache.hpp | 2
branches/release/boost/wave/grammars/cpp_expression_grammar.hpp | 6
branches/release/boost/wave/grammars/cpp_expression_grammar_gen.hpp | 2
branches/release/boost/wave/grammars/cpp_grammar_gen.hpp | 2
branches/release/boost/wave/token_ids.hpp | 6
branches/release/boost/wave/util/cpp_ifblock.hpp | 6
branches/release/boost/wave/util/cpp_include_paths.hpp | 6
branches/release/boost/wave/util/cpp_iterator.hpp | 214 ++++++++--------
branches/release/boost/wave/util/cpp_macromap.hpp | 70 ++--
branches/release/boost/wave/util/cpp_macromap_utils.hpp | 40 +-
branches/release/boost/wave/util/functor_input.hpp | 6
branches/release/boost/wave/util/macro_definition.hpp | 8
branches/release/boost/wave/util/symbol_table.hpp | 6
branches/release/boost/wave/util/transform_iterator.hpp | 84 ------
branches/release/boost/wave/util/unput_queue_iterator.hpp | 166 +-----------
branches/release/boost/wave/wave_config.hpp | 4
branches/release/boost/wave/wave_version.hpp | 6
branches/release/boost/wave/whitespace_handling.hpp | 10
branches/release/libs/wave/ChangeLog | 16 +
branches/release/libs/wave/doc/class_reference_ctxpolicy.html | 5
branches/release/libs/wave/samples/advanced_hooks/advanced_hooks.cpp | 10
branches/release/libs/wave/samples/advanced_hooks/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/cpp_tokens/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp | 4
branches/release/libs/wave/samples/cpp_tokens/instantiate_slex_lexer.cpp | 2
branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp | 2
branches/release/libs/wave/samples/cpp_tokens/slex_interface.hpp | 4
branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp | 22
branches/release/libs/wave/samples/cpp_tokens/slex_token.hpp | 22 +
branches/release/libs/wave/samples/hannibal/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/hannibal/hannibal.cpp | 9
branches/release/libs/wave/samples/lexed_tokens/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/list_includes/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/list_includes/lexertl/lexertl_lexer.hpp | 76 ++--
branches/release/libs/wave/samples/list_includes/lexertl/wave_lexertl_config.hpp | 2
branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp | 22
branches/release/libs/wave/samples/quick_start/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/real_positions/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/real_positions/correct_token_positions.hpp | 16
branches/release/libs/wave/samples/real_positions/instantiate_re2c_lexer.cpp | 6
branches/release/libs/wave/samples/real_positions/real_position_token.hpp | 56 +++-
branches/release/libs/wave/samples/real_positions/real_positions.cpp | 30 +-
branches/release/libs/wave/samples/token_statistics/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp | 29 +-
branches/release/libs/wave/samples/token_statistics/xlex/xpressive_lexer.hpp | 6
branches/release/libs/wave/samples/token_statistics/xlex_interface.hpp | 4
branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp | 141 +++++++---
branches/release/libs/wave/samples/waveidl/build/Jamfile.v2 | 2
branches/release/libs/wave/samples/waveidl/idllexer/idl.re | 2
branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_interface.hpp | 4
branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp | 126 ++++++---
branches/release/libs/wave/samples/waveidl/idllexer/idl_re.cpp | 466 +++++++++++++++++-----------------
branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp | 24
branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.cpp | 20
branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc | 524 ++++++++++++++++++++--------------------
branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc | 524 ++++++++++++++++++++--------------------
branches/release/libs/wave/test/build/Jamfile.v2 | 1
branches/release/libs/wave/test/testwave/testwave.cpp | 12
branches/release/libs/wave/test/testwave/testwave_app.cpp | 22
branches/release/tools/wave/cpp.cpp | 81 ++++-
branches/release/tools/wave/cpp_version.hpp | 8
branches/release/tools/wave/trace_macro_expansion.hpp | 128 ++++++---
71 files changed, 1719 insertions(+), 1646 deletions(-)
Modified: branches/release/boost/wave/cpp_context.hpp
==============================================================================
--- branches/release/boost/wave/cpp_context.hpp (original)
+++ branches/release/boost/wave/cpp_context.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -117,7 +117,7 @@
token_sequence_type;
// type of the policies
typedef HooksT hook_policy_type;
-
+
private:
// stack of shared_ptr's to the pending iteration contexts
typedef boost::shared_ptr<base_iteration_context<context, lexer_type> >
@@ -127,7 +127,7 @@
typedef typename iteration_context_stack_type::size_type iter_size_type;
context *this_() { return this; } // avoid warning in constructor
-
+
public:
context(target_iterator_type const &first_, target_iterator_type const &last_,
char const *fname = "<Unknown>", HooksT const &hooks_ = HooksT())
@@ -153,11 +153,11 @@
{
macros.init_predefined_macros(fname);
}
-
+
// default copy constructor
// default assignment operator
// default destructor
-
+
// iterator interface
iterator_type begin()
{
@@ -246,7 +246,7 @@
typedef boost::wave::util::macromap<context> macromap_type;
typedef typename macromap_type::name_iterator name_iterator;
typedef typename macromap_type::const_name_iterator const_name_iterator;
-
+
name_iterator macro_names_begin() { return macros.begin(); }
name_iterator macro_names_end() { return macros.end(); }
const_name_iterator macro_names_begin() const { return macros.begin(); }
@@ -261,7 +261,7 @@
return macros.add_macro(name, has_params, parameters, definition,
is_predefined);
}
-
+
// get the Wave version information
static std::string get_version()
{
@@ -269,7 +269,7 @@
return util::to_string<std::string>(p.get_fullversion());
}
static std::string get_version_string()
- {
+ {
boost::wave::util::predefined_macros p;
return util::to_string<std::string>(p.get_versionstr());
}
@@ -283,7 +283,7 @@
reset_macro_definitions();
}
boost::wave::language_support get_language() const { return language; }
-
+
// change and ask for maximal possible include nesting depth
void set_max_include_nesting_depth(iter_size_type new_depth)
{ iter_ctxs.set_max_include_nesting_depth(new_depth); }
@@ -292,6 +292,7 @@
// access the policies
hook_policy_type &get_hooks() { return hooks; }
+ hook_policy_type const &get_hooks() const { return hooks; }
// return type of actually used context type (might be the derived type)
actual_context_type& derived()
@@ -323,7 +324,7 @@
has_been_initialized = true; // execute once
}
}
-
+
template <typename IteratorT2>
bool is_defined_macro(IteratorT2 const &begin, IteratorT2 const &end) const
{ return macros.is_defined(begin, end); }
@@ -334,7 +335,7 @@
{ return includes.find_include_file(s, d, is_system, current_file); }
void set_current_directory(char const *path_)
{ includes.set_current_directory(path_); }
-
+
// conditional compilation contexts
bool get_if_block_status() const { return ifblocks.get_status(); }
bool get_if_block_some_part_status() const
@@ -357,7 +358,7 @@
{ iter_ctxs.push(*this, act_pos, iter_ctx); }
position_type &get_main_pos() { return macros.get_main_pos(); }
-
+
///////////////////////////////////////////////////////////////////////////////
//
// expand_tokensequence():
@@ -417,14 +418,14 @@
void save(Archive & ar, const unsigned int version) const
{
using namespace boost::serialization;
-
+
string_type cfg(BOOST_PP_STRINGIZE(BOOST_WAVE_CONFIG));
string_type kwd(BOOST_WAVE_PRAGMA_KEYWORD);
string_type strtype(BOOST_PP_STRINGIZE((BOOST_WAVE_STRINGTYPE)));
ar & make_nvp("config", cfg);
ar & make_nvp("pragma_keyword", kwd);
ar & make_nvp("string_type", strtype);
-
+
ar & make_nvp("language_options", language);
ar & make_nvp("macro_definitions", macros);
ar & make_nvp("include_settings", includes);
@@ -439,10 +440,10 @@
get_main_pos());
return;
}
-
+
// check compatibility of the stored information
string_type config, pragma_keyword, string_type_str;
-
+
// BOOST_PP_STRINGIZE(BOOST_WAVE_CONFIG)
ar & make_nvp("config", config);
if (config != BOOST_PP_STRINGIZE(BOOST_WAVE_CONFIG)) {
@@ -450,7 +451,7 @@
incompatible_config, "BOOST_WAVE_CONFIG", get_main_pos());
return;
}
-
+
// BOOST_WAVE_PRAGMA_KEYWORD
ar & make_nvp("pragma_keyword", pragma_keyword);
if (pragma_keyword != BOOST_WAVE_PRAGMA_KEYWORD) {
@@ -467,7 +468,7 @@
incompatible_config, "BOOST_WAVE_STRINGTYPE", get_main_pos());
return;
}
-
+
try {
// read in the useful bits
ar & make_nvp("language_options", language);
@@ -491,7 +492,7 @@
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
std::string current_filename; // real name of current preprocessed file
#endif
-
+
boost::wave::util::if_block_stack ifblocks; // conditional compilation contexts
boost::wave::util::include_paths includes; // lists of include directories to search
iteration_context_stack_type iter_ctxs; // iteration contexts
Modified: branches/release/boost/wave/cpp_iteration_context.hpp
==============================================================================
--- branches/release/boost/wave/cpp_iteration_context.hpp (original)
+++ branches/release/boost/wave/cpp_iteration_context.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -58,12 +58,11 @@
{
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;
-
+
// read in the file
std::ifstream instream(iter_ctx.filename.c_str());
if (!instream.is_open()) {
@@ -72,7 +71,7 @@
return;
}
instream.unsetf(std::ios::skipws);
-
+
iter_ctx.instring.assign(
std::istreambuf_iterator<char>(instream.rdbuf()),
std::istreambuf_iterator<char>());
@@ -87,7 +86,7 @@
std::string instring;
};
};
-
+
} // namespace iteration_context_policies
///////////////////////////////////////////////////////////////////////////////
@@ -132,9 +131,9 @@
{
typedef IteratorT iterator_type;
typedef typename IteratorT::token_type::position_type position_type;
-
+
typedef iteration_context<ContextT, IteratorT, InputPolicyT> self_type;
-
+
iteration_context(ContextT& ctx, BOOST_WAVE_STRINGTYPE const &fname,
position_type const &act_pos,
boost::wave::language_support language_)
Modified: branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -45,15 +45,15 @@
struct lex_input_interface
{
typedef typename TokenT::position_type position_type;
-
+
lex_input_interface() {}
virtual ~lex_input_interface() {}
-
+
virtual TokenT& get(TokenT&) = 0;
virtual void set_position(position_type const &pos) = 0;
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
virtual bool has_include_guards(std::string& guard_name) const = 0;
-#endif
+#endif
};
///////////////////////////////////////////////////////////////////////////////
Modified: branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -48,14 +48,15 @@
///////////////////////////////////////////////////////////////////////////////
template <
typename IteratorT,
- typename PositionT = boost::wave::util::file_position_type
+ typename PositionT = boost::wave::util::file_position_type,
+ typename TokenT = lex_token<PositionT>
>
struct BOOST_WAVE_NEW_LEXER_DECL new_lexer_gen
{
// The NewLexer function allows the opaque generation of a new lexer object.
// It is coupled to the token type to allow to decouple the lexer/token
// configurations at compile time.
- static lex_input_interface<lex_token<PositionT> > *
+ static lex_input_interface<TokenT> *
new_lexer(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language);
};
@@ -75,10 +76,10 @@
: lex_input_interface<TokenT>
{
typedef typename lex_input_interface<TokenT>::position_type position_type;
-
+
lex_input_interface_generator() {}
~lex_input_interface_generator() {}
-
+
// The new_lexer function allows the opaque generation of a new lexer object.
// It is coupled to the token type to allow to distinguish different
// lexer/token configurations at compile time.
@@ -87,8 +88,8 @@
new_lexer(IteratorT const &first, IteratorT const &last,
position_type const &pos, boost::wave::language_support language)
{
- return new_lexer_gen<IteratorT, position_type>::new_lexer (first, last,
- pos, language);
+ return new_lexer_gen<IteratorT, position_type, TokenT>::new_lexer (
+ first, last, pos, language);
}
};
Modified: branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -67,37 +67,37 @@
{ return *this; } // nothing to do here
#endif
-// interface to the multi_pass_policies::split_functor_input policy
+// interface to the iterator_policies::split_functor_input policy
typedef TokenT result_type;
typedef lex_iterator_functor_shim unique;
typedef lex_input_interface<TokenT>* shared;
BOOST_WAVE_EOF_PREFIX result_type const eof;
-
+
template <typename MultiPass>
static result_type& get_next(MultiPass& mp, result_type& result)
{
- return mp.shared->ftor->get(result);
+ return mp.shared()->ftor->get(result);
}
-
+
// this will be called whenever the last reference to a multi_pass will
// be released
template <typename MultiPass>
static void destroy(MultiPass& mp)
{
- delete mp.shared->ftor;
+ delete mp.shared()->ftor;
}
template <typename MultiPass>
static void set_position(MultiPass& mp, position_type const &pos)
{
- mp.shared->ftor->set_position(pos);
+ mp.shared()->ftor->set_position(pos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
template <typename MultiPass>
static bool has_include_guards(MultiPass& mp, std::string& guard_name)
{
- return mp.shared->ftor->has_include_guards(guard_name);
+ return mp.shared()->ftor->has_include_guards(guard_name);
}
#endif
};
@@ -148,16 +148,16 @@
functor_data_type;
typedef typename FunctorData::result_type result_type;
- typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
- typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+ typedef boost::spirit::iterator_policies::split_functor_input input_policy;
+ typedef boost::spirit::iterator_policies::ref_counted ownership_policy;
#if defined(BOOST_WAVE_DEBUG)
- typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+ typedef boost::spirit::iterator_policies::buf_id_check check_policy;
#else
- typedef boost::spirit::multi_pass_policies::no_check check_policy;
+ typedef boost::spirit::iterator_policies::no_check check_policy;
#endif
- typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+ typedef boost::spirit::iterator_policies::split_std_deque storage_policy;
- typedef boost::spirit::multi_pass_policies::default_policy<
+ typedef boost::spirit::iterator_policies::default_policy<
ownership_policy, check_policy, input_policy, storage_policy>
policy_type;
typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
Modified: branches/release/boost/wave/cpplexer/cpp_lex_token.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_token.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_token.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -43,11 +43,17 @@
public:
typedef StringTypeT string_type;
typedef PositionT position_type;
-
+
+ // default constructed tokens correspond to EOI tokens
token_data()
: id(T_EOI), refcnt(1)
{}
-
+
+ // construct an invalid token
+ explicit token_data(int)
+ : id(T_UNKNOWN), refcnt(1)
+ {}
+
token_data(token_id id_, string_type const &value_, position_type const &pos_)
: id(id_), value(value_), pos(pos_), refcnt(1)
{}
@@ -55,14 +61,14 @@
token_data(token_data const& rhs)
: id(rhs.id), value(rhs.value), pos(rhs.pos), refcnt(1)
{}
-
+
~token_data()
{}
-
+
std::size_t addref() { return ++refcnt; }
std::size_t release() { return --refcnt; }
std::size_t get_refcnt() const { return refcnt; }
-
+
// accessors
operator token_id() const { return id; }
string_type const &get_value() const { return value; }
@@ -78,7 +84,7 @@
// positions
return (lhs.id == rhs.id && lhs.value == rhs.value) ? true : false;
}
-
+
void init(token_id id_, string_type const &value_, position_type const &pos_)
{
BOOST_ASSERT(refcnt == 1);
@@ -86,7 +92,7 @@
value = value_;
pos = pos_;
}
-
+
void init(token_data const& rhs)
{
BOOST_ASSERT(refcnt == 1);
@@ -94,10 +100,10 @@
value = rhs.value;
pos = rhs.pos;
}
-
+
static void *operator new(std::size_t size);
static void operator delete(void *p, std::size_t size);
-
+
#if defined(BOOST_SPIRIT_DEBUG)
// debug support
void print (std::ostream &stream) const
@@ -146,7 +152,7 @@
typedef boost::singleton_pool<
token_data_tag, sizeof(token_data<StringTypeT, PositionT>)
> pool_type;
-
+
void *ret = pool_type::malloc();
if (0 == ret)
boost::throw_exception(std::bad_alloc());
@@ -190,10 +196,16 @@
typedef impl::token_data<string_type, position_type> data_type;
public:
+ // default constructed tokens correspond to EOI tokens
lex_token()
: data(0)
{}
-
+
+ // construct an invalid token
+ explicit lex_token(int)
+ : data(new data_type(0))
+ {}
+
lex_token(lex_token const& rhs)
: data(rhs.data)
{
@@ -211,7 +223,7 @@
delete data;
data = 0;
}
-
+
lex_token& operator=(lex_token const& rhs)
{
if (&rhs != this) {
@@ -224,13 +236,14 @@
}
return *this;
}
-
+
// accessors
operator token_id() const { return 0 != data ? token_id(*data) : T_EOI; }
string_type const &get_value() const { return data->get_value(); }
position_type const &get_position() const { return data->get_position(); }
bool is_eoi() const { return 0 == data || token_id(*data) == T_EOI; }
-
+ bool is_valid() const { return 0 != data && token_id(*data) != T_UNKNOWN; }
+
void set_token_id (token_id id_) { make_unique(); data->set_token_id(id_); }
void set_value (string_type const &value_) { make_unique(); data->set_value(value_); }
void set_position (position_type const &pos_) { make_unique(); data->set_position(pos_); }
@@ -243,8 +256,8 @@
return false;
return *(lhs.data) == *(rhs.data);
}
-
-// debug support
+
+// debug support
#if BOOST_WAVE_DUMP_PARSE_TREE != 0
// access functions for the tree_to_xml functionality
static int get_token_id(lex_token const &t)
@@ -252,7 +265,7 @@
static string_type get_token_value(lex_token const &t)
{ return t.get_value(); }
#endif
-
+
#if defined(BOOST_SPIRIT_DEBUG)
// debug support
void print (std::ostream &stream) const
@@ -276,17 +289,29 @@
{
if (1 == data->get_refcnt())
return;
-
+
data_type* newdata = new data_type(*data) ;
data->release(); // release this reference, can't get zero
data = newdata;
}
-
+
data_type* data;
};
///////////////////////////////////////////////////////////////////////////////
+// This overload is needed by the multi_pass/functor_input_policy to
+// validate a token instance. It has to be defined in the same namespace
+// as the token class itself to allow ADL to find it.
+///////////////////////////////////////////////////////////////////////////////
+template <typename Position>
+inline bool
+token_is_valid(lex_token<Position> const& t)
+{
+ return t.is_valid();
+}
+
+///////////////////////////////////////////////////////////////////////////////
#if defined(BOOST_SPIRIT_DEBUG)
template <typename PositionT>
inline std::ostream &
Modified: branches/release/boost/wave/cpplexer/detect_include_guards.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/detect_include_guards.hpp (original)
+++ branches/release/boost/wave/cpplexer/detect_include_guards.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -5,14 +5,14 @@
State machine detecting include guards in an included file.
This detects two forms of include guards:
-
+
#ifndef INCLUDE_GUARD_MACRO
#define INCLUDE_GUARD_MACRO
...
#endif
-
+
or
-
+
if !defined(INCLUDE_GUARD_MACRO)
#define INCLUDE_GUARD_MACRO
...
@@ -21,7 +21,7 @@
note, that the parenthesis are optional (i.e. !defined INCLUDE_GUARD_MACRO
will work as well). The code allows for any whitespace, newline and single
'#' tokens before the #if/#ifndef and after the final #endif.
-
+
Copyright (c) 2001-2009 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)
@@ -61,7 +61,7 @@
}
return false;
}
-
+
private:
typedef Token& state_type(Token& t);
state_type include_guards::* state;
@@ -70,7 +70,7 @@
bool current_state;
typename Token::string_type guard_name;
int if_depth;
-
+
state_type state_0, state_1, state_2, state_3, state_4, state_5;
state_type state_1a, state_1b, state_1c, state_1d, state_1e;
Modified: branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp (original)
+++ branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
Re2C based C++ lexer
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -59,18 +59,20 @@
//
///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT, typename PositionT = boost::wave::util::file_position_type>
+template <typename IteratorT,
+ typename PositionT = boost::wave::util::file_position_type,
+ typename TokenT = lex_token<PositionT> >
class lexer
{
public:
- typedef lex_token<PositionT> token_type;
+ typedef TokenT token_type;
typedef typename token_type::string_type string_type;
-
+
lexer(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language_);
~lexer();
- lex_token<PositionT>& get(lex_token<PositionT>&);
+ token_type& get(token_type&);
void set_position(PositionT const &pos)
{
// set position has to change the file name and line number only
@@ -85,13 +87,13 @@
return guards.detected(guard_name);
}
#endif
-
+
// error reporting from the re2c generated lexer
static int report_error(Scanner const* s, int code, char const *, ...);
private:
static char const *tok_names[];
-
+
Scanner scanner;
string_type filename;
string_type value;
@@ -100,7 +102,7 @@
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
include_guards<token_type> guards;
#endif
-
+
#if BOOST_WAVE_SUPPORT_THREADING == 0
static token_cache<string_type> const cache;
#else
@@ -110,12 +112,15 @@
///////////////////////////////////////////////////////////////////////////////
// initialize cpp lexer
-template <typename IteratorT, typename PositionT>
+template <typename IteratorT, typename PositionT, typename TokenT>
inline
-lexer<IteratorT, PositionT>::lexer(IteratorT const &first,
+lexer<IteratorT, PositionT, TokenT>::lexer(IteratorT const &first,
IteratorT const &last, PositionT const &pos,
boost::wave::language_support language_)
-: filename(pos.get_file()), at_eof(false), language(language_)
+ : filename(pos.get_file()), at_eof(false), language(language_)
+#if BOOST_WAVE_SUPPORT_THREADING != 0
+ , cache()
+#endif
{
using namespace std; // some systems have memset in std
memset(&scanner, '\0', sizeof(Scanner));
@@ -128,7 +133,7 @@
scanner.column = scanner.curr_column = pos.get_column();
scanner.error_proc = report_error;
scanner.file_name = filename.c_str();
-
+
#if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0
scanner.enable_ms_extensions = true;
#else
@@ -149,9 +154,9 @@
scanner.single_line_only = boost::wave::need_single_line(language_);
}
-template <typename IteratorT, typename PositionT>
+template <typename IteratorT, typename PositionT, typename TokenT>
inline
-lexer<IteratorT, PositionT>::~lexer()
+lexer<IteratorT, PositionT, TokenT>::~lexer()
{
using namespace std; // some systems have free in std
aq_terminate(scanner.eol_offsets);
@@ -160,16 +165,16 @@
///////////////////////////////////////////////////////////////////////////////
// get the next token from the input stream
-template <typename IteratorT, typename PositionT>
-inline lex_token<PositionT>&
-lexer<IteratorT, PositionT>::get(lex_token<PositionT>& result)
+template <typename IteratorT, typename PositionT, typename TokenT>
+inline TokenT&
+lexer<IteratorT, PositionT, TokenT>::get(TokenT& result)
{
if (at_eof)
- return result = lex_token<PositionT>(); // return T_EOI
+ return result = token_type(); // return T_EOI
unsigned int actline = scanner.line;
token_id id = token_id(scan(&scanner));
-
+
switch (static_cast<unsigned int>(id)) {
case T_IDENTIFIER:
// test identifier characters for validity (throws if invalid chars found)
@@ -178,7 +183,7 @@
if (!boost::wave::need_no_character_validation(language))
impl::validate_identifier_name(value, actline, scanner.column, filename);
break;
-
+
case T_STRINGLIT:
case T_CHARLIT:
// test literal characters for validity (throws if invalid chars found)
@@ -232,14 +237,14 @@
value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
break;
-
+
case T_EOF:
// T_EOF is returned as a valid token, the next call will return T_EOI,
// i.e. the actual end of input
at_eof = true;
value.clear();
break;
-
+
case T_OR_TRIGRAPH:
case T_XOR_TRIGRAPH:
case T_LEFTBRACE_TRIGRAPH:
@@ -256,7 +261,7 @@
scanner.cur-scanner.tok);
}
break;
-
+
case T_ANY_TRIGRAPH:
if (boost::wave::need_convert_trigraphs(language)) {
value = impl::convert_trigraph(
@@ -267,7 +272,7 @@
scanner.cur-scanner.tok);
}
break;
-
+
default:
if (CATEGORY_FROM_TOKEN(id) != EXTCATEGORY_FROM_TOKEN(id) ||
IS_CATEGORY(id, UnknownTokenType))
@@ -280,7 +285,7 @@
}
break;
}
-
+
// std::cerr << boost::wave::get_token_name(id) << ": " << value << std::endl;
// the re2c lexer reports the new line number for newline tokens
@@ -293,22 +298,22 @@
#endif
}
-template <typename IteratorT, typename PositionT>
+template <typename IteratorT, typename PositionT, typename TokenT>
inline int
-lexer<IteratorT, PositionT>::report_error(Scanner const *s, int errcode,
+lexer<IteratorT, PositionT, TokenT>::report_error(Scanner const *s, int errcode,
char const *msg, ...)
{
BOOST_ASSERT(0 != s);
BOOST_ASSERT(0 != msg);
using namespace std; // some system have vsprintf in namespace std
-
+
char buffer[200]; // should be large enough
va_list params;
va_start(params, msg);
vsprintf(buffer, msg, params);
va_end(params);
-
+
BOOST_WAVE_LEXER_THROW_VAR(lexing_exception, errcode, buffer, s->line,
s->column, s->file_name);
// BOOST_UNREACHABLE_RETURN(0);
@@ -320,42 +325,42 @@
// lex_functor
//
///////////////////////////////////////////////////////////////////////////////
-
-template <typename IteratorT, typename PositionT = boost::wave::util::file_position_type>
+
+template <typename IteratorT,
+ typename PositionT = boost::wave::util::file_position_type,
+ typename TokenT = typename lexer<IteratorT, PositionT>::token_type>
class lex_functor
-: public lex_input_interface_generator<
- typename lexer<IteratorT, PositionT>::token_type
- >
-{
+: public lex_input_interface_generator<TokenT>
+{
public:
- typedef typename lexer<IteratorT, PositionT>::token_type token_type;
-
+ typedef TokenT token_type;
+
lex_functor(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language)
: re2c_lexer(first, last, pos, language)
{}
virtual ~lex_functor() {}
-
+
// get the next token from the input stream
token_type& get(token_type& result) { return re2c_lexer.get(result); }
void set_position(PositionT const &pos) { re2c_lexer.set_position(pos); }
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
bool has_include_guards(std::string& guard_name) const
{ return re2c_lexer.has_include_guards(guard_name); }
-#endif
+#endif
private:
- lexer<IteratorT, PositionT> re2c_lexer;
+ lexer<IteratorT, PositionT, TokenT> re2c_lexer;
};
#if BOOST_WAVE_SUPPORT_THREADING == 0
///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT, typename PositionT>
-token_cache<typename lexer<IteratorT, PositionT>::string_type> const
- lexer<IteratorT, PositionT>::cache =
- token_cache<typename lexer<IteratorT, PositionT>::string_type>();
+template <typename IteratorT, typename PositionT, typename TokenT>
+token_cache<typename lexer<IteratorT, PositionT, TokenT>::string_type> const
+ lexer<IteratorT, PositionT, TokenT>::cache =
+ token_cache<typename lexer<IteratorT, PositionT, TokenT>::string_type>();
#endif
-
+
} // namespace re2clex
///////////////////////////////////////////////////////////////////////////////
@@ -391,15 +396,15 @@
//
///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT, typename PositionT>
+template <typename IteratorT, typename PositionT, typename TokenT>
BOOST_WAVE_RE2C_NEW_LEXER_INLINE
-lex_input_interface<lex_token<PositionT> > *
-new_lexer_gen<IteratorT, PositionT>::new_lexer(IteratorT const &first,
+lex_input_interface<TokenT> *
+new_lexer_gen<IteratorT, PositionT, TokenT>::new_lexer(IteratorT const &first,
IteratorT const &last, PositionT const &pos,
boost::wave::language_support language)
{
using re2clex::lex_functor;
- return new lex_functor<IteratorT, PositionT>(first, last, pos, language);
+ return new lex_functor<IteratorT, PositionT, TokenT>(first, last, pos, language);
}
#undef BOOST_WAVE_RE2C_NEW_LEXER_INLINE
@@ -408,7 +413,7 @@
} // namespace cpplexer
} // namespace wave
} // namespace boost
-
+
// the suffix header occurs after all of the code
#ifdef BOOST_HAS_ABI_HEADERS
#include BOOST_ABI_SUFFIX
Modified: branches/release/boost/wave/cpplexer/re2clex/scanner.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/re2clex/scanner.hpp (original)
+++ branches/release/boost/wave/cpplexer/re2clex/scanner.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
http://www.boost.org/
-
+
Copyright (c) 2001 Daniel C. Nuffer.
Copyright (c) 2001-2009 Hartmut Kaiser.
Distributed under the Boost Software License, Version 1.0. (See accompanying
Modified: branches/release/boost/wave/cpplexer/token_cache.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/token_cache.hpp (original)
+++ branches/release/boost/wave/cpplexer/token_cache.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -54,7 +54,7 @@
{
return cache[BASEID_FROM_TOKEN(id) - T_FIRST_TOKEN];
}
-
+
private:
std::vector<StringT> cache;
};
Modified: branches/release/boost/wave/grammars/cpp_expression_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_expression_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_expression_grammar.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -798,19 +798,19 @@
// something. If the remainder consists out of whitespace only, the
// expression is still valid.
iterator_type next = hit.stop;
-
+
while (next != last) {
switch (static_cast<unsigned int>(token_id(*next))) {
case T_SPACE:
case T_SPACE2:
case T_CCOMMENT:
break; // ok continue
-
+
case T_NEWLINE:
case T_EOF:
case T_CPPCOMMENT: // contains newline
return as_bool(result); // expression is valid
-
+
default:
// expression is illformed
if (if_block_status) {
Modified: branches/release/boost/wave/grammars/cpp_expression_grammar_gen.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_expression_grammar_gen.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_expression_grammar_gen.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -50,7 +50,7 @@
typedef TokenT token_type;
typedef std::list<token_type, boost::fast_pool_allocator<token_type> >
token_sequence_type;
-
+
static bool evaluate(
typename token_sequence_type::const_iterator const &first,
typename token_sequence_type::const_iterator const &last,
Modified: branches/release/boost/wave/grammars/cpp_grammar_gen.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_grammar_gen.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_grammar_gen.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -85,7 +85,7 @@
// boost::spirit::nil_t,
// boost::pool_allocator<boost::spirit::nil_t>
> node_factory_type;
-
+
// parse the cpp_grammar and return the resulting parse tree
static boost::spirit::classic::tree_parse_info<iterator_type, node_factory_type>
parse_cpp_grammar (iterator_type const &first, iterator_type const &last,
Modified: branches/release/boost/wave/token_ids.hpp
==============================================================================
--- branches/release/boost/wave/token_ids.hpp (original)
+++ branches/release/boost/wave/token_ids.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
The definition of a default set of token identifiers and related
functions.
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -36,7 +36,7 @@
namespace wave {
///////////////////////////////////////////////////////////////////////////////
-// assemble tokenid's
+// assemble tokenids
#define TOKEN_FROM_ID(id, cat) ((id) | (cat))
#define ID_FROM_TOKEN(tok) ((tok) & ~TokenTypeMask)
#define BASEID_FROM_TOKEN(tok) ((tok) & ~ExtTokenTypeMask)
@@ -288,7 +288,7 @@
T_LAST_TOKEN_ID,
T_LAST_TOKEN = ID_FROM_TOKEN(T_LAST_TOKEN_ID),
-
+
// pseudo tokens to help streamlining macro replacement, these should not
// returned from the lexer nor should these be returned from the pp-iterator
T_NONREPLACABLE_IDENTIFIER = TOKEN_FROM_ID(T_LAST_TOKEN+1, IdentifierTokenType),
Modified: branches/release/boost/wave/util/cpp_ifblock.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_ifblock.hpp (original)
+++ branches/release/boost/wave/util/cpp_ifblock.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -68,7 +68,7 @@
{
public:
typedef std::stack<if_block>::size_type size_type;
-
+
void enter_if_block(bool new_status)
{
// If enclosing block is false, then this block is also false
@@ -76,7 +76,7 @@
this->push (value_type (new_status && enclosing_status, enclosing_status));
}
bool enter_elif_block(bool new_status)
- {
+ {
if (!is_inside_ifpart())
return false; // #elif without matching #if
@@ -136,7 +136,7 @@
}
size_type get_if_block_depth() const { return this->size(); }
-
+
protected:
bool is_inside_ifpart() const
{
Modified: branches/release/boost/wave/util/cpp_include_paths.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_include_paths.hpp (original)
+++ branches/release/boost/wave/util/cpp_include_paths.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -140,7 +140,7 @@
typedef std::list<std::pair<boost::filesystem::path, std::string> >
include_list_type;
typedef include_list_type::value_type include_value_type;
-
+
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
typedef bidirectional_map<std::string, std::string>::type
pragma_once_set_type;
@@ -350,7 +350,7 @@
bool is_system, char const *current_file) const
{
namespace fs = boost::filesystem;
-
+
// if not system include (<...>), then search current directory first
if (!is_system) {
if (!was_sys_include_path) { // set_sys_include_delimiter() not called
@@ -369,7 +369,7 @@
dirpath = create_path(current_rel_dir.string());
dirpath /= create_path(s);
}
-
+
dir = dirpath.string();
s = normalize(currpath).string(); // found in local directory
return true;
Modified: branches/release/boost/wave/util/cpp_iterator.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_iterator.hpp (original)
+++ branches/release/boost/wave/util/cpp_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
Definition of the preprocessor iterator
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -79,7 +79,7 @@
"bad parse tree (unexpected)", act_pos);
return false;
}
-
+
typename ParseNodeT::children_t const &children = name_node->children;
if (0 == children.size() ||
@@ -119,19 +119,19 @@
// copy all parameters to the supplied container
typename ContainerT::iterator last_nonwhite = macrodefinition.end();
const_tree_iterator end = nodes.second;
-
+
for (const_tree_iterator cit = nodes.first; cit != end; ++cit) {
if ((*cit).value.begin() != (*cit).value.end()) {
typename ContainerT::iterator inserted = macrodefinition.insert(
macrodefinition.end(), *(*cit).value.begin());
-
+
if (!IS_CATEGORY(macrodefinition.back(), WhiteSpaceTokenType) &&
T_NEWLINE != token_id(macrodefinition.back()) &&
T_EOF != token_id(macrodefinition.back()))
{
last_nonwhite = inserted;
}
-
+
if (update_position) {
(*inserted).set_position(act_pos);
act_pos.set_column(
@@ -139,7 +139,7 @@
}
}
}
-
+
// trim trailing whitespace (leading whitespace is trimmed by the grammar)
if (last_nonwhite != macrodefinition.end()) {
if (update_position) {
@@ -168,14 +168,14 @@
using namespace boost::wave;
using namespace std; // isspace is in std namespace for some systems
-
+
// skip leading whitespace
std::string::iterator begin = macrostring.begin();
std::string::iterator end = macrostring.end();
while(begin != end && isspace(*begin))
++begin;
-
+
// parse the macro definition
position_type act_pos("<command line>");
boost::spirit::classic::tree_parse_info<lexer_type> hit =
@@ -209,7 +209,7 @@
{
macrodefinition.push_back(token_type(T_INTLIT, "1", act_pos));
}
-
+
// add the new macro to the macromap
return ctx.add_macro_definition(macroname, has_parameters, macroparameters,
macrodefinition, is_predefined);
@@ -234,7 +234,7 @@
class pp_iterator_functor {
public:
-// interface to the boost::spirit::classic::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::iterator_policies::functor_input policy
typedef typename ContextT::token_type result_type;
// eof token
@@ -286,7 +286,7 @@
ctx_.set_current_filename(pos_.get_file().c_str());
#endif
}
-
+
// get the next preprocessed token
result_type const &operator()();
@@ -297,7 +297,7 @@
friend class pp_iterator<ContextT>;
bool on_include_helper(char const *t, char const *s, bool is_system,
bool include_next);
-
+
protected:
result_type const &get_next_token();
result_type const &pp_token();
@@ -323,7 +323,7 @@
void on_define(parse_node_type const &node);
void on_undefine(lexer_type const &it);
-
+
void on_ifdef(result_type const& found_directive, lexer_type const &it);
// typename parse_tree_type::const_iterator const &end);
void on_ifndef(result_type const& found_directive, lexer_type const& it);
@@ -331,7 +331,7 @@
void on_else();
void on_endif();
void on_illformed(typename result_type::string_type s);
-
+
void on_line(typename parse_tree_type::const_iterator const &begin,
typename parse_tree_type::const_iterator const &end);
void on_if(result_type const& found_directive,
@@ -359,16 +359,16 @@
private:
ContextT &ctx; // context, this iterator is associated with
boost::shared_ptr<base_iteration_context_type> iter_ctx;
-
+
bool seen_newline; // needed for recognizing begin of line
bool skipped_newline; // a newline has been skipped since last one
bool must_emit_line_directive; // must emit a line directive
result_type act_token; // current token
typename result_type::position_type &act_pos; // current fileposition (references the macromap)
-
+
token_sequence_type unput_queue; // tokens to be preprocessed again
token_sequence_type pending_queue; // tokens already preprocessed
-
+
// detect whether to insert additional whitespace in between two adjacent
// tokens, which otherwise would form a different token type, if
// re-tokenized
@@ -406,7 +406,7 @@
// of the included file
BOOST_WAVE_STRINGTYPE oldfile = iter_ctx->real_filename;
position_type old_pos (act_pos);
-
+
// if this file has include guards handle it as if it had a #pragma once
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
if (need_include_guard_detection(ctx.get_language())) {
@@ -424,7 +424,7 @@
act_pos.set_file(iter_ctx->filename);
act_pos.set_line(iter_ctx->line);
act_pos.set_column(0);
-
+
// restore the actual current file and directory
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
ctx.set_current_filename(iter_ctx->real_filename.c_str());
@@ -483,11 +483,11 @@
// make sure the cwd has been initialized
ctx.init_context();
-
+
// loop over skip able whitespace until something significant is found
bool was_seen_newline = seen_newline;
token_id id = T_UNKNOWN;
-
+
try { // catch lexer exceptions
do {
// get_next_token assigns result to act_token member
@@ -503,7 +503,7 @@
act_token.set_token_id(id = T_NEWLINE);
act_token.set_value("\n");
}
-
+
} while (ctx.get_hooks().may_skip_whitespace(ctx.derived(), act_token, skipped_newline));
}
catch (boost::wave::cpplexer::lexing_exception const& e) {
@@ -511,7 +511,7 @@
ctx.get_hooks().throw_exception(ctx.derived(), e);
return act_token;
}
-
+
// if there were skipped any newlines, we must emit a #line directive
if ((must_emit_line_directive || (was_seen_newline && skipped_newline)) &&
impl::consider_emitting_line_directive(ctx, id))
@@ -524,7 +524,7 @@
id = token_id(act_token);
}
}
-
+
// cleanup of certain tokens required
seen_newline = false;
switch (static_cast<unsigned int>(id)) {
@@ -537,7 +537,7 @@
++iter_ctx->emitted_lines;
seen_newline = true;
break;
-
+
case T_NEWLINE:
case T_CPPCOMMENT:
seen_newline = true;
@@ -548,11 +548,11 @@
iter_ctx->emitted_lines +=
context_policies::util::ccomment_count_newlines(act_token);
break;
-
+
case T_PP_NUMBER: // re-tokenize the pp-number
{
token_sequence_type rescanned;
-
+
std::string pp_number(
util::to_string<std::string>(act_token.get_value()));
@@ -560,10 +560,10 @@
pp_number.end(), act_token.get_position(),
ctx.get_language());
lexer_type end = lexer_type();
-
+
for (/**/; it != end && T_EOF != token_id(*it); ++it)
rescanned.push_back(*it);
-
+
pending_queue.splice(pending_queue.begin(), rescanned);
act_token = pending_queue.front();
id = token_id(act_token);
@@ -600,16 +600,16 @@
pp_iterator_functor<ContextT>::get_next_token()
{
using namespace boost::wave;
-
+
// if there is something in the unput_queue, then return the next token from
// there (all tokens in the queue are preprocessed already)
if (!pending_queue.empty() || !unput_queue.empty())
return pp_token(); // return next token
-
+
// test for EOF, if there is a pending input context, pop it back and continue
// parsing with it
bool returned_from_include_file = returned_from_include();
-
+
// try to generate the next token
if (iter_ctx->first != iter_ctx->last) {
do {
@@ -622,17 +622,17 @@
return act_token = pending_queue.front();
}
-
+
// adjust the current position (line and column)
bool was_seen_newline = seen_newline || returned_from_include_file;
- // fetch the current token
+ // fetch the current token
act_token = *iter_ctx->first;
act_pos = act_token.get_position();
-
+
// act accordingly on the current token
token_id id = token_id(act_token);
-
+
if (T_EOF == id) {
// returned from an include file, continue with the next token
whitespace.shift_tokens(T_EOF);
@@ -653,7 +653,7 @@
// (the C++ comment token includes the trailing newline)
seen_newline = true;
++iter_ctx->first;
-
+
if (!ctx.get_if_block_status()) {
// skip this token because of the disabled #if block
whitespace.shift_tokens(id); // whitespace controller
@@ -699,7 +699,7 @@
#endif
++iter_ctx->first;
}
-
+
} while ((iter_ctx->first != iter_ctx->last) ||
(returned_from_include_file = returned_from_include()));
@@ -714,7 +714,7 @@
else {
act_token = eof; // this is the last token
}
-
+
// whitespace.shift_tokens(T_EOF); // whitespace controller
return act_token; // return eof token
}
@@ -729,7 +729,7 @@
pp_iterator_functor<ContextT>::emit_line_directive()
{
using namespace boost::wave;
-
+
typename ContextT::position_type pos = act_token.get_position();
if (must_emit_line_directive ||
@@ -750,7 +750,7 @@
// account for the newline emitted here
act_pos.set_line(act_pos.get_line()-1);
iter_ctx->emitted_lines = act_pos.get_line();
-
+
// the #line directive has to be pushed back into the pending queue in
// reverse order
@@ -758,7 +758,7 @@
std::string file("\"");
boost::filesystem::path filename(
wave::util::create_path(act_pos.get_file().c_str()));
-
+
using wave::util::impl::escape_lit;
file += escape_lit(wave::util::native_file_string(filename)) + "\"";
@@ -775,7 +775,7 @@
unsigned int column = 7 + (unsigned int)strlen(buffer) + filenamelen;
pos.set_line(pos.get_line() - 1); // adjust line number
-
+
pos.set_column(column);
pending_queue.push_front(result_type(T_GENERATEDNEWLINE, "\n", pos));
pos.set_column(column -= filenamelen); // account for filename
@@ -786,13 +786,13 @@
pending_queue.push_front(result_type(T_INTLIT, buffer, pos));
pos.set_column(--column); // account for ' '
pending_queue.push_front(result_type(T_SPACE, " ", pos));
-
+
// return the #line token itself
// whitespace.shift_tokens(T_PP_LINE);
pos.set_column(1);
act_token = result_type(T_PP_LINE, "#line", pos);
}
-
+
must_emit_line_directive = false; // we are now in sync
return true;
}
@@ -840,7 +840,7 @@
++iter_ctx->first;
}
id = token_id(act_token);
-
+
} while (T_PLACEHOLDER == id);
return act_token;
}
@@ -856,7 +856,7 @@
bool next_token_is_pp_directive(ContextT &ctx, IteratorT &it, IteratorT const &end)
{
using namespace boost::wave;
-
+
token_id id = T_UNKNOWN;
for (/**/; it != end; ++it) {
id = token_id(*it);
@@ -875,7 +875,7 @@
BOOST_ASSERT(it == end || id != T_UNKNOWN);
return it != end && IS_CATEGORY(id, PPTokenType);
}
-
+
// call 'found_directive' preprocessing hook
template <typename ContextT>
bool call_found_directive_hook(ContextT& ctx,
@@ -908,7 +908,7 @@
bool call_hook = true)
{
using namespace boost::wave;
-
+
// this token get's skipped
if (call_hook)
call_skipped_token_hook(ctx, *it);
@@ -940,10 +940,10 @@
bool skip_to_eol(ContextT &ctx, IteratorT &it, IteratorT const &end)
{
using namespace boost::wave;
-
+
for (/**/; it != end; ++it) {
token_id id = token_id(*it);
-
+
call_skipped_token_hook(ctx, *it);
if (T_CPPCOMMENT == id || T_NEWLINE == id ||
context_policies::util::ccomment_has_newline(*it))
@@ -954,7 +954,7 @@
}
return false;
}
-
+
}
///////////////////////////////////////////////////////////////////////////////
@@ -977,7 +977,7 @@
impl::skip_to_eol(ctx, it, iter_ctx->last);
string_type str(util::impl::as_string<string_type>(iter_ctx->first, it));
-
+
seen_newline = true;
iter_ctx->first = it;
on_illformed(str);
@@ -994,29 +994,29 @@
{
// enable error recovery (start over with the next line)
impl::skip_to_eol(ctx, it, iter_ctx->last);
-
+
string_type str(util::impl::as_string<string_type>(
iter_ctx->first, it));
seen_newline = true;
iter_ctx->first = it;
-
+
// report an invalid directive
on_illformed(str);
return false;
}
-
+
if (it == iter_ctx->last && !need_single_line(ctx.get_language()))
{
// The line doesn't end with an eol but eof token.
seen_newline = true; // allow to resume after warning
iter_ctx->first = it;
-
+
// Trigger a warning that the last line was not terminated with a
// newline.
BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
last_line_not_terminated, "", act_pos);
-
+
return false;
}
return true;
@@ -1034,7 +1034,7 @@
// The line doesn't end with an eol but eof token.
seen_newline = true; // allow to resume after warning
iter_ctx->first = it;
-
+
// Trigger a warning, that the last line was not terminated with a
// newline.
BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
@@ -1047,7 +1047,7 @@
iter_ctx->first = it;
return true;
}
-
+
///////////////////////////////////////////////////////////////////////////////
// handle_pp_directive: handle certain pp_directives
template <typename ContextT>
@@ -1131,7 +1131,7 @@
return true;
}
break;
-
+
case T_PP_HHEADER: // #include <...>
#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
case T_PP_HHEADER_NEXT:
@@ -1237,7 +1237,7 @@
pp_iterator_functor<ContextT>::pp_directive()
{
using namespace cpplexer;
-
+
// test, if the next non-whitespace token is a pp directive
lexer_type it = iter_ctx->first;
@@ -1255,7 +1255,7 @@
on_illformed((*it).get_value());
}
}
-
+
// this line does not contain a pp directive, so simply return
return false;
}
@@ -1271,7 +1271,7 @@
// false or if it was a #include directive we could handle directly
return true; // the pp directive has been handled/skipped
}
-
+
// found a pp directive, so try to identify it, start with the pp_token
bool found_eof = false;
result_type found_directive;
@@ -1290,7 +1290,7 @@
// found a valid pp directive, dispatch to the correct function to handle
// the found pp directive
bool result = dispatch_directive (hit, found_directive, found_eoltokens);
-
+
if (found_eof && !need_single_line(ctx.get_language())) {
// The line was terminated with an end of file token.
// So trigger a warning, that the last line was not terminated with a
@@ -1304,7 +1304,7 @@
// recognized invalid directive
impl::skip_to_eol(ctx, it, iter_ctx->last);
seen_newline = true;
-
+
string_type str(boost::wave::util::impl::as_string<string_type>(
iter_ctx->first, it));
iter_ctx->first = it;
@@ -1327,9 +1327,9 @@
token_sequence_type const& found_eoltokens)
{
using namespace cpplexer;
-
+
typedef typename parse_tree_type::const_iterator const_child_iterator_t;
-
+
// this iterator points to the root node of the parse tree
const_child_iterator_t begin = hit.trees.begin();
@@ -1406,7 +1406,7 @@
case T_PP_LINE: // #line
on_line(begin_child_it, end_child_it);
break;
-
+
case T_PP_ERROR: // #error
on_error(begin_child_it, end_child_it);
break;
@@ -1482,7 +1482,7 @@
on_include_helper(file_token.c_str(), file_path.c_str(), is_system,
include_next);
}
-
+
template <typename ContextT>
inline bool
pp_iterator_functor<ContextT>::on_include_helper (char const *f, char const *s,
@@ -1530,7 +1530,7 @@
// the new include file determines the actual current directory
ctx.set_current_directory(
wave::util::native_file_string(native_path).c_str());
-
+
// preprocess the opened file
boost::shared_ptr<base_iteration_context_type> new_iter_ctx (
new iteration_context_type(ctx,
@@ -1550,13 +1550,13 @@
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());
@@ -1582,7 +1582,7 @@
trim_whitespace(StringT const &s)
{
typedef typename StringT::size_type size_type;
-
+
size_type first = s.find_first_not_of(" \t\v\f");
if (StringT::npos == first)
return StringT();
@@ -1660,7 +1660,7 @@
using namespace cpplexer;
typedef typename std::vector<result_type>::iterator
parameter_iterator_t;
-
+
bool seen_ellipses = false;
parameter_iterator_t end = macroparameters.end();
for (parameter_iterator_t pit = macroparameters.begin();
@@ -1684,7 +1684,7 @@
return;
}
}
-
+
// if there wasn't an ellipsis, then there shouldn't be a __VA_ARGS__
// placeholder in the definition too [C99 Standard 6.10.3.5]
if (!seen_ellipses) {
@@ -1717,7 +1717,7 @@
using namespace cpplexer;
typedef typename std::vector<result_type>::iterator
parameter_iterator_t;
-
+
parameter_iterator_t end = macroparameters.end();
for (parameter_iterator_t pit = macroparameters.begin();
pit != end; ++pit)
@@ -1732,7 +1732,7 @@
}
}
}
-
+
// add the new macro to the macromap
ctx.add_macro_definition(macroname, has_parameters, macroparameters,
macrodefinition);
@@ -1906,13 +1906,13 @@
do {
expanded.clear();
-
+
typename token_sequence_type::iterator begin2 = toexpand.begin();
ctx.expand_whole_tokensequence(begin2, toexpand.end(), expanded);
// replace all remaining (== undefined) identifiers with an integer literal '0'
replace_undefined_identifiers(expanded);
-
+
#if BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS != 0
{
string_type outstr(boost::wave::util::impl::as_string(toexpand));
@@ -1932,7 +1932,7 @@
ctx.get_hooks().throw_exception(ctx.derived(), e);
break;
}
-
+
#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
ctx.get_hooks().evaluated_conditional_expression(toexpand, if_status);
} while (false);
@@ -1948,7 +1948,7 @@
string_type expression = util::impl::as_string(expanded);
if (0 == expression.size())
expression = "<empty expression>";
-
+
if (grammars::error_division_by_zero & status) {
BOOST_WAVE_THROW_CTX(ctx, preprocess_exception, division_by_zero,
expression.c_str(), act_pos);
@@ -2002,7 +2002,7 @@
impl::skip_to_eol(ctx, begin3, found_eoltokens.end());
return; // one of previous #if/#elif was true, so don't enter this #elif
}
-
+
// preprocess the given sequence into the provided list
bool if_status = false;
grammars::value_error status = grammars::error_noerror;
@@ -2013,7 +2013,7 @@
typename token_sequence_type::iterator begin2 = toexpand.begin();
ctx.expand_whole_tokensequence(begin2, toexpand.end(), expanded);
-
+
// replace all remaining (== undefined) identifiers with an integer literal '0'
replace_undefined_identifiers(expanded);
@@ -2035,7 +2035,7 @@
// any errors occurred have to be dispatched to the context hooks
ctx.get_hooks().throw_exception(ctx.derived(), e);
}
-
+
#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
ctx.get_hooks().evaluated_conditional_expression(toexpand, if_status);
} while (false);
@@ -2044,7 +2044,7 @@
found_directive, toexpand, if_status)
&& status == grammars::error_noerror);
#endif
-
+
if (!ctx.enter_elif_block(if_status)) {
// #elif without matching #if
BOOST_WAVE_THROW_CTX(ctx, preprocess_exception, missing_matching_if,
@@ -2121,24 +2121,24 @@
using namespace boost::spirit::classic;
if (!parse((*first).get_value().c_str(), int_p).full)
error = preprocess_exception::bad_line_number;
-
+
// extract file name (if it is given)
while (++first != last && IS_CATEGORY(*first, WhiteSpaceTokenType))
/**/; // skip whitespace
-
+
if (first != last) {
if (T_STRINGLIT != token_id(*first)) {
error = preprocess_exception::bad_line_filename;
return false;
}
-
+
StringT const &file_lit = (*first).get_value();
-
+
if ('L' == file_lit[0]) {
error = preprocess_exception::bad_line_filename;
return false; // shouldn't be a wide character string
}
-
+
file = file_lit.substr(1, file_lit.size()-2);
// test if there is other junk on this line
@@ -2170,10 +2170,10 @@
get_token_value<result_type, parse_node_type>,
typename parse_tree_type::const_iterator
>::type const_tree_iterator_t;
-
+
const_tree_iterator_t first = make_ref_transform_iterator(begin, get_value);
const_tree_iterator_t last = make_ref_transform_iterator(end, get_value);
-
+
// try to interpret the #line body as a number followed by an optional
// string literal
unsigned int line = 0;
@@ -2206,14 +2206,14 @@
ctx.get_hooks().found_line_directive(ctx.derived(), toexpand, line,
file_name.c_str());
}
-
+
// the queues should be empty at this point
BOOST_ASSERT(unput_queue.empty());
BOOST_ASSERT(pending_queue.empty());
// make sure error recovery starts on the next line
must_emit_line_directive = true;
-
+
// diagnose possible error in detected line directive
if (error != preprocess_exception::no_error) {
BOOST_WAVE_THROW_VAR_CTX(ctx, preprocess_exception, error,
@@ -2251,7 +2251,7 @@
get_token_value<result_type, parse_node_type>,
typename parse_tree_type::const_iterator
>::type first = make_ref_transform_iterator(begin, get_value);
-
+
#if BOOST_WAVE_PREPROCESS_ERROR_MESSAGE_BODY != 0
// preprocess the body of this #error message
token_sequence_type toexpand;
@@ -2299,7 +2299,7 @@
get_token_value<result_type, parse_node_type>,
typename parse_tree_type::const_iterator
>::type first = make_ref_transform_iterator(begin, get_value);
-
+
#if BOOST_WAVE_PREPROCESS_ERROR_MESSAGE_BODY != 0
// preprocess the body of this #warning message
token_sequence_type toexpand;
@@ -2338,7 +2338,7 @@
typename parse_tree_type::const_iterator const &end)
{
using namespace boost::wave;
-
+
BOOST_ASSERT(ctx.get_if_block_status());
// Look at the pragma token sequence and decide, if the first token is STDC
@@ -2351,13 +2351,13 @@
get_token_value<result_type, parse_node_type>,
typename parse_tree_type::const_iterator
>::type const_tree_iterator_t;
-
+
const_tree_iterator_t first = make_ref_transform_iterator(begin, get_value);
const_tree_iterator_t last = make_ref_transform_iterator(end, get_value);
expanded.push_back(result_type(T_PP_PRAGMA, "#pragma", act_token.get_position()));
expanded.push_back(result_type(T_SPACE, " ", act_token.get_position()));
-
+
while (++first != last && IS_CATEGORY(*first, WhiteSpaceTokenType))
expanded.push_back(*first); // skip whitespace
@@ -2386,7 +2386,7 @@
}
}
expanded.push_back(result_type(T_NEWLINE, "\n", act_token.get_position()));
-
+
// the queues should be empty at this point
BOOST_ASSERT(unput_queue.empty());
BOOST_ASSERT(pending_queue.empty());
@@ -2399,7 +2399,7 @@
pending_queue.splice(pending_queue.begin(), pending);
return true; // this #pragma was successfully recognized
}
-
+
#if BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES != 0
// Move the resulting token sequence into the pending_queue, so it will be
// returned to the caller.
@@ -2417,12 +2417,12 @@
token_sequence_type const &pragma_body, token_sequence_type &result)
{
using namespace cpplexer;
-
+
typename token_sequence_type::const_iterator end = pragma_body.end();
typename token_sequence_type::const_iterator it = pragma_body.begin();
for (++it; it != end && IS_CATEGORY(*it, WhiteSpaceTokenType); ++it)
/**/; // skip whitespace
-
+
if (it == end) // eof reached
return false;
@@ -2458,17 +2458,17 @@
base_type;
typedef pp_iterator<ContextT> self_type;
typedef boost::wave::util::functor_input functor_input_type;
-
+
public:
pp_iterator()
{}
-
+
template <typename IteratorT>
pp_iterator(ContextT &ctx, IteratorT const &first, IteratorT const &last,
typename ContextT::position_type const &pos)
: base_type(input_policy_type(ctx, first, last, pos))
{}
-
+
bool force_include(char const *path_, bool is_last)
{
bool result = this->get_functor().on_include_helper(path_, path_,
Modified: branches/release/boost/wave/util/cpp_macromap.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_macromap.hpp (original)
+++ branches/release/boost/wave/util/cpp_macromap.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -70,10 +70,10 @@
typedef typename ContextT::token_type token_type;
typedef typename token_type::string_type string_type;
typedef typename token_type::position_type position_type;
-
+
typedef typename ContextT::token_sequence_type definition_container_type;
typedef std::vector<token_type> parameter_container_type;
-
+
typedef macro_definition<token_type, definition_container_type>
macro_definition_type;
typedef symbol_table<string_type, macro_definition_type>
@@ -100,11 +100,11 @@
bool is_defined(string_type const &name,
typename defined_macros_type::iterator &it,
defined_macros_type *scope = 0) const;
-
+
// expects a token sequence as its parameters
template <typename IteratorT>
bool is_defined(IteratorT const &begin, IteratorT const &end) const;
-
+
// expects an arbitrary string as its parameter
bool is_defined(string_type const &str) const;
@@ -114,11 +114,11 @@
parameter_container_type ¶meters,
definition_container_type &definition,
defined_macros_type *scope = 0) const;
-
+
// Remove a macro name from the given macro scope
bool remove_macro(string_type const &name, position_type const& pos,
bool even_predefined = false);
-
+
template <typename IteratorT, typename ContainerT>
token_type const &expand_tokensequence(IteratorT &first,
IteratorT const &last, ContainerT &pending, ContainerT &expanded,
@@ -135,7 +135,7 @@
defined_macros_type *scope = 0, bool at_global_scope = true);
void predefine_macro(defined_macros_type *scope, string_type const &name,
token_type const &t);
-
+
// Init the internal macro symbol namespace
void reset_macromap();
@@ -144,7 +144,7 @@
// interface for macro name introspection
typedef typename defined_macros_type::name_iterator name_iterator;
typedef typename defined_macros_type::const_name_iterator const_name_iterator;
-
+
name_iterator begin()
{ return defined_macros_type::make_iterator(current_macros->begin()); }
name_iterator end()
@@ -153,7 +153,7 @@
{ return defined_macros_type::make_iterator(current_macros->begin()); }
const_name_iterator end() const
{ return defined_macros_type::make_iterator(current_macros->end()); }
-
+
protected:
// Helper functions for expanding all macros in token sequences
template <typename IteratorT, typename ContainerT>
@@ -215,7 +215,7 @@
template <typename IteratorT, typename ContainerT>
token_type const &resolve_defined(IteratorT &first, IteratorT const &last,
ContainerT &expanded);
-
+
// Resolve operator _Pragma or the #pragma directive
template <typename IteratorT, typename ContainerT>
bool resolve_operator_pragma(IteratorT &first,
@@ -228,7 +228,7 @@
template <typename ContainerT>
bool is_valid_concat(string_type new_value,
position_type const &pos, ContainerT &rescanned);
-
+
#if BOOST_WAVE_SERIALIZATION != 0
public:
BOOST_STATIC_CONSTANT(unsigned int, version = 0x10);
@@ -303,7 +303,7 @@
name.get_value().c_str());
return false;
}
-
+
// try to define the new macro
defined_macros_type *current_scope = scope ? scope : current_macros;
typename defined_macros_type::iterator it = current_scope->find(name.get_value());
@@ -325,17 +325,17 @@
// test the validity of the parameter names
if (has_parameters) {
std::set<typename token_type::string_type> names;
-
+
typedef typename parameter_container_type::iterator
parameter_iterator_type;
typedef typename std::set<typename token_type::string_type>::iterator
name_iterator_type;
-
+
parameter_iterator_type end = parameters.end();
for (parameter_iterator_type itp = parameters.begin(); itp != end; ++itp)
{
name_iterator_type pit = names.find((*itp).get_value());
-
+
if (pit != names.end()) {
// duplicate parameter name
BOOST_WAVE_THROW_NAME_CTX(ctx, macro_handling_exception,
@@ -346,7 +346,7 @@
names.insert((*itp).get_value());
}
}
-
+
// insert a new macro node
std::pair<typename defined_macros_type::iterator, bool> p =
current_scope->insert(
@@ -368,7 +368,7 @@
// add the parameters and the definition
std::swap((*p.first).second->macroparameters, parameters);
std::swap((*p.first).second->macrodefinition, definition);
-
+
// call the context supplied preprocessing hook
#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
ctx.get_hooks().defined_macro(name, has_parameters,
@@ -394,7 +394,7 @@
defined_macros_type *scope) const
{
if (0 == scope) scope = current_macros;
-
+
if ((it = scope->find(name)) != scope->end())
return true; // found in symbol table
@@ -465,7 +465,7 @@
typename defined_macros_type::iterator it;
if (!is_defined(name, it, scope))
return false;
-
+
macro_definition_type ¯o_def = *(*it).second.get();
has_parameters = macro_def.is_functionlike;
@@ -497,7 +497,7 @@
}
}
current_macros->erase(it);
-
+
// call the context supplied preprocessing hook function
token_type tok(T_IDENTIFIER, name, pos);
@@ -869,7 +869,7 @@
on_exit::assign<IteratorT, iterator_type> on_exit(first, first_it);
ContainerT pending_queue;
bool seen_newline;
-
+
while (!pending_queue.empty() || first_it != last_it) {
expanded.push_back(
expand_tokensequence_worker(pending_queue, first_it,
@@ -1625,13 +1625,13 @@
{
// re-tokenize the newly generated string
typedef typename ContextT::lexer_type lexer_type;
-
+
std::string value_to_test(new_value.c_str());
boost::wave::language_support lang =
boost::wave::enable_prefer_pp_numbers(ctx.get_language());
lang = boost::wave::enable_single_line(lang);
-
+
lexer_type it = lexer_type(value_to_test.begin(), value_to_test.end(), pos,
lang);
lexer_type end = lexer_type();
@@ -1642,7 +1642,7 @@
if (boost::wave::need_variadics(ctx.get_language()))
return true; // in variadics mode token pasting is well defined
#endif
-
+
// test if the newly generated token sequence contains more than 1 token
// the second one is the T_EOF token
// BOOST_ASSERT(T_EOF == token_id(rescanned.back()));
@@ -1662,14 +1662,14 @@
{
using namespace boost::wave;
typedef typename ContainerT::iterator iterator_type;
-
+
iterator_type end = expanded.end();
iterator_type prev = end;
for (iterator_type it = expanded.begin(); it != end; /**/)
{
if (T_POUND_POUND == BASE_TOKEN(token_id(*it))) {
iterator_type next = it;
-
+
++next;
if (prev == end || next == end) {
// error, '##' should be in between two tokens
@@ -1726,7 +1726,7 @@
!IS_CATEGORY(*next, WhiteSpaceTokenType))
{
string_type error_string("\"");
-
+
error_string += (*prev).get_value();
error_string += "\" and \"";
error_string += (*next).get_value();
@@ -1740,13 +1740,13 @@
if (boost::wave::need_variadics(ctx.get_language())) {
// remove the prev, '##' and the next tokens from the sequence
expanded.erase(prev, ++next); // remove not needed tokens
-
+
// some stl implementations clear() the container if we erased all
// the elements, which orphans all iterators. we re-initialize these
// here
if (expanded.empty())
end = next = expanded.end();
-
+
// replace the old token (pointed to by *prev) with the re-tokenized
// sequence
expanded.splice(next, rescanned);
@@ -1764,7 +1764,7 @@
(*prev).set_value(concat_result);
if (T_NONREPLACABLE_IDENTIFIER == token_id(*prev))
(*prev).set_token_id(T_IDENTIFIER);
-
+
// remove the '##' and the next tokens from the sequence
iterator_type first_to_delete = prev;
@@ -1775,7 +1775,7 @@
}
// save last non-whitespace token position
- if (!IS_CATEGORY(*it, WhiteSpaceTokenType))
+ if (!IS_CATEGORY(*it, WhiteSpaceTokenType))
prev = it;
++it; // next token, please
@@ -1835,7 +1835,7 @@
predefine_macro(current_scope, m.name,
token_type(m.token_id, m.value, pos));
}
-
+
#if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
// define __WAVE_HAS_VARIADICS__, if appropriate
if (boost::wave::need_variadics(ctx.get_language())) {
@@ -1849,7 +1849,7 @@
namespace fs = boost::filesystem;
if (string_type(fname) != "<Unknown>") {
fs::path filename(create_path(fname));
-
+
using boost::wave::util::impl::escape_lit;
predefine_macro(current_scope, "__BASE_FILE__",
token_type(T_STRINGLIT, string_type("\"") +
@@ -1858,13 +1858,13 @@
}
else if (!base_name.empty()) {
fs::path filename(create_path(base_name.c_str()));
-
+
using boost::wave::util::impl::escape_lit;
predefine_macro(current_scope, "__BASE_FILE__",
token_type(T_STRINGLIT, string_type("\"") +
escape_lit(native_file_string(filename)).c_str() + "\"", pos));
}
-
+
// now add the dynamic macros
for (int j = 0; 0 != predef.dynamic_data(j).name; ++j) {
predefined_macros::dynamic_macros const& m = predef.dynamic_data(j);
Modified: branches/release/boost/wave/util/cpp_macromap_utils.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_macromap_utils.hpp (original)
+++ branches/release/boost/wave/util/cpp_macromap_utils.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
Token sequence analysis and transformation helper functions
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -49,7 +49,7 @@
public:
pop_front(ContainerT &list_) : list(list_) {}
~pop_front() { list.pop_front(); }
-
+
private:
ContainerT &list;
};
@@ -141,13 +141,13 @@
{
if (name.size() < 7)
return false;
-
+
if ("defined" == name)
return true;
-
+
if ('_' == name[0] && '_' == name[1]) {
StringT str = name.substr(2);
-
+
if (str == "cplusplus" || str == "STDC__" ||
str == "TIME__" || str == "DATE__" ||
str == "LINE__" || str == "FILE__" ||
@@ -170,12 +170,12 @@
token_equals(TokenT const &left, TokenT const &right)
{
using namespace boost::wave;
-
+
if (IS_CATEGORY(left, ParameterTokenType)) {
// if the existing token is of type T_PARAMETERBASE, then the right token
// must be of type T_IDENTIFIER or a keyword
token_id id = token_id(right);
-
+
return (T_IDENTIFIER == id ||
IS_CATEGORY(id, KeywordTokenType) ||
IS_EXTCATEGORY(id, OperatorTokenType|AltExtTokenType) ||
@@ -201,12 +201,12 @@
ContainerT const &new_definition)
{
typedef typename ContainerT::const_iterator const_iterator_type;
-
+
const_iterator_type first1 = definition.begin();
const_iterator_type last1 = definition.end();
const_iterator_type first2 = new_definition.begin();
const_iterator_type last2 = new_definition.end();
-
+
while (first1 != last1 && first2 != last2 && token_equals(*first1, *first2))
{
// skip whitespace, if both sequences have a whitespace next
@@ -248,7 +248,7 @@
return false; // different parameter count
typedef typename ContainerT::const_iterator const_iterator_type;
-
+
const_iterator_type first1 = parameters.begin();
const_iterator_type last1 = parameters.end();
const_iterator_type first2 = new_parameters.begin();
@@ -283,7 +283,7 @@
if (replacement_list.size() > 0) {
typename ContainerT::iterator end = replacement_list.end();
typename ContainerT::iterator it = replacement_list.begin();
-
+
while (it != end && IS_CATEGORY(*it, WhiteSpaceTokenType)) {
if (T_PLACEHOLDER != token_id(*it)) {
typename ContainerT::iterator next = it;
@@ -296,18 +296,18 @@
}
}
}
-
+
// strip trailing whitespace
if (replacement_list.size() > 0) {
typename ContainerT::reverse_iterator rend = replacement_list.rend();
typename ContainerT::reverse_iterator rit = replacement_list.rbegin();
-
+
while (rit != rend && IS_CATEGORY(*rit, WhiteSpaceTokenType))
++rit;
typename ContainerT::iterator end = replacement_list.end();
typename ContainerT::iterator it = rit.base();
-
+
while (it != end && IS_CATEGORY(*it, WhiteSpaceTokenType)) {
if (T_PLACEHOLDER != token_id(*it)) {
typename ContainerT::iterator next = it;
@@ -337,7 +337,7 @@
if (replacement_list.size() > 0) {
typename ContainerT::iterator end = replacement_list.end();
typename ContainerT::iterator it = replacement_list.begin();
-
+
while (it != end) {
if (T_PLACEHOLDER == token_id(*it)) {
typename ContainerT::iterator next = it;
@@ -349,7 +349,7 @@
++it;
}
}
-
+
// remove all 'new' leading and trailing whitespace
trim_replacement_list(replacement_list);
}
@@ -365,7 +365,7 @@
trim_sequence_left (ContainerT &argument)
{
using namespace boost::wave;
-
+
// strip leading whitespace (should be only one token)
if (argument.size() > 0 &&
IS_CATEGORY(argument.front(), WhiteSpaceTokenType))
@@ -384,7 +384,7 @@
trim_sequence_right (ContainerT &argument)
{
using namespace boost::wave;
-
+
// strip trailing whitespace (should be only one token)
if (argument.size() > 0 &&
IS_CATEGORY(argument.back(), WhiteSpaceTokenType))
@@ -480,7 +480,7 @@
class find_concat_operator {
public:
find_concat_operator(bool &found_) : found_concat(found_) {}
-
+
template <typename TokenT>
bool operator()(TokenT const &tok)
{
@@ -501,7 +501,7 @@
struct to_string_helper
{
typedef Target type;
-
+
static Target call(Src const& str)
{
return Target(str.c_str());
Modified: branches/release/boost/wave/util/functor_input.hpp
==============================================================================
--- branches/release/boost/wave/util/functor_input.hpp (original)
+++ branches/release/boost/wave/util/functor_input.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -62,7 +62,7 @@
value_type curtok;
bool was_initialized;
};
-
+
// Needed by compilers not implementing the resolution to DR45. For
// reference, see
// http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45.
@@ -102,7 +102,7 @@
{
boost::spirit::classic::impl::mp_swap(data, x.data);
}
-
+
void ensure_initialized() const
{
if (data && !data->was_initialized) {
@@ -110,7 +110,7 @@
data->was_initialized = true;
}
}
-
+
public:
reference get_input() const
{
Modified: branches/release/boost/wave/util/macro_definition.hpp
==============================================================================
--- branches/release/boost/wave/util/macro_definition.hpp (original)
+++ branches/release/boost/wave/util/macro_definition.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -48,7 +48,7 @@
typedef std::vector<TokenT> parameter_container_type;
typedef ContainerT definition_container_type;
-
+
typedef typename parameter_container_type::const_iterator
const_parameter_iterator_t;
typedef typename definition_container_type::const_iterator
@@ -76,14 +76,14 @@
void replace_parameters()
{
using namespace boost::wave;
-
+
if (!replaced_parameters) {
typename definition_container_type::iterator end = macrodefinition.end();
typename definition_container_type::iterator it = macrodefinition.begin();
for (/**/; it != end; ++it) {
token_id id = *it;
-
+
if (T_IDENTIFIER == id ||
IS_CATEGORY(id, KeywordTokenType) ||
IS_EXTCATEGORY(id, OperatorTokenType|AltExtTokenType) ||
@@ -111,7 +111,7 @@
}
}
}
-
+
#if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
// we need to know, if the last of the formal arguments is an ellipsis
if (macroparameters.size() > 0 &&
Modified: branches/release/boost/wave/util/symbol_table.hpp
==============================================================================
--- branches/release/boost/wave/util/symbol_table.hpp (original)
+++ branches/release/boost/wave/util/symbol_table.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -57,11 +57,11 @@
#endif
typedef typename base_type::iterator iterator_type;
typedef typename base_type::const_iterator const_iterator_type;
-
+
symbol_table(long uid_ = 0)
{}
-
-#if BOOST_WAVE_SERIALIZATION != 0
+
+#if BOOST_WAVE_SERIALIZATION != 0
private:
friend class boost::serialization::access;
template<typename Archive>
Modified: branches/release/boost/wave/util/transform_iterator.hpp
==============================================================================
--- branches/release/boost/wave/util/transform_iterator.hpp (original)
+++ branches/release/boost/wave/util/transform_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -13,9 +13,7 @@
#include <boost/config.hpp>
#include <boost/iterator_adaptors.hpp>
-#if BOOST_ITERATOR_ADAPTORS_VERSION >= 0x0200
#include <boost/iterator/transform_iterator.hpp>
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION >= 0x0200
#include <boost/assert.hpp>
@@ -29,82 +27,6 @@
namespace wave {
namespace impl {
-#if BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Transform Iterator Adaptor
-//
-// Upon deference, apply some unary function object and return the
-// result by reference.
-//
-// This class is adapted from the Boost.Iterator library, where a similar
-// class exists, which returns the next item by value
-//
-///////////////////////////////////////////////////////////////////////////////
- template <class AdaptableUnaryFunctionT>
- struct ref_transform_iterator_policies
- : public boost::default_iterator_policies
- {
- ref_transform_iterator_policies()
- {}
- ref_transform_iterator_policies(const AdaptableUnaryFunctionT &f)
- : m_f(f) {}
-
- template <class IteratorAdaptorT>
- typename IteratorAdaptorT::reference
- dereference(const IteratorAdaptorT &iter) const
- { return m_f(*iter.base()); }
-
- AdaptableUnaryFunctionT m_f;
- };
-
- template <class AdaptableUnaryFunctionT, class IteratorT>
- class ref_transform_iterator_generator
- {
- typedef typename AdaptableUnaryFunctionT::result_type value_type;
-
- public:
- typedef boost::iterator_adaptor<
- IteratorT,
- ref_transform_iterator_policies<AdaptableUnaryFunctionT>,
- value_type, value_type const &, value_type const *,
- std::input_iterator_tag>
- type;
- };
-
- template <class AdaptableUnaryFunctionT, class IteratorT>
- inline
- typename ref_transform_iterator_generator<
- AdaptableUnaryFunctionT, IteratorT>::type
- make_ref_transform_iterator(
- IteratorT base,
- const AdaptableUnaryFunctionT &f = AdaptableUnaryFunctionT())
- {
- typedef typename ref_transform_iterator_generator<
- AdaptableUnaryFunctionT, IteratorT>::type
- result_t;
- return result_t(base, f);
- }
-
- // Retrieve the token value given a parse node
- // This is used in conjunction with the ref_transform_iterator above, to
- // get the token values while iterating directly over the parse tree.
- template <typename TokenT, typename ParseTreeNodeT>
- struct get_token_value {
-
- typedef TokenT result_type;
-
- TokenT const &operator()(ParseTreeNodeT const &node) const
- {
- BOOST_ASSERT(1 == std::distance(node.value.begin(),
- node.value.end()));
- return *node.value.begin();
- }
- };
-
-#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
///////////////////////////////////////////////////////////////////////////////
//
// The new Boost.Iterator library already conatins a transform_iterator usable
@@ -116,7 +38,7 @@
{
typedef typename AdaptableUnaryFunctionT::result_type return_type;
typedef typename AdaptableUnaryFunctionT::argument_type argument_type;
-
+
public:
typedef boost::transform_iterator<
return_type (*)(argument_type), IteratorT, return_type>
@@ -144,7 +66,7 @@
typedef TokenT const &result_type;
typedef ParseTreeNodeT const &argument_type;
-
+
static result_type
transform (argument_type node)
{
@@ -154,8 +76,6 @@
}
};
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
///////////////////////////////////////////////////////////////////////////////
} // namespace impl
} // namespace wave
Modified: branches/release/boost/wave/util/unput_queue_iterator.hpp
==============================================================================
--- branches/release/boost/wave/util/unput_queue_iterator.hpp (original)
+++ branches/release/boost/wave/util/unput_queue_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -30,116 +30,6 @@
namespace wave {
namespace util {
-#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \
- BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-template <typename TokenT, typename ContainerT>
-class unput_queue_policies : public boost::default_iterator_policies
-{
-public:
- unput_queue_policies(ContainerT &unput_queue_)
- : unput_queue(unput_queue_)
- {}
-
- unput_queue_policies &operator= (unput_queue_policies const &rhs)
- {
- unput_queue = rhs.unput_queue;
- return *this;
- }
-
- template <typename BaseT>
- void initialize(BaseT &)
- {}
-
- template <typename IteratorAdaptorT>
- typename IteratorAdaptorT::reference
- dereference(const IteratorAdaptorT &x) const
- {
- if (x.policies().unput_queue.size() > 0)
- return x.policies().unput_queue.front();
- return *x.base();
- }
-
- template <typename IteratorAdaptorT>
- void
- increment(IteratorAdaptorT &x)
- {
- if (x.policies().unput_queue.size() > 0) {
- // there exist pending tokens in the unput queue
- x.policies().unput_queue.pop_front();
- }
- else {
- // the unput_queue is empty, so advance the base iterator
- ++x.base();
- }
- }
-
- template <typename IteratorAdaptorT1, typename IteratorAdaptorT2>
- bool
- equal(const IteratorAdaptorT1 &x, const IteratorAdaptorT2 &y) const
- {
- // two iterators are equal, if both begin() iterators of the queue objects
- // are equal and the base iterators are equal as well
- return
- (x.policies().unput_queue.begin() == y.policies().unput_queue.begin() ||
- (0 == x.policies().queuesize() && 0 == y.policies().queuesize())) &&
- x.base() == y.base();
- }
-
- typename ContainerT::size_type queuesize() const
- { return unput_queue.size(); }
-
- ContainerT &get_unput_queue() { return unput_queue; }
- ContainerT const &get_unput_queue() const { return unput_queue; }
-
-private:
- ContainerT &unput_queue;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// unput_queue_iterator
-//
-// The unput_queue_iterator templates encapsulates an unput_queue together
-// with the direct input to be read after the unput queue is emptied
-//
-// This version is for the old iterator_adaptors (Boost V1.30.x)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT, typename TokenT, typename ContainerT>
-class unput_queue_iterator
-: public boost::iterator_adaptor<
- IteratorT, unput_queue_policies<TokenT, ContainerT>, TokenT,
- TokenT const &, TokenT const *>
-{
- typedef
- boost::iterator_adaptor<
- IteratorT, unput_queue_policies<TokenT, ContainerT>, TokenT,
- TokenT const &, TokenT const *
- >
- base_type;
- typedef unput_queue_policies<TokenT, ContainerT> policies_type;
-
-public:
- typedef ContainerT container_type;
- typedef IteratorT iterator_type;
-
- unput_queue_iterator(IteratorT const &it, ContainerT &queue)
- : base_type(it, policies_type(queue))
- {}
-
- ContainerT &get_unput_queue()
- { return policies().get_unput_queue(); }
- ContainerT const &get_unput_queue() const
- { return policies().get_unput_queue(); }
- IteratorT &get_base_iterator()
- { return base(); }
- IteratorT const &get_base_iterator() const
- { return base(); }
-};
-
-#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
///////////////////////////////////////////////////////////////////////////////
//
// unput_queue_iterator
@@ -161,7 +51,7 @@
unput_queue_iterator<IteratorT, TokenT, ContainerT>,
IteratorT, TokenT const, std::forward_iterator_tag>
base_type;
-
+
public:
typedef ContainerT container_type;
typedef IteratorT iterator_type;
@@ -231,8 +121,6 @@
ContainerT &unput_queue;
};
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
namespace impl {
///////////////////////////////////////////////////////////////////////////
@@ -243,9 +131,9 @@
typedef IteratorT iterator_type;
typedef unput_queue_iterator<IteratorT, TokenT, ContainerT>
return_type;
-
+
static container_type last;
-
+
static return_type
generate(iterator_type const &it)
{
@@ -258,7 +146,7 @@
return return_type(it, queue);
}
};
-
+
template <typename IteratorT, typename TokenT, typename ContainerT>
typename gen_unput_queue_iterator<IteratorT, TokenT, ContainerT>::
container_type
@@ -277,9 +165,9 @@
iterator_type;
typedef unput_queue_iterator<IteratorT, TokenT, ContainerT>
return_type;
-
+
static container_type last;
-
+
static return_type
generate(iterator_type &it)
{
@@ -292,37 +180,17 @@
return return_type(it.base(), queue);
}
};
-
+
///////////////////////////////////////////////////////////////////////////
template <typename IteratorT>
- struct assign_iterator {
-
+ struct assign_iterator
+ {
static void
do_ (IteratorT &dest, IteratorT const &src)
{
dest = src;
}
};
-
-#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \
- BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
- template <typename IteratorT, typename TokenT, typename ContainerT>
- struct assign_iterator<
- unput_queue_iterator<IteratorT, TokenT, ContainerT> >
- {
- typedef unput_queue_iterator<IteratorT, TokenT, ContainerT>
- iterator_type;
-
- static void
- do_ (iterator_type &dest, iterator_type const &src)
- {
- dest.base() = src.base();
- dest.policies() = src.policies();
- }
- };
-
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
///////////////////////////////////////////////////////////////////////////
//
@@ -330,8 +198,8 @@
// Note though, that the embedded unput_queues are not touched in any way!
//
template <typename IteratorT>
- struct next_token {
-
+ struct next_token
+ {
static boost::wave::token_id
peek(IteratorT it, IteratorT end, bool skip_whitespace = true)
{
@@ -353,20 +221,20 @@
return T_EOI;
}
};
-
+
template <typename IteratorT, typename TokenT, typename ContainerT>
struct next_token<
unput_queue_iterator<IteratorT, TokenT, ContainerT> > {
-
+
typedef unput_queue_iterator<IteratorT, TokenT, ContainerT> iterator_type;
-
+
static boost::wave::token_id
peek(iterator_type it, iterator_type end, bool skip_whitespace = true)
{
using namespace boost::wave;
-
+
typename iterator_type::container_type &queue = it.get_unput_queue();
-
+
// first try to find it in the unput_queue
if (0 != queue.size()) {
typename iterator_type::container_type::iterator cit = queue.begin();
@@ -387,7 +255,7 @@
if (cit != cend)
return token_id(*cit);
}
-
+
// second try to move on into the base iterator stream
typename iterator_type::iterator_type base_it = it.get_base_iterator();
typename iterator_type::iterator_type base_end = end.get_base_iterator();
Modified: branches/release/boost/wave/wave_config.hpp
==============================================================================
--- branches/release/boost/wave/wave_config.hpp (original)
+++ branches/release/boost/wave/wave_config.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -193,8 +193,8 @@
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || \
BOOST_WORKAROUND(__MWERKS__, < 0x3200) || \
(defined(__DECCXX) && defined(__alpha)) || \
- defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING)
-
+ defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING)
+
#define BOOST_WAVE_STRINGTYPE std::string
#if !defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING)
Modified: branches/release/boost/wave/wave_version.hpp
==============================================================================
--- branches/release/boost/wave/wave_version.hpp (original)
+++ branches/release/boost/wave/wave_version.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
This is the current version of the Wave library
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -16,11 +16,11 @@
// BOOST_WAVE_VERSION & 0x0000FF is the sub-minor version
// BOOST_WAVE_VERSION & 0x00FF00 is the minor version
// BOOST_WAVE_VERSION & 0xFF0000 is the major version
-#define BOOST_WAVE_VERSION 0x020002
+#define BOOST_WAVE_VERSION 0x020003
// The following defines contain the same information as above
#define BOOST_WAVE_VERSION_MAJOR 2
#define BOOST_WAVE_VERSION_MINOR 0
-#define BOOST_WAVE_VERSION_SUBMINOR 2
+#define BOOST_WAVE_VERSION_SUBMINOR 3
#endif // !defined(WAVE_VERSION_H_9D79ABDB_AC54_4C0A_89B1_F70A2DCFE21E_INCLUDED)
Modified: branches/release/boost/wave/whitespace_handling.hpp
==============================================================================
--- branches/release/boost/wave/whitespace_handling.hpp (original)
+++ branches/release/boost/wave/whitespace_handling.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -73,7 +73,7 @@
{
public:
eat_whitespace();
-
+
template <typename ContextT>
bool may_skip_whitespace(ContextT const& ctx, TokenT &token,
bool &skipped_newline);
@@ -83,7 +83,7 @@
{
return !preserve_comments && T_CPPCOMMENT == id;
}
-
+
private:
typedef bool state_t(TokenT &token, bool &skipped_newline);
state_t eat_whitespace::* state;
@@ -172,7 +172,7 @@
eat_whitespace<TokenT>::newline_2nd(TokenT &token, bool &skipped_newline)
{
using namespace boost::wave;
-
+
token_id id = token_id(token);
if (T_SPACE == id || T_SPACE2 == id)
return true;
@@ -198,14 +198,14 @@
eat_whitespace<TokenT>::whitespace(TokenT &token, bool &skipped_newline)
{
using namespace boost::wave;
-
+
token_id id = token_id(token);
if (T_SPACE != id && T_SPACE2 != id &&
T_CCOMMENT != id && T_CPPCOMMENT != id)
{
return general(token, skipped_newline);
}
-
+
if (T_CCOMMENT == id) {
if (util::ccomment_has_newline(token))
skipped_newline = true;
Modified: branches/release/libs/wave/ChangeLog
==============================================================================
--- branches/release/libs/wave/ChangeLog (original)
+++ branches/release/libs/wave/ChangeLog 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -22,6 +22,22 @@
CHANGELOG
+Boost V1.41.0
+- V2.0.3
+- Switched to Re2C V0.13.5
+- Fixed --list_includes/-l command line option of the wave driver tool to
+ correctly indent the generated list of included files.
+- Finally fixed all remaining examples. Everything seems to work fine now.
+- Specifying a custom token type now works as expected. The new lexer interface
+ introduced in V2.0 broke this part.
+- Removed old code related to pre Boost V1.31 (related to V1 of iterator
+ library).
+- Added a new commandline option --macrocounts/-c to the Wave driver application
+ which lists all macro invocation counts to an optionally specified file
+ (default is cout).
+- Fixed compilation problems caused by recent changes to the multi_pass iterator
+ from Spirit V2.1.
+
Boost V1.40.0
- V2.0.2
- Fixed a long standing race condition inhibiting to use Wave in multi threaded
Modified: branches/release/libs/wave/doc/class_reference_ctxpolicy.html
==============================================================================
--- branches/release/libs/wave/doc/class_reference_ctxpolicy.html (original)
+++ branches/release/libs/wave/doc/class_reference_ctxpolicy.html 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -52,7 +52,8 @@
<p>This policy type is used as a template parameter to the boost::wave::context<> object, where the default policy provides empty hook functions only.</p>
<h2><a name="header_synopsis"></a>Header wave/preprocessing_hooks.hpp synopsis</h2>
<pre><span class="keyword">namespace</span> boost {<br><span class="keyword">namespace</span> wave {<br><span class="keyword">namespace</span> context_policies {<br> <br> <span class="keyword">struct</span> default_preprocessing_hooks {<br><br> <span class="comment">// general hook functions</span>
- <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT><br> <span class="keyword">bool</span> found_directive(ContextT <span class="keyword">const</span> &ctx, <br> TokenT <span class="keyword">const </span>&directive);<br><br> <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ExceptionT><br> void throw_exception(ContextT <span class="keyword">const</span> &ctx, <br> ExceptionT <span class="keyword">const</span>& e);<br><br> <span class="comment">// test, whether a given token may be skipped</span><br> <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT><br> <span class="keyword">bool</span> <a href="c
lass_reference_ctxpolicy.html#may_skip_whitespace">may_skip_whitespace</a> (ContextT <span class="keyword">const</span>& ctx,<br> TokenT &token, <span class="keyword">bool</span> &skipped_newline);<br>
+ <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT><br> <span class="keyword">bool</span> found_directive(ContextT <span class="keyword">const</span> &ctx, <br> TokenT <span class="keyword">const </span>&directive);<br>
+ <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> ExceptionT><br> void throw_exception(ContextT <span class="keyword">const</span> &ctx, <br> ExceptionT <span class="keyword">const</span>& e);<br><br> <span class="comment">// test, whether a given token may be skipped</span><br> <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT><br> <span class="keyword">bool</span> may_skip_whitespace (ContextT <span class="keyword">const</span>& ctx,<br> TokenT &token, <span class="keyword">bool</span> &skipped_newline);<br>
<span class="comment">// Conditional compilation</span><span class="keyword">
template</span> <<br> <span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT, <br> <span class="keyword">typename</span> ContainerT<br> ><br> <span class="keyword">bool</span> evaluated_conditional_expression(<br> ContextT <span class="keyword">const</span> &ctx, TokenT <span class="keyword">const</span>& directive, <br> ContainerT <span class="keyword">const</span>& expression, <span class="keyword">bool</span> expression_value);<br>
<span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT><br> <span class="keyword">void</span> skipped_token(ContextT <span class="keyword">const</span> &ctx, <br> TokenT <span class="keyword">const</span>& token);<br><br> <span class="keyword">template</span> <<span class="keyword">typename</span> ContextT, <span class="keyword">typename</span> TokenT><br> TokenT <span class="keyword">const</span>& generated_token(ContextT <span class="keyword">const</span> &ctx, <br> TokenT <span class="keyword">const</span>& token);<br><br> <span class="comment">// macro expansion tracing</span><span class="keyword">
@@ -372,7 +373,7 @@
1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) </font> </p>
<p class="copyright"><span class="updated">Last updated:
- <!-- #BeginDate format:fcAm1m -->Sunday, October 12, 2008 20:13<!-- #EndDate -->
+ <!-- #BeginDate format:fcAm1m -->Tuesday, October 14, 2008 18:45<!-- #EndDate -->
</span></p>
</body>
</html>
Modified: branches/release/libs/wave/samples/advanced_hooks/advanced_hooks.cpp
==============================================================================
--- branches/release/libs/wave/samples/advanced_hooks/advanced_hooks.cpp (original)
+++ branches/release/libs/wave/samples/advanced_hooks/advanced_hooks.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -40,7 +40,7 @@
std::cerr << "Usage: advanced_hooks infile" << std::endl;
return -1;
}
-
+
// current file position is saved for exception handling
boost::wave::util::file_position_type current_position;
@@ -56,15 +56,15 @@
instream.unsetf(std::ios::skipws);
instring = std::string(std::istreambuf_iterator<char>(instream.rdbuf()),
std::istreambuf_iterator<char>());
-
+
// The template boost::wave::cpplexer::lex_token<> is the token type to be
// used by the Wave library.
typedef boost::wave::cpplexer::lex_token<> token_type;
-
+
// The template boost::wave::cpplexer::lex_iterator<> is the lexer type to
// be used by the Wave library.
typedef boost::wave::cpplexer::lex_iterator<token_type> lex_iterator_type;
-
+
// This is the resulting context type to use. The first template parameter
// should match the iterator type to be used during construction of the
// corresponding context object (see below).
@@ -89,7 +89,7 @@
// analyze the input file, print out the preprocessed tokens
context_type::iterator_type first = ctx.begin();
context_type::iterator_type last = ctx.end();
-
+
while (first != last) {
current_position = (*first).get_position();
std::cout << (*first).get_value();
Modified: branches/release/libs/wave/samples/advanced_hooks/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/advanced_hooks/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/advanced_hooks/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/cpp_tokens/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/cpp_tokens/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -5,7 +5,7 @@
This sample shows, how it is possible to use a custom lexer type and a
custom token type with the Wave library.
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
@@ -101,7 +101,7 @@
while (first != last) {
// retrieve next token
current_token = *first;
-
+
// output token info
cout << "matched " << current_token << endl;
++first;
Modified: branches/release/libs/wave/samples/cpp_tokens/instantiate_slex_lexer.cpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/instantiate_slex_lexer.cpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/instantiate_slex_lexer.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -3,7 +3,7 @@
Sample: Print out the preprocessed tokens returned by the Wave iterator
Explicit instantiation of the lex_functor generation function
-
+
http://www.boost.org/
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
Modified: branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -79,7 +79,7 @@
typedef boost::spirit::classic::lexer<iterator_type> base_type;
lexer_base();
-
+
// initialization data (regular expressions for the token definitions)
struct lexer_data {
token_id tokenid; // token data
Modified: branches/release/libs/wave/samples/cpp_tokens/slex_interface.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex_interface.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex_interface.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -63,9 +63,9 @@
: lex_input_interface<TokenT>
{
typedef typename lex_input_interface<TokenT>::position_type position_type;
-
+
~slex_input_interface() {}
-
+
// The new_lexer function allows the opaque generation of a new lexer object.
// It is coupled to the token type to allow to distinguish different
// lexer/token configurations at compile time.
Modified: branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -57,7 +57,7 @@
#endif // 0 != __DECCXX_VER
{}
-// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// interface to the boost::spirit::classic::iterator_policies::functor_input
// policy
typedef TokenT result_type;
typedef slex_iterator_functor_shim unique;
@@ -68,7 +68,7 @@
template <typename MultiPass>
static result_type& get_next(MultiPass& mp, result_type& result)
{
- return mp.shared->ftor->get(result);
+ return mp.shared()->ftor->get(result);
}
// this will be called whenever the last reference to a multi_pass will
@@ -76,20 +76,20 @@
template <typename MultiPass>
static void destroy(MultiPass& mp)
{
- delete mp.shared->ftor;
+ delete mp.shared()->ftor;
}
template <typename MultiPass>
static void set_position(MultiPass& mp, position_type const &pos)
{
- mp.shared->ftor->set_position(pos);
+ mp.shared()->ftor->set_position(pos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
template <typename MultiPass>
static bool has_include_guards(MultiPass& mp, std::string& guard_name)
{
- return mp.shared->ftor->has_include_guards(guard_name);
+ return mp.shared()->ftor->has_include_guards(guard_name);
}
#endif
@@ -141,16 +141,16 @@
functor_data_type;
typedef typename FunctorData::result_type result_type;
- typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
- typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+ typedef boost::spirit::iterator_policies::split_functor_input input_policy;
+ typedef boost::spirit::iterator_policies::ref_counted ownership_policy;
#if defined(BOOST_WAVE_DEBUG)
- typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+ typedef boost::spirit::iterator_policies::buf_id_check check_policy;
#else
- typedef boost::spirit::multi_pass_policies::no_check check_policy;
+ typedef boost::spirit::iterator_policies::no_check check_policy;
#endif
- typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+ typedef boost::spirit::iterator_policies::split_std_deque storage_policy;
- typedef boost::spirit::multi_pass_policies::default_policy<
+ typedef boost::spirit::iterator_policies::default_policy<
ownership_policy, check_policy, input_policy, storage_policy>
policy_type;
typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
Modified: branches/release/libs/wave/samples/cpp_tokens/slex_token.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex_token.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex_token.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -43,11 +43,16 @@
public:
typedef BOOST_WAVE_STRINGTYPE string_type;
typedef PositionT position_type;
-
+
slex_token()
: id(T_EOI)
{}
-
+
+ // construct an invalid token
+ explicit slex_token(int)
+ : id(T_UNKNOWN)
+ {}
+
slex_token(token_id id_, string_type const &value_, PositionT const &pos_)
: id(id_), value(value_), pos(pos_)
{}
@@ -57,6 +62,7 @@
string_type const &get_value() const { return value; }
position_type const &get_position() const { return pos; }
bool is_eoi() const { return id == T_EOI; }
+ bool is_valid() const { return id != T_UNKNOWN; }
void set_token_id (token_id id_) { id = id_; }
void set_value (string_type const &newval) { value = newval; }
@@ -120,6 +126,18 @@
}
///////////////////////////////////////////////////////////////////////////////
+// This overload is needed by the multi_pass/functor_input_policy to
+// validate a token instance. It has to be defined in the same namespace
+// as the token class itself to allow ADL to find it.
+///////////////////////////////////////////////////////////////////////////////
+template <typename Position>
+inline bool
+token_is_valid(slex_token<Position> const& t)
+{
+ return t.is_valid();
+}
+
+///////////////////////////////////////////////////////////////////////////////
} // namespace cpplexer
} // namespace wave
} // namespace boost
Modified: branches/release/libs/wave/samples/hannibal/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/hannibal/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/hannibal/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/hannibal/hannibal.cpp
==============================================================================
--- branches/release/libs/wave/samples/hannibal/hannibal.cpp (original)
+++ branches/release/libs/wave/samples/hannibal/hannibal.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -117,7 +117,7 @@
return true;
}
}
-
+
///////////////////////////////////////////////////////////////////////////////
} // unnamed namespace
@@ -125,7 +125,6 @@
// main entry point
int main(int argc, char *argv[])
{
-
po::variables_map vm;
if (!parse_command_line( argc, argv, vm))
@@ -151,7 +150,7 @@
instream.unsetf(std::ios::skipws);
instring = std::string(std::istreambuf_iterator<char>(instream.rdbuf()),
std::istreambuf_iterator<char>());
-
+
// The template boost::wave::cpplexer::lex_token<> is the token type to be
// used by the Wave library.
typedef boost::wave::cpplexer::lex_token<> token_type;
@@ -159,7 +158,7 @@
// The template boost::wave::cpplexer::lex_iterator<> is the lexer type to
// be used by the Wave library.
typedef boost::wave::cpplexer::lex_iterator<token_type> lex_iterator_type;
-
+
// This is the resulting context type to use. The first template parameter
// should match the iterator type to be used during construction of the
// corresponding context object (see below).
@@ -240,7 +239,7 @@
// analyze the input file
context_type::iterator_type first = ctx.begin();
context_type::iterator_type last = ctx.end();
-
+
translation_unit_skipper s;
#if HANNIBAL_DUMP_PARSE_TREE != 0
Modified: branches/release/libs/wave/samples/lexed_tokens/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/lexed_tokens/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/lexed_tokens/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/list_includes/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/list_includes/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/list_includes/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/list_includes/lexertl/lexertl_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/list_includes/lexertl/lexertl_lexer.hpp (original)
+++ branches/release/libs/wave/samples/list_includes/lexertl/lexertl_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -32,14 +32,14 @@
#if BOOST_WAVE_LEXERTL_USE_STATIC_TABLES != 0
#include "wave_lexertl_tables.hpp"
#else
-#include "lexertl/generator.hpp"
-#include "lexertl/rules.hpp"
-#include "lexertl/state_machine.hpp"
-#include "lexertl/consts.h"
-#include "lexertl/examples/serialise.hpp"
-#if BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE != 0
-#include "lexertl/examples/cpp_code.hpp"
-#endif
+#include <boost/spirit/home/support/detail/lexer/generator.hpp>
+#include <boost/spirit/home/support/detail/lexer/rules.hpp>
+#include <boost/spirit/home/support/detail/lexer/state_machine.hpp>
+#include <boost/spirit/home/support/detail/lexer/consts.hpp>
+//#include "lexertl/examples/serialise.hpp>
+// #if BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE != 0
+// #include "lexertl/examples/cpp_code.hpp"
+// #endif
#endif
///////////////////////////////////////////////////////////////////////////////
@@ -96,13 +96,13 @@
static std::time_t get_compilation_time()
{ return compilation_time.get_time(); }
- bool load (istream& instrm);
- bool save (ostream& outstrm);
-
+ bool load (std::istream& instrm);
+ bool save (std::ostream& outstrm);
+
private:
- ::lexertl::state_machine state_machine_;
+ boost::lexer::state_machine state_machine_;
bool has_compiled_dfa_;
-
+
// initialization data (regular expressions for the token definitions)
struct lexer_macro_data {
char_type const *name; // macro name
@@ -438,7 +438,7 @@
state_machine_.clear();
// register macro definitions
- ::lexertl::rules rules;
+ boost::lexer::rules rules;
for (int k = 0; NULL != init_macro_data[k].name; ++k) {
rules.add_macro(init_macro_data[k].name, init_macro_data[k].macro);
}
@@ -458,15 +458,15 @@
init_data_cpp[j].tokenid);
}
}
-
+
for (int i = 0; 0 != init_data[i].tokenid; ++i) {
rules.add(init_data[i].tokenregex, init_data[i].tokenid);
}
// generate minimized DFA
try {
- ::lexertl::generator::build (rules, state_machine_);
- ::lexertl::generator::minimise_dfa (state_machine_);
+ boost::lexer::generator::build (rules, state_machine_);
+ boost::lexer::generator::minimise (state_machine_);
}
catch (std::runtime_error const& e) {
string_type msg("lexertl initialization error: ");
@@ -483,7 +483,7 @@
if (dfa_out.is_open())
save (dfa_out);
}
-
+
has_compiled_dfa_ = true;
return true;
}
@@ -497,11 +497,11 @@
string_type& token_value)
{
#if BOOST_WAVE_LEXERTL_USE_STATIC_TABLES == 0
- size_t const* const lookup = &state_machine_._lookup[0]->front ();
- size_t const dfa_alphabet = state_machine_._dfa_alphabet[0];
+ size_t const* const lookup = &state_machine_.data()._lookup[0]->front ();
+ size_t const dfa_alphabet = state_machine_.data()._dfa_alphabet[0];
- size_t const* dfa = &state_machine_._dfa[0]->front();
- size_t const* ptr = dfa + dfa_alphabet + ::lexertl::dfa_offset;
+ size_t const* dfa = &state_machine_.data()._dfa[0]->front();
+ size_t const* ptr = dfa + dfa_alphabet + boost::lexer::dfa_offset;
#else
const std::size_t *ptr = dfa + dfa_offset;
#endif // BOOST_WAVE_LEXERTL_USE_STATIC_TABLES == 0
@@ -512,13 +512,13 @@
size_t id = *(ptr + 1);
while (curr != last) {
- size_t const state = ptr[lookup[*curr]];
+ size_t const state = ptr[lookup[int(*curr)]];
if (0 == state)
break;
++curr;
#if BOOST_WAVE_LEXERTL_USE_STATIC_TABLES == 0
- ptr = &dfa[state * (dfa_alphabet + ::lexertl::dfa_offset)];
+ ptr = &dfa[state * (dfa_alphabet + boost::lexer::dfa_offset)];
#else
ptr = &dfa[state * dfa_offset];
#endif // BOOST_WAVE_LEXERTL_USE_STATIC_TABLES == 0
@@ -551,15 +551,15 @@
inline bool
lexertl<Iterator, Position>::load (std::istream& instrm)
{
-#if !defined(BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE)
- std::size_t version = 0;
- ::lexertl::serialise::load_as_binary(instrm, state_machine_, version);
- if (version != (std::size_t)get_compilation_time())
- return false; // too new for us
- return instrm.good();
-#else
+// #if !defined(BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE)
+// std::size_t version = 0;
+// boost::lexer::serialise::load_as_binary(instrm, state_machine_, version);
+// if (version != (std::size_t)get_compilation_time())
+// return false; // too new for us
+// return instrm.good();
+// #else
return false; // always create the dfa when generating the C++ code
-#endif
+// #endif
}
///////////////////////////////////////////////////////////////////////////////
@@ -568,12 +568,12 @@
inline bool
lexertl<Iterator, Position>::save (std::ostream& outstrm)
{
-#if defined(BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE)
- cpp_code::generate(state_machine_, outstrm);
-#else
- ::lexertl::serialise::save_as_binary(state_machine_, outstrm,
- (std::size_t)get_compilation_time());
-#endif
+// #if defined(BOOST_WAVE_LEXERTL_GENERATE_CPP_CODE)
+// cpp_code::generate(state_machine_, outstrm);
+// #else
+// boost::lexer::serialise::save_as_binary(state_machine_, outstrm,
+// (std::size_t)get_compilation_time());
+// #endif
return outstrm.good();
}
#endif // #if BOOST_WAVE_LEXERTL_USE_STATIC_TABLES == 0
Modified: branches/release/libs/wave/samples/list_includes/lexertl/wave_lexertl_config.hpp
==============================================================================
--- branches/release/libs/wave/samples/list_includes/lexertl/wave_lexertl_config.hpp (original)
+++ branches/release/libs/wave/samples/list_includes/lexertl/wave_lexertl_config.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -17,7 +17,7 @@
// makes the code compilable even without having the lexertl library
// available.
#if !defined(BOOST_WAVE_LEXERTL_USE_STATIC_TABLES)
-#define BOOST_WAVE_LEXERTL_USE_STATIC_TABLES 1
+#define BOOST_WAVE_LEXERTL_USE_STATIC_TABLES 0
#endif
///////////////////////////////////////////////////////////////////////////////
Modified: branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp (original)
+++ branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -56,7 +56,7 @@
#endif // 0 != __DECCXX_VER
{}
-// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// interface to the boost::spirit::classic::iterator_policies::functor_input
// policy
typedef TokenT result_type;
typedef iterator_functor_shim unique;
@@ -67,7 +67,7 @@
template <typename MultiPass>
static result_type& get_next(MultiPass& mp, result_type& result)
{
- return mp.shared->ftor->get(result);
+ return mp.shared()->ftor->get(result);
}
// this will be called whenever the last reference to a multi_pass will
@@ -75,20 +75,20 @@
template <typename MultiPass>
static void destroy(MultiPass& mp)
{
- delete mp.shared->ftor;
+ delete mp.shared()->ftor;
}
template <typename MultiPass>
static void set_position(MultiPass& mp, position_type const &pos)
{
- mp.shared->ftor->set_position(pos);
+ mp.shared()->ftor->set_position(pos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
template <typename MultiPass>
static bool has_include_guards(MultiPass& mp, std::string& guard_name)
{
- return mp.shared->ftor->has_include_guards(guard_name);
+ return mp.shared()->ftor->has_include_guards(guard_name);
}
#endif
@@ -140,16 +140,16 @@
functor_data_type;
typedef typename FunctorData::result_type result_type;
- typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
- typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+ typedef boost::spirit::iterator_policies::split_functor_input input_policy;
+ typedef boost::spirit::iterator_policies::ref_counted ownership_policy;
#if defined(BOOST_WAVE_DEBUG)
- typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+ typedef boost::spirit::iterator_policies::buf_id_check check_policy;
#else
- typedef boost::spirit::multi_pass_policies::no_check check_policy;
+ typedef boost::spirit::iterator_policies::no_check check_policy;
#endif
- typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+ typedef boost::spirit::iterator_policies::split_std_deque storage_policy;
- typedef boost::spirit::multi_pass_policies::default_policy<
+ typedef boost::spirit::iterator_policies::default_policy<
ownership_policy, check_policy, input_policy, storage_policy>
policy_type;
typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
Modified: branches/release/libs/wave/samples/quick_start/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/quick_start/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/quick_start/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/real_positions/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/real_positions/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/real_positions/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/real_positions/correct_token_positions.hpp
==============================================================================
--- branches/release/libs/wave/samples/real_positions/correct_token_positions.hpp (original)
+++ branches/release/libs/wave/samples/real_positions/correct_token_positions.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -29,7 +29,7 @@
}
return newlines;
}
-
+
// return the length of the last line in a C style comment
template <typename String>
unsigned last_line_length(String const& str)
@@ -50,7 +50,7 @@
{
correct_token_position(typename Token::string_type filename)
: pos(filename) {}
-
+
///////////////////////////////////////////////////////////////////////////
//
// The function 'generated_token' will be called by the library whenever a
@@ -78,15 +78,15 @@
{
typedef typename Token::string_type string_type;
typedef typename Token::position_type position_type;
-
+
using namespace boost::wave;
-
+
// adjust the current position
position_type current_pos(pos);
token_id id = token_id(token);
string_type const& v (token.get_value());
-
+
switch (id) {
case T_NEWLINE:
case T_CPPCOMMENT:
@@ -107,17 +107,17 @@
}
}
break;
-
+
default:
pos.set_column(current_pos.get_column() + v.size());
break;
}
-
+
// set the new position in the token to be returned
token.set_corrected_position(current_pos);
return token;
}
-
+
typename Token::position_type pos;
};
Modified: branches/release/libs/wave/samples/real_positions/instantiate_re2c_lexer.cpp
==============================================================================
--- branches/release/libs/wave/samples/real_positions/instantiate_re2c_lexer.cpp (original)
+++ branches/release/libs/wave/samples/real_positions/instantiate_re2c_lexer.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -48,9 +48,11 @@
///////////////////////////////////////////////////////////////////////////////
template struct boost::wave::cpplexer::new_lexer_gen<
- BOOST_WAVE_STRINGTYPE::iterator>;
+ BOOST_WAVE_STRINGTYPE::iterator, boost::wave::util::file_position_type,
+ lex_token<boost::wave::util::file_position_type> >;
template struct boost::wave::cpplexer::new_lexer_gen<
- BOOST_WAVE_STRINGTYPE::const_iterator>;
+ BOOST_WAVE_STRINGTYPE::const_iterator, boost::wave::util::file_position_type,
+ lex_token<boost::wave::util::file_position_type> >;
// the suffix header occurs after all of the code
#ifdef BOOST_HAS_ABI_HEADERS
Modified: branches/release/libs/wave/samples/real_positions/real_position_token.hpp
==============================================================================
--- branches/release/libs/wave/samples/real_positions/real_position_token.hpp (original)
+++ branches/release/libs/wave/samples/real_positions/real_position_token.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -17,6 +17,7 @@
#include <boost/wave/util/file_position.hpp>
#include <boost/wave/token_ids.hpp>
#include <boost/wave/language_support.hpp>
+#include <boost/detail/atomic_count.hpp>
///////////////////////////////////////////////////////////////////////////////
namespace impl {
@@ -27,11 +28,16 @@
public:
typedef StringTypeT string_type;
typedef PositionT position_type;
-
+
token_data()
: id(boost::wave::T_EOI), refcnt(1)
{}
-
+
+ // construct an invalid token
+ explicit token_data(int)
+ : id(T_UNKNOWN), refcnt(1)
+ {}
+
token_data(boost::wave::token_id id_, string_type const &value_,
position_type const &pos_)
: id(id_), value(value_), pos(pos_), corrected_pos(pos_), refcnt(1)
@@ -41,14 +47,14 @@
: id(rhs.id), value(rhs.value), pos(rhs.pos),
corrected_pos(rhs.corrected_pos), refcnt(1)
{}
-
+
~token_data()
{}
-
+
std::size_t addref() { return ++refcnt; }
std::size_t release() { return --refcnt; }
std::size_t get_refcnt() const { return refcnt; }
-
+
// accessors
operator boost::wave::token_id() const { return id; }
string_type const &get_value() const { return value; }
@@ -69,13 +75,13 @@
// positions
return (lhs.id == rhs.id && lhs.value == rhs.value) ? true : false;
}
-
+
private:
boost::wave::token_id id; // the token id
string_type value; // the text, which was parsed into this token
position_type pos; // the original file position
position_type corrected_pos; // the original file position
- std::size_t refcnt;
+ boost::detail::atomic_count refcnt;
};
///////////////////////////////////////////////////////////////////////////////
@@ -98,11 +104,16 @@
public:
typedef BOOST_WAVE_STRINGTYPE string_type;
typedef PositionT position_type;
-
+
lex_token()
: data(new impl::token_data<string_type, position_type>())
{}
-
+
+ // construct an invalid token
+ explicit lex_token(int)
+ : data(new data_type(0))
+ {}
+
lex_token(lex_token const& rhs)
: data(rhs.data)
{
@@ -120,7 +131,7 @@
delete data;
data = 0;
}
-
+
lex_token& operator=(lex_token const& rhs)
{
if (&rhs != this) {
@@ -132,7 +143,7 @@
}
return *this;
}
-
+
// accessors
operator boost::wave::token_id() const
{ return boost::wave::token_id(*data); }
@@ -142,6 +153,7 @@
{ return data->get_position(); }
position_type const &get_corrected_position() const
{ return data->get_corrected_position(); }
+ bool is_valid() const { return 0 != data && token_id(*data) != T_UNKNOWN; }
void set_token_id (boost::wave::token_id id_)
{ make_unique(); data->set_token_id(id_); }
@@ -156,8 +168,8 @@
{
return *(lhs.data) == *(rhs.data);
}
-
-// debug support
+
+// debug support
#if BOOST_WAVE_DUMP_PARSE_TREE != 0
// access functions for the tree_to_xml functionality
static int get_token_id(lex_token const &t)
@@ -165,22 +177,34 @@
static string_type get_token_value(lex_token const &t)
{ return t.get_value(); }
#endif
-
+
private:
// make a unique copy of the current object
void make_unique()
{
if (1 == data->get_refcnt())
return;
-
+
impl::token_data<string_type, position_type> *newdata =
new impl::token_data<string_type, position_type>(*data);
data->release(); // release this reference, can't get zero
data = newdata;
}
-
+
impl::token_data<string_type, position_type> *data;
};
+///////////////////////////////////////////////////////////////////////////////
+// This overload is needed by the multi_pass/functor_input_policy to
+// validate a token instance. It has to be defined in the same namespace
+// as the token class itself to allow ADL to find it.
+///////////////////////////////////////////////////////////////////////////////
+template <typename Position>
+inline bool
+token_is_valid(lex_token<Position> const& t)
+{
+ return t.is_valid();
+}
+
#endif // !defined(REAL_POSITION_TOKEN_HPP_HK_061109_INCLUDED)
Modified: branches/release/libs/wave/samples/real_positions/real_positions.cpp
==============================================================================
--- branches/release/libs/wave/samples/real_positions/real_positions.cpp (original)
+++ branches/release/libs/wave/samples/real_positions/real_positions.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -42,7 +42,7 @@
{
using namespace std;
using namespace boost::wave;
-
+
token_id id = token_id(t);
stream << setw(16)
<< left << boost::wave::get_token_name(id) << " ("
@@ -60,11 +60,11 @@
stream << ", AltExtTokenType";
}
}
-
+
stream << "): >";
-
+
typedef typename lex_token<PositionT>::string_type string_type;
-
+
string_type const& value = t.get_value();
for (std::size_t i = 0; i < value.size(); ++i) {
switch (value[i]) {
@@ -85,7 +85,7 @@
<< setw(3) << right << t.get_corrected_position().get_line() << "/"
<< setw(2) << right << t.get_corrected_position().get_column()
<< ")";
-
+
return stream;
}
@@ -97,7 +97,7 @@
std::cerr << "Usage: real_positions infile" << std::endl;
return -1;
}
-
+
// current file position is saved for exception handling
boost::wave::util::file_position_type current_position;
@@ -113,29 +113,29 @@
instream.unsetf(std::ios::skipws);
instring = std::string(std::istreambuf_iterator<char>(instream.rdbuf()),
std::istreambuf_iterator<char>());
-
+
// The template real_positions::lex_token<> is the token type to be
// used by the Wave library.
typedef lex_token<> token_type;
-
+
// The template boost::wave::cpplexer::lex_iterator<> is the lexer type to
// be used by the Wave library.
typedef boost::wave::cpplexer::lex_iterator<token_type>
lex_iterator_type;
-
+
// This is the resulting context type to use. The first template parameter
// should match the iterator type to be used during construction of the
// corresponding context object (see below).
- typedef boost::wave::context<
- std::string::iterator, lex_iterator_type,
- boost::wave::iteration_context_policies::load_file_to_string,
- correct_token_position<token_type> >
- context_type;
+ typedef boost::wave::context<
+ std::string::iterator, lex_iterator_type,
+ boost::wave::iteration_context_policies::load_file_to_string,
+ correct_token_position<token_type> >
+ context_type;
// This preprocessor hooks are used to correct the file positions inside
// the tokens returned from the library
correct_token_position<token_type> hooks(argv[1]);
-
+
// The preprocessor iterator shouldn't be constructed directly. It is
// to be generated through a wave::context<> object. This wave:context<>
// object is to be used additionally to initialize and define different
Modified: branches/release/libs/wave/samples/token_statistics/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/token_statistics/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -68,7 +68,7 @@
Position const &pos, boost::wave::language_support language);
~lexer() {}
- boost::wave::cpplexer::lex_token<Position> get();
+ token_type& get(token_type& t);
void set_position(Position const &pos)
{
// set position has to change the file name and line number only
@@ -453,18 +453,18 @@
///////////////////////////////////////////////////////////////////////////////
// get the next token from the input stream
template <typename Iterator, typename Position>
-inline boost::wave::cpplexer::lex_token<Position>
-lexer<Iterator, Position>::get()
+inline boost::wave::cpplexer::lex_token<Position>&
+lexer<Iterator, Position>::get(boost::wave::cpplexer::lex_token<Position>& t)
{
using namespace boost::wave; // to import token ids to this scope
if (at_eof)
- return cpplexer::lex_token<Position>(); // return T_EOI
+ return t = cpplexer::lex_token<Position>(); // return T_EOI
std::string tokval;
token_id id = xlexer.next_token(first, last, tokval);
string_type value = tokval.c_str();
-
+
if ((token_id)(-1) == id)
id = T_EOF; // end of input reached
@@ -486,12 +486,13 @@
at_eof = true;
value.clear();
}
-
+
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- return guards.detect_guard(cpplexer::lex_token<Position>(id, value,
- Position(filename, line, -1)));
+ cpplexer::lex_token<Position> tok(id, value, Position(filename, line, -1));
+ return t = guards.detect_guard(tok);
#else
- return cpplexer::lex_token<Position>(id, value, Position(filename, line, -1));
+ return t = cpplexer::lex_token<Position>(id, value,
+ Position(filename, line, -1));
#endif
}
@@ -513,21 +514,21 @@
xlex_functor(Iterator const &first, Iterator const &last,
Position const &pos, boost::wave::language_support language)
- : lexer(first, last, pos, language)
+ : lexer_(first, last, pos, language)
{}
virtual ~xlex_functor() {}
// get the next token from the input stream
- token_type get() { return lexer.get(); }
- void set_position(Position const &pos) { lexer.set_position(pos); }
+ token_type& get(token_type& t) { return lexer_.get(t); }
+ void set_position(Position const &pos) { lexer_.set_position(pos); }
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
bool has_include_guards(std::string& guard_name) const
- { return lexer.has_include_guards(guard_name); }
+ { return lexer_.has_include_guards(guard_name); }
#endif
private:
- lexer<Iterator, Position> lexer;
+ lexer<Iterator, Position> lexer_;
};
} // namespace lexer
Modified: branches/release/libs/wave/samples/token_statistics/xlex/xpressive_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex/xpressive_lexer.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex/xpressive_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -103,9 +103,9 @@
for (iterator it = regex_list.begin(), end = regex_list.end(); it != end; ++it)
{
namespace xpressive = boost::xpressive;
-
- regex_info const& curr_regex = *it;
-// xpressive::match_results<Iterator> regex_result;
+
+// regex_info const& curr_regex = *it;
+// xpressive::match_results<Iterator> regex_result;
if (xpressive::regex_search(first, last, regex_result, (*it).regex,
xpressive::regex_constants::match_continuous))
{
Modified: branches/release/libs/wave/samples/token_statistics/xlex_interface.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex_interface.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex_interface.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -64,9 +64,9 @@
{
typedef typename wave::cpplexer::lex_input_interface<TokenT>::position_type
position_type;
-
+
~xlex_input_interface() {}
-
+
// The new_lexer function allows the opaque generation of a new lexer object.
// It is coupled to the token type to allow to distinguish different
// lexer/token configurations at compile time.
Modified: branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -18,7 +18,7 @@
#include <boost/assert.hpp>
#include <boost/shared_ptr.hpp>
-#include <boost/spirit/include/classic_multi_pass.hpp>
+#include <boost/spirit/include/support_multi_pass.hpp>
#include <boost/wave/language_support.hpp>
#include <boost/wave/util/file_position.hpp>
@@ -26,6 +26,12 @@
#include "xlex_interface.hpp"
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
+#define BOOST_WAVE_EOF_PREFIX static
+#else
+#define BOOST_WAVE_EOF_PREFIX
+#endif
+
///////////////////////////////////////////////////////////////////////////////
namespace boost {
namespace wave {
@@ -42,36 +48,48 @@
template <typename TokenT>
class xlex_iterator_functor_shim
{
+ typedef typename TokenT::position_type position_type;
+
public:
- template <typename IteratorT>
- xlex_iterator_functor_shim(IteratorT const &first, IteratorT const &last,
- typename TokenT::position_type const &pos,
- boost::wave::language_support language)
- : functor_ptr(xlex_input_interface<TokenT>
- ::new_lexer(first, last, pos, language))
+ xlex_iterator_functor_shim()
+#if /*0 != __DECCXX_VER || */defined(__PGI)
+ : eof()
+#endif // 0 != __DECCXX_VER
{}
-// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// interface to the boost::spirit::classic::iterator_policies::functor_input
// policy
typedef TokenT result_type;
- /*static*/ result_type const eof;
-
- result_type operator()()
+ BOOST_WAVE_EOF_PREFIX result_type const eof;
+ typedef xlex_iterator_functor_shim unique;
+ typedef lex_input_interface<TokenT>* shared;
+
+ template <typename MultiPass>
+ static result_type& get_next(MultiPass& mp, result_type& result)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- return functor_ptr->get();
+ return mp.shared()->ftor->get(result);
}
- void set_position(typename TokenT::position_type const &pos)
+
+ // this will be called whenever the last reference to a multi_pass will
+ // be released
+ template <typename MultiPass>
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared()->ftor;
+ }
+
+ template <typename MultiPass>
+ static void set_position(MultiPass& mp, position_type const &pos)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- functor_ptr->set_position(pos);
+ mp.shared()->ftor->set_position(pos);
}
-
+
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- bool has_include_guards(std::string& guard_name) const
+ template <typename MultiPass>
+ static bool has_include_guards(MultiPass& mp, std::string& guard_name)
{
- return functor_ptr->has_include_guards(guard_name);
+ return mp.shared()->ftor->has_include_guards(guard_name);
}
#endif
@@ -79,12 +97,14 @@
boost::shared_ptr<lex_input_interface<TokenT> > functor_ptr;
};
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
///////////////////////////////////////////////////////////////////////////////
// eof token
-//template <typename TokenT>
-//typename xlex_iterator_functor_shim<TokenT>::result_type const
-// xlex_iterator_functor_shim<TokenT>::eof =
-// typename xlex_iterator_functor_shim<TokenT>::result_type();
+template <typename TokenT>
+typename xlex_iterator_functor_shim<TokenT>::result_type const
+ xlex_iterator_functor_shim<TokenT>::eof =
+ typename xlex_iterator_functor_shim<TokenT>::result_type();
+#endif // 0 != __COMO_VERSION__
///////////////////////////////////////////////////////////////////////////////
} // namespace impl
@@ -110,51 +130,84 @@
//
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+// Divide the given functor type into its components (unique and shared)
+// and build a std::pair from these parts
+template <typename FunctorData>
+struct make_multi_pass
+{
+ typedef
+ std::pair<typename FunctorData::unique, typename FunctorData::shared>
+ functor_data_type;
+ typedef typename FunctorData::result_type result_type;
+
+ typedef boost::spirit::iterator_policies::split_functor_input input_policy;
+ typedef boost::spirit::iterator_policies::ref_counted ownership_policy;
+#if defined(BOOST_WAVE_DEBUG)
+ typedef boost::spirit::iterator_policies::buf_id_check check_policy;
+#else
+ typedef boost::spirit::iterator_policies::no_check check_policy;
+#endif
+ typedef boost::spirit::iterator_policies::split_std_deque storage_policy;
+
+ typedef boost::spirit::iterator_policies::default_policy<
+ ownership_policy, check_policy, input_policy, storage_policy>
+ policy_type;
+ typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
+};
+
+///////////////////////////////////////////////////////////////////////////////
template <typename TokenT>
class xlex_iterator
-: public boost::spirit::classic::multi_pass<
- impl::xlex_iterator_functor_shim<TokenT>,
- boost::wave::util::functor_input
- >
+: public make_multi_pass<impl::xlex_iterator_functor_shim<TokenT> >::type
{
typedef impl::xlex_iterator_functor_shim<TokenT> input_policy_type;
- typedef
- boost::spirit::classic::multi_pass<input_policy_type,
- boost::wave::util::functor_input>
- base_type;
-
+
+ typedef typename make_multi_pass<input_policy_type>::type base_type;
+ typedef typename make_multi_pass<input_policy_type>::functor_data_type
+ functor_data_type;
+
+ typedef typename input_policy_type::unique unique_functor_type;
+ typedef typename input_policy_type::shared shared_functor_type;
+
public:
typedef TokenT token_type;
-
+
xlex_iterator()
{}
-
+
template <typename IteratorT>
xlex_iterator(IteratorT const &first, IteratorT const &last,
typename TokenT::position_type const &pos,
boost::wave::language_support language)
- : base_type(input_policy_type(first, last, pos, language))
+ : base_type(
+ functor_data_type(
+ unique_functor_type(),
+ xlex_input_interface<TokenT>
+ ::new_lexer(first, last, pos, language)
+ )
+ )
{}
void set_position(typename TokenT::position_type const &pos)
{
typedef typename token_type::position_type position_type;
-
+
// set the new position in the current token
- token_type const& currtoken = base_type::get_input();
+ token_type& currtoken = this->base_type::dereference(*this);
position_type currpos = currtoken.get_position();
-
+
currpos.set_file(pos.get_file());
currpos.set_line(pos.get_line());
- base_type::get_input().set_position(currpos);
-
+ currtoken.set_position(currpos);
+
// set the new position for future tokens as well
if (token_type::string_type::npos !=
currtoken.get_value().find_first_of('\n'))
{
currpos.set_line(pos.get_line() + 1);
}
- base_type::get_functor().set_position(currpos);
+ unique_functor_type::set_position(*this, currpos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
@@ -163,9 +216,9 @@
// completely
bool has_include_guards(std::string& guard_name) const
{
- return base_type::get_functor().has_include_guards(guard_name);
+ return unique_functor_type::has_include_guards(*this, guard_name);
}
-#endif
+#endif
};
///////////////////////////////////////////////////////////////////////////////
@@ -174,4 +227,6 @@
} // namespace wave
} // namespace boost
+#undef BOOST_WAVE_EOF_PREFIX
+
#endif // !defined(XLEX_ITERATOR_HPP)
Modified: branches/release/libs/wave/samples/waveidl/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/waveidl/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/waveidl/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -4,7 +4,7 @@
#
# http://www.boost.org/
#
-# Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2001-2009 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)
Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl.re
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl.re (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl.re 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -5,7 +5,7 @@
http://www.boost.org/
- Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+ Copyright (c) 2001-2009 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)
=============================================================================*/
Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_interface.hpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_interface.hpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_interface.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -15,7 +15,7 @@
#include <boost/wave/util/file_position.hpp>
#include <boost/wave/language_support.hpp>
-#include <boost/wave/cpplexer/cpp_lex_interface.hpp>
+#include <boost/wave/cpplexer/cpp_lex_interface_generator.hpp>
///////////////////////////////////////////////////////////////////////////////
namespace boost {
@@ -56,7 +56,7 @@
: cpplexer::lex_input_interface<TokenT>
{
typedef typename cpplexer::lex_input_interface<TokenT>::position_type position_type;
-
+
// The new_lexer function allows the opaque generation of a new lexer object.
// It is coupled to the token type to allow to distinguish different
// lexer/token configurations at compile time.
Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -19,7 +19,7 @@
#include <boost/assert.hpp>
#include <boost/shared_ptr.hpp>
-#include <boost/spirit/include/classic_multi_pass.hpp>
+#include <boost/spirit/include/support_multi_pass.hpp>
#include <boost/wave/language_support.hpp>
#include <boost/wave/util/file_position.hpp>
@@ -27,7 +27,7 @@
#include "idl_lex_interface.hpp"
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
#define BOOST_WAVE_EOF_PREFIX static
#else
#define BOOST_WAVE_EOF_PREFIX
@@ -48,43 +48,54 @@
template <typename TokenT>
class lex_iterator_functor_shim
{
- typedef lex_input_interface_generator<TokenT> lex_input_interface_type;
-
+ typedef typename TokenT::position_type position_type;
+
public:
- template <typename IteratorT>
- lex_iterator_functor_shim(IteratorT const &first, IteratorT const &last,
- typename TokenT::position_type const &pos,
- boost::wave::language_support language)
- : functor_ptr(lex_input_interface_type::new_lexer(first, last, pos, language))
+ lex_iterator_functor_shim()
+#if /*0 != __DECCXX_VER || */defined(__PGI)
+ : eof()
+#endif // 0 != __DECCXX_VER
{}
-// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// interface to the boost::spirit::classic::iterator_policies::functor_input
// policy
typedef TokenT result_type;
BOOST_WAVE_EOF_PREFIX result_type const eof;
-
- result_type operator()()
+ typedef lex_iterator_functor_shim unique;
+ typedef cpplexer::lex_input_interface<TokenT>* shared;
+
+ template <typename MultiPass>
+ static result_type& get_next(MultiPass& mp, result_type& result)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- return functor_ptr->get();
+ return mp.shared()->ftor->get(result);
}
- void set_position(typename TokenT::position_type const &pos)
+
+ // this will be called whenever the last reference to a multi_pass will
+ // be released
+ template <typename MultiPass>
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared()->ftor;
+ }
+
+ template <typename MultiPass>
+ static void set_position(MultiPass& mp, position_type const &pos)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- functor_ptr->set_position(pos);
+ mp.shared()->ftor->set_position(pos);
}
-
+
private:
boost::shared_ptr<cpplexer::lex_input_interface<TokenT> > functor_ptr;
};
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
///////////////////////////////////////////////////////////////////////////////
// eof token
-template <typename LexT>
-typename lex_iterator_functor_shim<LexT>::result_type const
- lex_iterator_functor_shim<LexT>::eof;
+template <typename TokenT>
+typename lex_iterator_functor_shim<TokenT>::result_type const
+ lex_iterator_functor_shim<TokenT>::eof =
+ typename lex_iterator_functor_shim<TokenT>::result_type();
#endif // 0 != __COMO_VERSION__
///////////////////////////////////////////////////////////////////////////////
@@ -109,45 +120,78 @@
//
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+// Divide the given functor type into its components (unique and shared)
+// and build a std::pair from these parts
+template <typename FunctorData>
+struct make_multi_pass
+{
+ typedef
+ std::pair<typename FunctorData::unique, typename FunctorData::shared>
+ functor_data_type;
+ typedef typename FunctorData::result_type result_type;
+
+ typedef boost::spirit::iterator_policies::split_functor_input input_policy;
+ typedef boost::spirit::iterator_policies::ref_counted ownership_policy;
+#if defined(BOOST_WAVE_DEBUG)
+ typedef boost::spirit::iterator_policies::buf_id_check check_policy;
+#else
+ typedef boost::spirit::iterator_policies::no_check check_policy;
+#endif
+ typedef boost::spirit::iterator_policies::split_std_deque storage_policy;
+
+ typedef boost::spirit::iterator_policies::default_policy<
+ ownership_policy, check_policy, input_policy, storage_policy>
+ policy_type;
+ typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
+};
+
+///////////////////////////////////////////////////////////////////////////////
template <typename TokenT>
class lex_iterator
-: public boost::spirit::classic::multi_pass<
- impl::lex_iterator_functor_shim<TokenT>,
- boost::wave::util::functor_input
- >
+: public make_multi_pass<impl::lex_iterator_functor_shim<TokenT> >::type
{
typedef impl::lex_iterator_functor_shim<TokenT> input_policy_type;
- typedef
- boost::spirit::classic::multi_pass<input_policy_type,
- boost::wave::util::functor_input>
- base_type;
- typedef lex_iterator<TokenT> self_type;
-
+
+ typedef typename make_multi_pass<input_policy_type>::type base_type;
+ typedef typename make_multi_pass<input_policy_type>::functor_data_type
+ functor_data_type;
+
+ typedef typename input_policy_type::unique unique_functor_type;
+ typedef typename input_policy_type::shared shared_functor_type;
+
public:
typedef TokenT token_type;
-
+
lex_iterator()
{}
-
+
template <typename IteratorT>
lex_iterator(IteratorT const &first, IteratorT const &last,
typename TokenT::position_type const &pos,
boost::wave::language_support language)
- : base_type(input_policy_type(first, last, pos, language))
+ : base_type(
+ functor_data_type(
+ unique_functor_type(),
+ cpplexer::lex_input_interface_generator<TokenT>
+ ::new_lexer(first, last, pos, language)
+ )
+ )
{}
void set_position(typename TokenT::position_type const &pos)
{
typedef typename TokenT::position_type position_type;
-
+
// set the new position in the current token
- position_type currpos = base_type::get_input().get_position();
+ token_type& currtoken = this->base_type::dereference(*this);
+ position_type currpos = currtoken.get_position();
currpos.set_file(pos.get_file());
currpos.set_line(pos.get_line());
- base_type::get_input().set_position(currpos);
-
+ currtoken.set_position(currpos);
+
// set the new position for future tokens as well
- base_type::get_functor().set_position(pos);
+ unique_functor_type::set_position(*this, currpos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
@@ -161,4 +205,6 @@
} // namespace wave
} // namespace boost
+#undef BOOST_WAVE_EOF_PREFIX
+
#endif // !defined(IDL_LEX_ITERATOR_HPP_7926F865_E02F_4950_9EB5_5F453C9FF953_INCLUDED)
Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_re.cpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_re.cpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_re.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.2 on Thu Oct 09 21:18:08 2008 */
+/* Generated by re2c 0.13.5 on Fri May 22 17:28:34 2009 */
#line 1 "idl.re"
/*=============================================================================
Boost.Wave: A Standard compliant C++ preprocessor library
@@ -439,12 +439,12 @@
yych = *YYCURSOR;
switch (yych) {
case 0x00: goto yy69;
- case 0x09:
- case 0x0B:
- case 0x0C:
+ case '\t':
+ case '\v':
+ case '\f':
case ' ': goto yy64;
- case 0x0A: goto yy66;
- case 0x0D: goto yy68;
+ case '\n': goto yy66;
+ case '\r': goto yy68;
case '!': goto yy45;
case '"': goto yy63;
case '#': goto yy15;
@@ -584,8 +584,8 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'e') {
if (yych <= '"') {
- if (yych <= 0x09) {
- if (yych >= 0x09) goto yy239;
+ if (yych <= '\t') {
+ if (yych >= '\t') goto yy239;
} else {
if (yych == ' ') goto yy239;
}
@@ -848,9 +848,9 @@
yy62:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy121;
- if (yych <= 0x0A) goto yy58;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy121;
+ if (yych <= '\n') goto yy58;
goto yy121;
} else {
if (yych <= 0x1F) goto yy58;
@@ -860,11 +860,11 @@
yy63:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy76;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy76;
goto yy58;
} else {
- if (yych <= 0x0C) goto yy76;
+ if (yych <= '\f') goto yy76;
if (yych <= 0x1F) goto yy58;
goto yy76;
}
@@ -887,7 +887,7 @@
#line 888 "idl_re.cpp"
yy68:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy72;
+ if (yych == '\n') goto yy72;
goto yy67;
yy69:
++YYCURSOR;
@@ -915,7 +915,7 @@
goto yy67;
yy73:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy74:
if (yybm[256+yych] & 2) {
@@ -924,7 +924,7 @@
goto yy65;
yy75:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy76:
if (yybm[256+yych] & 4) {
@@ -987,7 +987,7 @@
}
yy78:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -997,7 +997,7 @@
if (yych <= '[') goto yy91;
yy79:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -1050,7 +1050,7 @@
#line 1051 "idl_re.cpp"
yy82:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1064,7 +1064,7 @@
}
yy83:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1078,7 +1078,7 @@
}
yy84:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1089,7 +1089,7 @@
goto yy79;
yy85:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 8) {
goto yy88;
@@ -1097,14 +1097,14 @@
goto yy77;
yy86:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '"') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy75;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy75;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy75;
+ if (yych <= '\f') goto yy75;
if (yych <= 0x1F) goto yy77;
if (yych <= '!') goto yy75;
goto yy80;
@@ -1120,7 +1120,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1131,17 +1131,17 @@
goto yy79;
yy88:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 8) {
goto yy88;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy75;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy75;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy75;
+ if (yych <= '\f') goto yy75;
if (yych <= 0x1F) goto yy77;
goto yy75;
}
@@ -1157,7 +1157,7 @@
}
yy90:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1167,17 +1167,17 @@
if (yych >= '\\') goto yy79;
yy91:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 16) {
goto yy91;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy75;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy75;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy75;
+ if (yych <= '\f') goto yy75;
if (yych <= 0x1F) goto yy77;
goto yy75;
}
@@ -1192,15 +1192,15 @@
}
yy93:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy93;
}
if (yych <= '7') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1227,12 +1227,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1262,12 +1262,12 @@
}
yy96:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1298,7 +1298,7 @@
yy97:
yyaccept = 6;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1309,7 +1309,7 @@
goto yy79;
yy98:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1318,17 +1318,17 @@
if (yych <= '"') goto yy80;
if (yych >= '\\') goto yy79;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 16) {
goto yy91;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy75;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy75;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy75;
+ if (yych <= '\f') goto yy75;
if (yych <= 0x1F) goto yy77;
goto yy75;
}
@@ -1344,12 +1344,12 @@
}
yy100:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1375,12 +1375,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1406,12 +1406,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1437,12 +1437,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1468,12 +1468,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1499,12 +1499,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1530,7 +1530,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1541,12 +1541,12 @@
goto yy79;
yy107:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1572,12 +1572,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy75;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy75;
+ if (yych <= '\n') goto yy77;
goto yy75;
} else {
if (yych <= '!') {
@@ -1603,7 +1603,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 4) {
goto yy75;
@@ -1614,7 +1614,7 @@
goto yy79;
yy110:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1626,7 +1626,7 @@
}
yy111:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1638,7 +1638,7 @@
}
yy112:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1650,7 +1650,7 @@
}
yy113:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1662,7 +1662,7 @@
}
yy114:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1674,7 +1674,7 @@
}
yy115:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1686,7 +1686,7 @@
}
yy116:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1700,7 +1700,7 @@
}
yy117:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1712,7 +1712,7 @@
}
yy118:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1724,7 +1724,7 @@
}
yy119:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1738,7 +1738,7 @@
}
yy120:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy121:
if (yybm[256+yych] & 64) {
@@ -1749,7 +1749,7 @@
if (yych >= '\\') goto yy123;
yy122:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -1759,7 +1759,7 @@
if (yych <= '[') goto yy135;
yy123:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -1804,7 +1804,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1818,7 +1818,7 @@
}
yy125:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1832,7 +1832,7 @@
}
yy126:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -1843,7 +1843,7 @@
goto yy123;
yy127:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -1857,14 +1857,14 @@
}
yy128:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy120;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy120;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy120;
+ if (yych <= '\f') goto yy120;
if (yych <= 0x1F) goto yy77;
if (yych <= '&') goto yy120;
goto yy130;
@@ -1880,7 +1880,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -1897,12 +1897,12 @@
#line 1898 "idl_re.cpp"
yy132:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -1932,7 +1932,7 @@
}
yy134:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -1942,14 +1942,14 @@
if (yych >= '\\') goto yy123;
yy135:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy120;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy120;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy120;
+ if (yych <= '\f') goto yy120;
if (yych <= 0x1F) goto yy77;
if (yych <= '&') goto yy120;
goto yy130;
@@ -1965,16 +1965,16 @@
}
yy137:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '>') {
if (yych <= 0x1F) {
- if (yych <= 0x09) {
+ if (yych <= '\t') {
if (yych <= 0x08) goto yy77;
goto yy120;
} else {
- if (yych <= 0x0A) goto yy77;
- if (yych <= 0x0C) goto yy120;
+ if (yych <= '\n') goto yy77;
+ if (yych <= '\f') goto yy120;
goto yy77;
}
} else {
@@ -2007,12 +2007,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2042,12 +2042,12 @@
}
yy140:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2078,7 +2078,7 @@
yy141:
yyaccept = 7;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -2089,7 +2089,7 @@
goto yy123;
yy142:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -2098,14 +2098,14 @@
if (yych <= '\'') goto yy130;
if (yych >= '\\') goto yy123;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy120;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy120;
goto yy77;
} else {
- if (yych <= 0x0C) goto yy120;
+ if (yych <= '\f') goto yy120;
if (yych <= 0x1F) goto yy77;
if (yych <= '&') goto yy120;
goto yy130;
@@ -2122,12 +2122,12 @@
}
yy144:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2153,12 +2153,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2184,12 +2184,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2215,12 +2215,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2246,12 +2246,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2277,12 +2277,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2308,7 +2308,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -2319,12 +2319,12 @@
goto yy123;
yy151:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2350,12 +2350,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy120;
- if (yych <= 0x0A) goto yy77;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy120;
+ if (yych <= '\n') goto yy77;
goto yy120;
} else {
if (yych <= '&') {
@@ -2381,7 +2381,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy120;
@@ -2392,7 +2392,7 @@
goto yy123;
yy154:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2404,7 +2404,7 @@
}
yy155:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2416,7 +2416,7 @@
}
yy156:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2428,7 +2428,7 @@
}
yy157:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2440,7 +2440,7 @@
}
yy158:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2452,7 +2452,7 @@
}
yy159:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2464,7 +2464,7 @@
}
yy160:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2478,7 +2478,7 @@
}
yy161:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2490,7 +2490,7 @@
}
yy162:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2502,7 +2502,7 @@
}
yy163:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2874,7 +2874,7 @@
yy201:
yyaccept = 0;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy202:
if (yybm[0+yych] & 2) {
@@ -2884,24 +2884,24 @@
if (yych != '\\') goto yy5;
yy203:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == 'U') goto yy207;
if (yych == 'u') goto yy206;
goto yy77;
yy204:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych != '?') goto yy77;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '/') goto yy203;
goto yy77;
yy206:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2915,7 +2915,7 @@
}
yy207:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2927,7 +2927,7 @@
}
yy208:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2939,7 +2939,7 @@
}
yy209:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2951,7 +2951,7 @@
}
yy210:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2963,7 +2963,7 @@
}
yy211:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2975,7 +2975,7 @@
}
yy212:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2987,7 +2987,7 @@
}
yy213:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -2999,7 +2999,7 @@
}
yy214:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -3013,7 +3013,7 @@
}
yy215:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -3025,7 +3025,7 @@
}
yy216:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -3037,7 +3037,7 @@
}
yy217:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy77;
@@ -3156,7 +3156,7 @@
}
yy240:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy330;
goto yy77;
@@ -3325,8 +3325,8 @@
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if (yych <= '!') {
- if (yych <= 0x09) {
- if (yych >= 0x09) goto yy300;
+ if (yych <= '\t') {
+ if (yych >= '\t') goto yy300;
} else {
if (yych == ' ') goto yy300;
}
@@ -3344,7 +3344,7 @@
#line 3345 "idl_re.cpp"
yy303:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy314;
goto yy77;
@@ -3358,7 +3358,7 @@
goto yy307;
yy306:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy307:
if (yybm[0+yych] & 8) {
@@ -3371,7 +3371,7 @@
#line 3372 "idl_re.cpp"
yy310:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy311:
if (yybm[0+yych] & 16) {
@@ -3384,45 +3384,45 @@
#line 3385 "idl_re.cpp"
yy314:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy314;
}
- if (yych == 0x0D) goto yy316;
+ if (yych == '\r') goto yy316;
if (yych <= ')') goto yy77;
goto yy318;
yy316:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy314;
}
- if (yych == 0x0D) goto yy316;
+ if (yych == '\r') goto yy316;
if (yych <= ')') goto yy77;
yy318:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy318;
}
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy77;
- if (yych <= 0x0C) goto yy314;
+ if (yych <= '\f') goto yy314;
} else {
if (yych <= 0x1F) goto yy77;
if (yych == '/') goto yy300;
goto yy314;
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy314;
}
- if (yych == 0x0D) goto yy316;
+ if (yych == '\r') goto yy316;
if (yych <= ')') goto yy77;
goto yy318;
yy321:
@@ -3449,11 +3449,11 @@
#line 3450 "idl_re.cpp"
yy330:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy77;
- if (yych <= 0x0C) goto yy330;
+ if (yych <= '\f') goto yy330;
} else {
if (yych <= 0x1F) goto yy77;
if (yych == '*') goto yy334;
@@ -3461,11 +3461,11 @@
}
yy332:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy77;
- if (yych <= 0x0C) goto yy330;
+ if (yych <= '\f') goto yy330;
goto yy332;
} else {
if (yych <= 0x1F) goto yy77;
@@ -3473,11 +3473,11 @@
}
yy334:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 0x1F) {
if (yych <= 0x08) goto yy77;
- if (yych <= 0x0C) goto yy330;
+ if (yych <= '\f') goto yy330;
if (yych >= 0x0E) goto yy77;
} else {
if (yych <= '*') {
@@ -3489,11 +3489,11 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy77;
- if (yych <= 0x0C) goto yy330;
+ if (yych <= '\f') goto yy330;
goto yy332;
} else {
if (yych <= 0x1F) goto yy77;
@@ -3585,17 +3585,17 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0C) {
+ if (yych <= '\f') {
if (yych <= 0x08) {
if (yych <= 0x00) goto yy366;
goto yy368;
} else {
- if (yych == 0x0A) goto yy362;
+ if (yych == '\n') goto yy362;
goto yy365;
}
} else {
if (yych <= 0x1F) {
- if (yych <= 0x0D) goto yy364;
+ if (yych <= '\r') goto yy364;
goto yy368;
} else {
if (yych != '*') goto yy365;
@@ -3620,7 +3620,7 @@
#line 3621 "idl_re.cpp"
yy364:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy370;
+ if (yych == '\n') goto yy370;
goto yy363;
yy365:
yych = *++YYCURSOR;
@@ -3685,14 +3685,14 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0A) {
+ if (yych <= '\n') {
if (yych <= 0x00) goto yy381;
if (yych <= 0x08) goto yy375;
- if (yych <= 0x09) goto yy379;
+ if (yych <= '\t') goto yy379;
goto yy376;
} else {
- if (yych <= 0x0C) goto yy379;
- if (yych <= 0x0D) goto yy378;
+ if (yych <= '\f') goto yy379;
+ if (yych <= '\r') goto yy378;
if (yych >= ' ') goto yy379;
}
yy375:
@@ -3709,7 +3709,7 @@
#line 3710 "idl_re.cpp"
yy378:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy383;
+ if (yych == '\n') goto yy383;
goto yy377;
yy379:
++YYCURSOR;
Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -56,7 +56,7 @@
class lexer
{
typedef boost::wave::cpplexer::re2clex::Scanner scanner_t;
-
+
public:
typedef char char_t;
@@ -68,7 +68,7 @@
PositionT const &pos, boost::wave::language_support language);
~lexer();
- boost::wave::cpplexer::lex_token<PositionT> get();
+ token_type& get(token_type& t);
void set_position(PositionT const &pos)
{
// set position has to change the file name and line number only
@@ -82,7 +82,7 @@
private:
static char const *tok_names[];
-
+
scanner_t scanner;
string_type filename;
bool at_eof;
@@ -100,7 +100,7 @@
{
using namespace std; // some systems have memset in std
using namespace boost::wave::cpplexer::re2clex;
-
+
memset(&scanner, '\0', sizeof(scanner_t));
scanner.eol_offsets = aq_create();
scanner.first = scanner.act = (uchar *)&(*first);
@@ -127,17 +127,17 @@
///////////////////////////////////////////////////////////////////////////////
// get the next token from the input stream
template <typename IteratorT, typename PositionT>
-inline boost::wave::cpplexer::lex_token<PositionT>
-lexer<IteratorT, PositionT>::get()
+inline boost::wave::cpplexer::lex_token<PositionT>&
+lexer<IteratorT, PositionT>::get(boost::wave::cpplexer::lex_token<PositionT>& t)
{
using namespace boost::wave; // to import token ids to this scope
if (at_eof)
- return boost::wave::cpplexer::lex_token<PositionT>(); // return T_EOI
+ return t = boost::wave::cpplexer::lex_token<PositionT>(); // return T_EOI
token_id id = token_id(scan(&scanner));
string_type value((char const *)scanner.tok, scanner.cur-scanner.tok);
-
+
if (T_IDENTIFIER == id) {
// test identifier characters for validity (throws if invalid chars found)
if (!boost::wave::need_no_character_validation(language)) {
@@ -158,7 +158,7 @@
at_eof = true;
value.clear();
}
- return boost::wave::cpplexer::lex_token<PositionT>(id, value,
+ return t = boost::wave::cpplexer::lex_token<PositionT>(id, value,
PositionT(filename, scanner.line, -1));
}
@@ -197,7 +197,7 @@
: public lex_input_interface_generator<
typename lexer<IteratorT, PositionT>::token_type
>
-{
+{
public:
typedef typename lexer<IteratorT, PositionT>::token_type token_type;
@@ -207,9 +207,9 @@
: lexer(first, last, pos, language)
{}
virtual ~lex_functor() {}
-
+
// get the next token from the input stream
- token_type get() { return lexer.get(); }
+ token_type& get(token_type& t) { return lexer.get(t); }
void set_position(PositionT const &pos)
{ lexer.set_position(pos); }
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
Modified: branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.cpp
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.cpp (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -162,7 +162,7 @@
{
std::size_t diff, offset;
int skipped = 0;
-
+
/* figure out how many backslash-newlines skipped over unknowingly. */
diff = cursor - s->bot;
offset = get_first_eol_offset(s);
@@ -219,7 +219,7 @@
}
else
printf("Out of memory!\n");
-
+
/* get the scanner to stop */
*cursor = 0;
return cursor;
@@ -346,7 +346,7 @@
aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
}
}
-
+
s->lim += cnt;
if (s->eof) /* eof needs adjusting if we erased backslash-newlines */
{
@@ -364,37 +364,37 @@
uchar_wrapper (uchar *base_cursor, unsigned int column = 1)
: base_cursor(base_cursor), column(column)
{}
-
+
uchar_wrapper& operator++()
{
++base_cursor;
++column;
return *this;
}
-
+
uchar_wrapper& operator--()
{
--base_cursor;
--column;
return *this;
}
-
+
uchar operator* () const
{
return *base_cursor;
}
-
+
operator uchar *() const
{
return base_cursor;
}
-
+
friend std::ptrdiff_t
operator- (uchar_wrapper const& lhs, uchar_wrapper const& rhs)
{
return lhs.base_cursor - rhs.base_cursor;
}
-
+
uchar *base_cursor;
unsigned int column;
};
@@ -403,7 +403,7 @@
boost::wave::token_id scan(Scanner *s)
{
BOOST_ASSERT(0 != s->error_proc); // error handler must be given
-
+
uchar_wrapper cursor (s->tok = s->cur, s->column = s->curr_column);
uchar_wrapper marker (s->ptr);
uchar_wrapper limit (s->lim);
Modified: branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.2 on Fri Apr 04 14:19:15 2008 */
+/* Generated by re2c 0.13.5 on Fri May 22 14:32:01 2009 */
#line 1 "cpp.re"
/*=============================================================================
Boost.Wave: A Standard compliant C++ preprocessor library
@@ -124,11 +124,11 @@
case 0x1D:
case 0x1E:
case 0x1F: goto yy91;
- case 0x09:
- case 0x0B:
- case 0x0C: goto yy82;
- case 0x0A: goto yy85;
- case 0x0D: goto yy87;
+ case '\t':
+ case '\v':
+ case '\f': goto yy82;
+ case '\n': goto yy85;
+ case '\r': goto yy87;
case ' ': goto yy84;
case '!': goto yy68;
case '"': goto yy81;
@@ -503,10 +503,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'c') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -675,9 +675,9 @@
yy80:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy142;
- if (yych <= 0x0A) goto yy79;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy142;
+ if (yych <= '\n') goto yy79;
goto yy142;
} else {
if (yych <= 0x1F) goto yy79;
@@ -687,11 +687,11 @@
yy81:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy97;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy97;
goto yy79;
} else {
- if (yych <= 0x0C) goto yy97;
+ if (yych <= '\f') goto yy97;
if (yych <= 0x1F) goto yy79;
goto yy97;
}
@@ -718,7 +718,7 @@
#line 719 "cpp_re.inc"
yy87:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy93;
+ if (yych == '\n') goto yy93;
goto yy86;
yy88:
++YYCURSOR;
@@ -751,7 +751,7 @@
goto yy86;
yy94:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy95:
if (yybm[256+yych] & 16) {
@@ -760,7 +760,7 @@
goto yy83;
yy96:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy97:
if (yybm[256+yych] & 32) {
@@ -1187,7 +1187,7 @@
}
yy99:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1197,7 +1197,7 @@
if (yych <= '[') goto yy112;
yy100:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -1250,7 +1250,7 @@
#line 1251 "cpp_re.inc"
yy103:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1264,7 +1264,7 @@
}
yy104:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1278,7 +1278,7 @@
}
yy105:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1289,7 +1289,7 @@
goto yy100;
yy106:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy109;
@@ -1297,14 +1297,14 @@
goto yy98;
yy107:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '"') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
if (yych <= '!') goto yy96;
goto yy101;
@@ -1320,7 +1320,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1331,17 +1331,17 @@
goto yy100;
yy109:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy109;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1357,7 +1357,7 @@
}
yy111:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1367,17 +1367,17 @@
if (yych >= '\\') goto yy100;
yy112:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 128) {
goto yy112;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1392,15 +1392,15 @@
}
yy114:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 1) {
goto yy114;
}
if (yych <= '7') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1427,12 +1427,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1462,12 +1462,12 @@
}
yy117:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1498,7 +1498,7 @@
yy118:
yyaccept = 6;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1509,7 +1509,7 @@
goto yy100;
yy119:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1518,17 +1518,17 @@
if (yych <= '"') goto yy101;
if (yych >= '\\') goto yy100;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 128) {
goto yy112;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1544,12 +1544,12 @@
}
yy121:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1575,12 +1575,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1606,12 +1606,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1637,12 +1637,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1668,12 +1668,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1699,12 +1699,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1730,7 +1730,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1741,12 +1741,12 @@
goto yy100;
yy128:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1772,12 +1772,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1803,7 +1803,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1814,7 +1814,7 @@
goto yy100;
yy131:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1826,7 +1826,7 @@
}
yy132:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1838,7 +1838,7 @@
}
yy133:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1850,7 +1850,7 @@
}
yy134:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1862,7 +1862,7 @@
}
yy135:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1874,7 +1874,7 @@
}
yy136:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1886,7 +1886,7 @@
}
yy137:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1900,7 +1900,7 @@
}
yy138:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1912,7 +1912,7 @@
}
yy139:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1924,7 +1924,7 @@
}
yy140:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1938,7 +1938,7 @@
}
yy141:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy142:
if (yybm[0+yych] & 2) {
@@ -1949,7 +1949,7 @@
if (yych >= '\\') goto yy144;
yy143:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -1959,7 +1959,7 @@
if (yych <= '[') goto yy156;
yy144:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -2004,7 +2004,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2018,7 +2018,7 @@
}
yy146:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2032,7 +2032,7 @@
}
yy147:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2043,7 +2043,7 @@
goto yy144;
yy148:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2057,14 +2057,14 @@
}
yy149:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2080,7 +2080,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2097,12 +2097,12 @@
#line 2098 "cpp_re.inc"
yy153:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2132,7 +2132,7 @@
}
yy155:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2142,14 +2142,14 @@
if (yych >= '\\') goto yy144;
yy156:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2165,16 +2165,16 @@
}
yy158:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '>') {
if (yych <= 0x1F) {
- if (yych <= 0x09) {
+ if (yych <= '\t') {
if (yych <= 0x08) goto yy98;
goto yy141;
} else {
- if (yych <= 0x0A) goto yy98;
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\n') goto yy98;
+ if (yych <= '\f') goto yy141;
goto yy98;
}
} else {
@@ -2207,12 +2207,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2242,12 +2242,12 @@
}
yy161:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2278,7 +2278,7 @@
yy162:
yyaccept = 7;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2289,7 +2289,7 @@
goto yy144;
yy163:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2298,14 +2298,14 @@
if (yych <= '\'') goto yy151;
if (yych >= '\\') goto yy144;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2322,12 +2322,12 @@
}
yy165:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2353,12 +2353,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2384,12 +2384,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2415,12 +2415,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2446,12 +2446,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2477,12 +2477,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2508,7 +2508,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2519,12 +2519,12 @@
goto yy144;
yy172:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2550,12 +2550,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2581,7 +2581,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2592,7 +2592,7 @@
goto yy144;
yy175:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2604,7 +2604,7 @@
}
yy176:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2616,7 +2616,7 @@
}
yy177:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2628,7 +2628,7 @@
}
yy178:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2640,7 +2640,7 @@
}
yy179:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2652,7 +2652,7 @@
}
yy180:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2664,7 +2664,7 @@
}
yy181:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2678,7 +2678,7 @@
}
yy182:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2690,7 +2690,7 @@
}
yy183:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2702,7 +2702,7 @@
}
yy184:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2809,7 +2809,7 @@
yy194:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy195:
if (yybm[0+yych] & 4) {
@@ -2819,24 +2819,24 @@
if (yych != '\\') goto yy9;
yy196:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == 'U') goto yy200;
if (yych == 'u') goto yy199;
goto yy98;
yy197:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych != '?') goto yy98;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '/') goto yy196;
goto yy98;
yy199:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2850,7 +2850,7 @@
}
yy200:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2862,7 +2862,7 @@
}
yy201:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2874,7 +2874,7 @@
}
yy202:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2886,7 +2886,7 @@
}
yy203:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2898,7 +2898,7 @@
}
yy204:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2910,7 +2910,7 @@
}
yy205:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2922,7 +2922,7 @@
}
yy206:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2934,7 +2934,7 @@
}
yy207:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2948,7 +2948,7 @@
}
yy208:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2960,7 +2960,7 @@
}
yy209:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2972,7 +2972,7 @@
}
yy210:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -3178,11 +3178,11 @@
yy261:
if (yych <= 'h') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy260;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy260;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy260;
+ if (yych <= '\f') goto yy260;
if (yych <= 0x1F) goto yy98;
goto yy260;
}
@@ -3217,7 +3217,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy377;
goto yy98;
@@ -3339,11 +3339,11 @@
yych = *YYCURSOR;
yy297:
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy296;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy296;
goto yy294;
} else {
- if (yych <= 0x0C) goto yy296;
+ if (yych <= '\f') goto yy296;
if (yych <= 0x1F) goto yy294;
goto yy296;
}
@@ -3359,7 +3359,7 @@
}
yy298:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy309;
goto yy98;
@@ -3373,7 +3373,7 @@
goto yy302;
yy301:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy302:
if (yybm[0+yych] & 8) {
@@ -3386,7 +3386,7 @@
#line 3387 "cpp_re.inc"
yy305:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy306:
if (yybm[0+yych] & 16) {
@@ -3399,45 +3399,45 @@
#line 3400 "cpp_re.inc"
yy309:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
goto yy313;
yy311:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
yy313:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy313;
}
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy309;
+ if (yych <= '\f') goto yy309;
} else {
if (yych <= 0x1F) goto yy98;
if (yych == '/') goto yy296;
goto yy309;
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
goto yy313;
yy316:
@@ -3589,11 +3589,11 @@
#line 3590 "cpp_re.inc"
yy377:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
} else {
if (yych <= 0x1F) goto yy98;
if (yych == '*') goto yy381;
@@ -3601,11 +3601,11 @@
}
yy379:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
goto yy379;
} else {
if (yych <= 0x1F) goto yy98;
@@ -3613,11 +3613,11 @@
}
yy381:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 0x1F) {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
if (yych >= 0x0E) goto yy98;
} else {
if (yych <= '*') {
@@ -3629,11 +3629,11 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
goto yy379;
} else {
if (yych <= 0x1F) goto yy98;
@@ -3663,10 +3663,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'e') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -3780,10 +3780,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'c') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -6135,17 +6135,17 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0C) {
+ if (yych <= '\f') {
if (yych <= 0x08) {
if (yych <= 0x00) goto yy933;
goto yy935;
} else {
- if (yych == 0x0A) goto yy928;
+ if (yych == '\n') goto yy928;
goto yy931;
}
} else {
if (yych <= 0x1F) {
- if (yych <= 0x0D) goto yy930;
+ if (yych <= '\r') goto yy930;
goto yy935;
} else {
if (yych != '*') goto yy932;
@@ -6171,7 +6171,7 @@
#line 6172 "cpp_re.inc"
yy930:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy937;
+ if (yych == '\n') goto yy937;
goto yy929;
yy931:
yych = *++YYCURSOR;
@@ -6227,13 +6227,13 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0A) {
+ if (yych <= '\n') {
if (yych <= 0x00) goto yy948;
if (yych <= 0x08) goto yy950;
- if (yych <= 0x09) goto yy945;
+ if (yych <= '\t') goto yy945;
} else {
- if (yych <= 0x0C) goto yy945;
- if (yych <= 0x0D) goto yy944;
+ if (yych <= '\f') goto yy945;
+ if (yych <= '\r') goto yy944;
if (yych <= 0x1F) goto yy950;
goto yy947;
}
@@ -6250,7 +6250,7 @@
#line 6251 "cpp_re.inc"
yy944:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy952;
+ if (yych == '\n') goto yy952;
goto yy943;
yy945:
++YYCURSOR;
@@ -6361,7 +6361,7 @@
if (yych >= ':') goto yy955;
yy957:
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 64) {
goto yy957;
@@ -6382,7 +6382,7 @@
#line 6383 "cpp_re.inc"
yy960:
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy960;
@@ -6424,24 +6424,24 @@
}
yy962:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == 'U') goto yy966;
if (yych == 'u') goto yy965;
goto yy955;
yy963:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych != '?') goto yy955;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '/') goto yy962;
goto yy955;
yy965:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6455,7 +6455,7 @@
}
yy966:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6467,7 +6467,7 @@
}
yy967:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6479,7 +6479,7 @@
}
yy968:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6491,7 +6491,7 @@
}
yy969:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6503,7 +6503,7 @@
}
yy970:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6515,7 +6515,7 @@
}
yy971:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6527,7 +6527,7 @@
}
yy972:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6539,7 +6539,7 @@
}
yy973:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6553,7 +6553,7 @@
}
yy974:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6565,7 +6565,7 @@
}
yy975:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6577,7 +6577,7 @@
}
yy976:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6850,7 +6850,7 @@
}
yy1004:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy1004;
Modified: branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.2 on Fri Apr 04 14:19:15 2008 */
+/* Generated by re2c 0.13.5 on Fri May 22 14:32:21 2009 */
#line 1 "strict_cpp.re"
/*=============================================================================
Boost.Wave: A Standard compliant C++ preprocessor library
@@ -124,11 +124,11 @@
case 0x1D:
case 0x1E:
case 0x1F: goto yy91;
- case 0x09:
- case 0x0B:
- case 0x0C: goto yy82;
- case 0x0A: goto yy85;
- case 0x0D: goto yy87;
+ case '\t':
+ case '\v':
+ case '\f': goto yy82;
+ case '\n': goto yy85;
+ case '\r': goto yy87;
case ' ': goto yy84;
case '!': goto yy68;
case '"': goto yy81;
@@ -502,10 +502,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'c') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -674,9 +674,9 @@
yy80:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy142;
- if (yych <= 0x0A) goto yy79;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy142;
+ if (yych <= '\n') goto yy79;
goto yy142;
} else {
if (yych <= 0x1F) goto yy79;
@@ -686,11 +686,11 @@
yy81:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy97;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy97;
goto yy79;
} else {
- if (yych <= 0x0C) goto yy97;
+ if (yych <= '\f') goto yy97;
if (yych <= 0x1F) goto yy79;
goto yy97;
}
@@ -717,7 +717,7 @@
#line 718 "strict_cpp_re.inc"
yy87:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy93;
+ if (yych == '\n') goto yy93;
goto yy86;
yy88:
++YYCURSOR;
@@ -750,7 +750,7 @@
goto yy86;
yy94:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy95:
if (yybm[256+yych] & 16) {
@@ -759,7 +759,7 @@
goto yy83;
yy96:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy97:
if (yybm[256+yych] & 32) {
@@ -1186,7 +1186,7 @@
}
yy99:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1196,7 +1196,7 @@
if (yych <= '[') goto yy112;
yy100:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -1249,7 +1249,7 @@
#line 1250 "strict_cpp_re.inc"
yy103:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1263,7 +1263,7 @@
}
yy104:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1277,7 +1277,7 @@
}
yy105:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1288,7 +1288,7 @@
goto yy100;
yy106:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy109;
@@ -1296,14 +1296,14 @@
goto yy98;
yy107:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '"') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
if (yych <= '!') goto yy96;
goto yy101;
@@ -1319,7 +1319,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1330,17 +1330,17 @@
goto yy100;
yy109:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 64) {
goto yy109;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1356,7 +1356,7 @@
}
yy111:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1366,17 +1366,17 @@
if (yych >= '\\') goto yy100;
yy112:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 128) {
goto yy112;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1391,15 +1391,15 @@
}
yy114:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 1) {
goto yy114;
}
if (yych <= '7') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1426,12 +1426,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1461,12 +1461,12 @@
}
yy117:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1497,7 +1497,7 @@
yy118:
yyaccept = 6;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1508,7 +1508,7 @@
goto yy100;
yy119:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1517,17 +1517,17 @@
if (yych <= '"') goto yy101;
if (yych >= '\\') goto yy100;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 128) {
goto yy112;
}
if (yych <= '!') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy96;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy96;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy96;
+ if (yych <= '\f') goto yy96;
if (yych <= 0x1F) goto yy98;
goto yy96;
}
@@ -1543,12 +1543,12 @@
}
yy121:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1574,12 +1574,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1605,12 +1605,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1636,12 +1636,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1667,12 +1667,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1698,12 +1698,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1729,7 +1729,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1740,12 +1740,12 @@
goto yy100;
yy128:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1771,12 +1771,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy96;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy96;
+ if (yych <= '\n') goto yy98;
goto yy96;
} else {
if (yych <= '!') {
@@ -1802,7 +1802,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[256+yych] & 32) {
goto yy96;
@@ -1813,7 +1813,7 @@
goto yy100;
yy131:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1825,7 +1825,7 @@
}
yy132:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1837,7 +1837,7 @@
}
yy133:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1849,7 +1849,7 @@
}
yy134:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1861,7 +1861,7 @@
}
yy135:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1873,7 +1873,7 @@
}
yy136:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1885,7 +1885,7 @@
}
yy137:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1899,7 +1899,7 @@
}
yy138:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1911,7 +1911,7 @@
}
yy139:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1923,7 +1923,7 @@
}
yy140:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -1937,7 +1937,7 @@
}
yy141:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy142:
if (yybm[0+yych] & 2) {
@@ -1948,7 +1948,7 @@
if (yych >= '\\') goto yy144;
yy143:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -1958,7 +1958,7 @@
if (yych <= '[') goto yy156;
yy144:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '7') {
@@ -2003,7 +2003,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2017,7 +2017,7 @@
}
yy146:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2031,7 +2031,7 @@
}
yy147:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2042,7 +2042,7 @@
goto yy144;
yy148:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2056,14 +2056,14 @@
}
yy149:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2079,7 +2079,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2096,12 +2096,12 @@
#line 2097 "strict_cpp_re.inc"
yy153:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2131,7 +2131,7 @@
}
yy155:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2141,14 +2141,14 @@
if (yych >= '\\') goto yy144;
yy156:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2164,16 +2164,16 @@
}
yy158:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '>') {
if (yych <= 0x1F) {
- if (yych <= 0x09) {
+ if (yych <= '\t') {
if (yych <= 0x08) goto yy98;
goto yy141;
} else {
- if (yych <= 0x0A) goto yy98;
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\n') goto yy98;
+ if (yych <= '\f') goto yy141;
goto yy98;
}
} else {
@@ -2206,12 +2206,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2241,12 +2241,12 @@
}
yy161:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2277,7 +2277,7 @@
yy162:
yyaccept = 7;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2288,7 +2288,7 @@
goto yy144;
yy163:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2297,14 +2297,14 @@
if (yych <= '\'') goto yy151;
if (yych >= '\\') goto yy144;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\'') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy141;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy141;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy141;
+ if (yych <= '\f') goto yy141;
if (yych <= 0x1F) goto yy98;
if (yych <= '&') goto yy141;
goto yy151;
@@ -2321,12 +2321,12 @@
}
yy165:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2352,12 +2352,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2383,12 +2383,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2414,12 +2414,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2445,12 +2445,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2476,12 +2476,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2507,7 +2507,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2518,12 +2518,12 @@
goto yy144;
yy172:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2549,12 +2549,12 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '9') {
- if (yych <= 0x0C) {
- if (yych == 0x09) goto yy141;
- if (yych <= 0x0A) goto yy98;
+ if (yych <= '\f') {
+ if (yych == '\t') goto yy141;
+ if (yych <= '\n') goto yy98;
goto yy141;
} else {
if (yych <= '&') {
@@ -2580,7 +2580,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 2) {
goto yy141;
@@ -2591,7 +2591,7 @@
goto yy144;
yy175:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2603,7 +2603,7 @@
}
yy176:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2615,7 +2615,7 @@
}
yy177:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2627,7 +2627,7 @@
}
yy178:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2639,7 +2639,7 @@
}
yy179:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2651,7 +2651,7 @@
}
yy180:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2663,7 +2663,7 @@
}
yy181:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2677,7 +2677,7 @@
}
yy182:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2689,7 +2689,7 @@
}
yy183:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2701,7 +2701,7 @@
}
yy184:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2808,7 +2808,7 @@
yy194:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy195:
if (yybm[0+yych] & 4) {
@@ -2818,24 +2818,24 @@
if (yych != '\\') goto yy9;
yy196:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == 'U') goto yy200;
if (yych == 'u') goto yy199;
goto yy98;
yy197:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych != '?') goto yy98;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '/') goto yy196;
goto yy98;
yy199:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2849,7 +2849,7 @@
}
yy200:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2861,7 +2861,7 @@
}
yy201:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2873,7 +2873,7 @@
}
yy202:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2885,7 +2885,7 @@
}
yy203:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2897,7 +2897,7 @@
}
yy204:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2909,7 +2909,7 @@
}
yy205:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2921,7 +2921,7 @@
}
yy206:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2933,7 +2933,7 @@
}
yy207:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2947,7 +2947,7 @@
}
yy208:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2959,7 +2959,7 @@
}
yy209:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -2971,7 +2971,7 @@
}
yy210:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy98;
@@ -3177,11 +3177,11 @@
yy261:
if (yych <= 'h') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy260;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy260;
goto yy98;
} else {
- if (yych <= 0x0C) goto yy260;
+ if (yych <= '\f') goto yy260;
if (yych <= 0x1F) goto yy98;
goto yy260;
}
@@ -3216,7 +3216,7 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy377;
goto yy98;
@@ -3338,11 +3338,11 @@
yych = *YYCURSOR;
yy297:
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy296;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy296;
goto yy294;
} else {
- if (yych <= 0x0C) goto yy296;
+ if (yych <= '\f') goto yy296;
if (yych <= 0x1F) goto yy294;
goto yy296;
}
@@ -3358,7 +3358,7 @@
}
yy298:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '*') goto yy309;
goto yy98;
@@ -3372,7 +3372,7 @@
goto yy302;
yy301:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy302:
if (yybm[0+yych] & 8) {
@@ -3385,7 +3385,7 @@
#line 3386 "strict_cpp_re.inc"
yy305:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy306:
if (yybm[0+yych] & 16) {
@@ -3398,45 +3398,45 @@
#line 3399 "strict_cpp_re.inc"
yy309:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
goto yy313;
yy311:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
yy313:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy313;
}
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy309;
+ if (yych <= '\f') goto yy309;
} else {
if (yych <= 0x1F) goto yy98;
if (yych == '/') goto yy296;
goto yy309;
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
goto yy309;
}
- if (yych == 0x0D) goto yy311;
+ if (yych == '\r') goto yy311;
if (yych <= ')') goto yy98;
goto yy313;
yy316:
@@ -3588,11 +3588,11 @@
#line 3589 "strict_cpp_re.inc"
yy377:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
} else {
if (yych <= 0x1F) goto yy98;
if (yych == '*') goto yy381;
@@ -3600,11 +3600,11 @@
}
yy379:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
goto yy379;
} else {
if (yych <= 0x1F) goto yy98;
@@ -3612,11 +3612,11 @@
}
yy381:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 0x1F) {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
if (yych >= 0x0E) goto yy98;
} else {
if (yych <= '*') {
@@ -3628,11 +3628,11 @@
}
}
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if (yych <= 0x0D) {
+ if (yych <= '\r') {
if (yych <= 0x08) goto yy98;
- if (yych <= 0x0C) goto yy377;
+ if (yych <= '\f') goto yy377;
goto yy379;
} else {
if (yych <= 0x1F) goto yy98;
@@ -3662,10 +3662,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'e') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -3779,10 +3779,10 @@
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'c') {
if (yych <= ' ') {
- if (yych <= 0x0A) {
- if (yych == 0x09) goto yy261;
+ if (yych <= '\n') {
+ if (yych == '\t') goto yy261;
} else {
- if (yych <= 0x0C) goto yy261;
+ if (yych <= '\f') goto yy261;
if (yych >= ' ') goto yy261;
}
} else {
@@ -6131,17 +6131,17 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0C) {
+ if (yych <= '\f') {
if (yych <= 0x08) {
if (yych <= 0x00) goto yy933;
goto yy935;
} else {
- if (yych == 0x0A) goto yy928;
+ if (yych == '\n') goto yy928;
goto yy931;
}
} else {
if (yych <= 0x1F) {
- if (yych <= 0x0D) goto yy930;
+ if (yych <= '\r') goto yy930;
goto yy935;
} else {
if (yych != '*') goto yy932;
@@ -6167,7 +6167,7 @@
#line 6168 "strict_cpp_re.inc"
yy930:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy937;
+ if (yych == '\n') goto yy937;
goto yy929;
yy931:
yych = *++YYCURSOR;
@@ -6223,13 +6223,13 @@
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if (yych <= 0x0A) {
+ if (yych <= '\n') {
if (yych <= 0x00) goto yy948;
if (yych <= 0x08) goto yy950;
- if (yych <= 0x09) goto yy945;
+ if (yych <= '\t') goto yy945;
} else {
- if (yych <= 0x0C) goto yy945;
- if (yych <= 0x0D) goto yy944;
+ if (yych <= '\f') goto yy945;
+ if (yych <= '\r') goto yy944;
if (yych <= 0x1F) goto yy950;
goto yy947;
}
@@ -6246,7 +6246,7 @@
#line 6247 "strict_cpp_re.inc"
yy944:
yych = *++YYCURSOR;
- if (yych == 0x0A) goto yy952;
+ if (yych == '\n') goto yy952;
goto yy943;
yy945:
++YYCURSOR;
@@ -6357,7 +6357,7 @@
if (yych >= ':') goto yy955;
yy957:
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 64) {
goto yy957;
@@ -6378,7 +6378,7 @@
#line 6379 "strict_cpp_re.inc"
yy960:
YYMARKER = ++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy960;
@@ -6412,24 +6412,24 @@
}
yy962:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == 'U') goto yy966;
if (yych == 'u') goto yy965;
goto yy955;
yy963:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych != '?') goto yy955;
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych == '/') goto yy962;
goto yy955;
yy965:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6443,7 +6443,7 @@
}
yy966:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6455,7 +6455,7 @@
}
yy967:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6467,7 +6467,7 @@
}
yy968:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6479,7 +6479,7 @@
}
yy969:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6491,7 +6491,7 @@
}
yy970:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6503,7 +6503,7 @@
}
yy971:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6515,7 +6515,7 @@
}
yy972:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6527,7 +6527,7 @@
}
yy973:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6541,7 +6541,7 @@
}
yy974:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6553,7 +6553,7 @@
}
yy975:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6565,7 +6565,7 @@
}
yy976:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy955;
@@ -6838,7 +6838,7 @@
}
yy1004:
++YYCURSOR;
- if (YYLIMIT == YYCURSOR) YYFILL(1);
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy1004;
Modified: branches/release/libs/wave/test/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/test/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/test/build/Jamfile.v2 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -29,6 +29,7 @@
#
TESTWAVE_ARGUMENTS =
-d4 # use -d4 for verbose results
+ --hooks=1 # test hooks as well
-S$(TESTWAVE_DIR)
-S$(BOOST_ROOT) -I$(BOOST_ROOT)
;
Modified: branches/release/libs/wave/test/testwave/testwave.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testwave.cpp (original)
+++ branches/release/libs/wave/test/testwave/testwave.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -167,12 +167,12 @@
if (cvm.count("input")) {
std::vector<std::string> const &infiles =
cvm["input"].as<std::vector<std::string> >();
-
+
if (9 == app.get_debuglevel()) {
std::cerr << "found " << (unsigned)infiles.size()
<< " entries" << std::endl;
}
-
+
std::vector<std::string>::const_iterator iend = infiles.end();
for (std::vector<std::string>::const_iterator iit = infiles.begin();
iit != iend; ++iit)
@@ -184,14 +184,14 @@
fs::path filepath =
boost::wave::util::branch_path(cfgpath) /
boost::wave::util::create_path(*iit);
-
+
if (9 == app.get_debuglevel()) {
std::cerr << std::string(79, '-') << std::endl;
std::cerr << "executing test: "
<< boost::wave::util::native_file_string(filepath)
<< std::endl;
}
-
+
// execute this unit test case
if (!app.test_a_file(
boost::wave::util::native_file_string(filepath)))
@@ -209,7 +209,7 @@
<< std::endl;
}
++input_count;
-
+
if (9 == app.get_debuglevel()) {
std::cerr << std::string(79, '-') << std::endl;
}
@@ -244,7 +244,7 @@
<< boost::wave::util::native_file_string(filepath)
<< std::endl;
}
-
+
if (!app.test_a_file(boost::wave::util::native_file_string(filepath)))
{
if (9 == app.get_debuglevel()) {
Modified: branches/release/libs/wave/test/testwave/testwave_app.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testwave_app.cpp (original)
+++ branches/release/libs/wave/test/testwave/testwave_app.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -53,8 +53,8 @@
std::string &result)
{
typedef typename Iterator::value_type token_type;
-
- token_type tok = *it++;
+
+ token_type tok = *it++;
result = result + tok.get_value().c_str();
return (it == end) ? false : true;
}
@@ -64,7 +64,7 @@
String const& handle_quoted_filepath(String &name)
{
using boost::wave::util::impl::unescape_lit;
-
+
String unesc_name = unescape_lit(name.substr(1, name.size()-2));
fs::path p (boost::wave::util::create_path(unesc_name.c_str()));
@@ -79,7 +79,7 @@
{
typedef typename Iterator::value_type token_type;
typedef typename token_type::string_type string_type;
-
+
if (!handle_next_token(it, end, result) || // #line
!handle_next_token(it, end, result) || // whitespace
!handle_next_token(it, end, result) || // number
@@ -87,7 +87,7 @@
{
return false;
}
-
+
using boost::wave::util::impl::unescape_lit;
token_type filename = *it;
@@ -133,11 +133,11 @@
std::string const& result, std::string& expected)
{
using boost::wave::util::impl::escape_lit;
-
+
std::string full_result;
std::string::size_type pos = 0;
std::string::size_type pos1 = expected.find_first_of("$");
-
+
if (pos1 != std::string::npos) {
do {
switch(expected[pos1+1]) {
@@ -168,7 +168,7 @@
}
}
break;
-
+
case 'F': // insert base file name
full_result = full_result +
expected.substr(pos, pos1-pos) + escape_lit(filename);
@@ -183,7 +183,7 @@
boost::wave::util::create_path(filename),
boost::wave::util::current_path())
);
-
+
if ('(' == expected[pos1+2]) {
// the $P(basename) syntax is used
std::size_t p = expected.find_first_of(")", pos1+1);
@@ -224,7 +224,7 @@
}
}
break;
-
+
case 'V': // insert Boost version
full_result = full_result +
expected.substr(pos, pos1-pos) + BOOST_LIB_VERSION;
@@ -244,7 +244,7 @@
else {
full_result = expected;
}
-
+
expected = full_result;
return full_result == result;
}
Modified: branches/release/tools/wave/cpp.cpp
==============================================================================
--- branches/release/tools/wave/cpp.cpp (original)
+++ branches/release/tools/wave/cpp.cpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -468,7 +468,7 @@
using namespace boost::serialization;
iarchive ia(ifs);
std::string version;
-
+
ia >> make_nvp("version", version); // load version
if (version == CPP_VERSION_FULL_STR)
ia >> make_nvp("state", ctx); // load the internal tables from disc
@@ -599,6 +599,42 @@
return true;
}
+ ///////////////////////////////////////////////////////////////////////////
+ // list macro invocation counts
+ bool list_macro_counts(context_type const& ctx, std::string filename)
+ {
+ // open file for macro invocation count listing
+ std::ofstream macrocounts_out;
+ fs::path macrocounts_file (boost::wave::util::create_path(filename));
+
+ if (macrocounts_file != "-") {
+ macrocounts_file = fs::complete(macrocounts_file);
+ fs::create_directories(boost::wave::util::branch_path(macrocounts_file));
+ macrocounts_out.open(macrocounts_file.string().c_str());
+ if (!macrocounts_out.is_open()) {
+ cerr << "wave: could not open file for macro invocation count listing: "
+ << macrocounts_file.string() << endl;
+ return false;
+ }
+ }
+ else {
+ macrocounts_out.copyfmt(cout);
+ macrocounts_out.clear(cout.rdstate());
+ static_cast<std::basic_ios<char> &>(macrocounts_out).rdbuf(cout.rdbuf());
+ }
+
+ // list all expanded macro names and their counts in alphabetical order
+ std::map<std::string, std::size_t> const& counts =
+ ctx.get_hooks().get_macro_counts();
+
+ typedef std::map<std::string, std::size_t>::const_iterator iterator;
+ iterator end = counts.end();
+ for (iterator it = counts.begin(); it != end; ++it)
+ macrocounts_out << (*it).first << "," << (*it).second << std::endl;
+
+ return true;
+ }
+
///////////////////////////////////////////////////////////////////////////////
} // anonymous namespace
@@ -636,14 +672,14 @@
std::ofstream output;
std::ofstream traceout;
std::ofstream includelistout;
-
+
trace_flags enable_trace = trace_nothing;
-
+
if (vm.count("traceto")) {
// try to open the file, where to put the trace output
fs::path trace_file (boost::wave::util::create_path(
vm["traceto"].as<std::string>()));
-
+
if (trace_file != "-") {
fs::create_directories(boost::wave::util::branch_path(trace_file));
traceout.open(trace_file.string().c_str());
@@ -667,7 +703,7 @@
// try to open the file, where to put the include list
fs::path includes_file(boost::wave::util::create_path(
vm["listincludes"].as<std::string>()));
-
+
if (includes_file != "-") {
fs::create_directories(boost::wave::util::branch_path(includes_file));
includelistout.open(includes_file.string().c_str());
@@ -677,7 +713,7 @@
return -1;
}
}
- enable_trace = trace_includes;
+ enable_trace = trace_flags(enable_trace | trace_includes);
}
if ((enable_trace & trace_includes) && !includelistout.is_open()) {
// by default list included names to std::cout
@@ -686,14 +722,14 @@
static_cast<std::basic_ios<char> &>(includelistout).
rdbuf(cout.rdbuf());
}
-
+
// enable preserving comments mode
bool preserve_comments = false;
bool preserve_whitespace = false;
-
+
if (vm.count("preserve")) {
int preserve = vm["preserve"].as<int>();
-
+
switch(preserve) {
case 0: break;
case 2:
@@ -702,7 +738,7 @@
case 1:
preserve_comments = true;
break;
-
+
default:
cerr << "wave: bogus preserve whitespace option value: "
<< preserve << ", should be 0, 1, or 2" << endl;
@@ -713,18 +749,23 @@
// Since the #pragma wave system() directive may cause a potential security
// threat, it has to be enabled explicitly by --extended or -x
bool enable_system_command = false;
-
+
if (vm.count("extended"))
enable_system_command = true;
// This this the central piece of the Wave library, it provides you with
// the iterators to get the preprocessed tokens and allows to configure
// the preprocessing stage in advance.
- bool allow_output = true; // will be manipulated from inside the hooks object
+ bool allow_output = true; // will be manipulated from inside the hooks object
std::string default_outfile; // will be used from inside the hooks object
trace_macro_expansion<token_type> hooks(preserve_whitespace,
output, traceout, includelistout, enable_trace, enable_system_command,
allow_output, default_outfile);
+
+ // enable macro invocation count, if appropriate
+ if (vm.count("macrocounts"))
+ hooks.enable_macro_counting();
+
context_type ctx (instring.begin(), instring.end(), file_name.c_str(), hooks);
#if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
@@ -800,7 +841,7 @@
// add include directories to the system include search paths
if (vm.count("sysinclude")) {
vector<std::string> syspaths = vm["sysinclude"].as<vector<std::string> >();
-
+
vector<std::string>::const_iterator end = syspaths.end();
for (vector<std::string>::const_iterator cit = syspaths.begin();
cit != end; ++cit)
@@ -1046,6 +1087,10 @@
if (!list_macro_names(ctx, vm["macronames"].as<std::string>()))
return -1;
}
+ if (vm.count("macrocounts")) {
+ if (!list_macro_counts(ctx, vm["macrocounts"].as<std::string>()))
+ return -1;
+ }
}
catch (boost::wave::cpp_exception const &e) {
// some preprocessing error
@@ -1096,7 +1141,7 @@
desc_cmdline.add_options()
("help,h", "print out program usage (this message)")
("version,v", "print the version number")
- ("copyright,c", "print out the copyright statement")
+ ("copyright", "print out the copyright statement")
("config-file", po::value<vector<std::string> >()->composing(),
"specify a config file (alternatively: @filepath)")
;
@@ -1142,6 +1187,8 @@
"list names of included files to a file [arg] or to stdout [-]")
("macronames,m", po::value<std::string>(),
"list all defined macros to a file [arg] or to stdout [-]")
+ ("macrocounts,c", po::value<std::string>(),
+ "list macro invocation counts to a file [arg] or to stdout [-]")
("preserve,p", po::value<int>()->default_value(0),
"preserve whitespace\n"
"0: no whitespace is preserved (default),\n"
@@ -1194,10 +1241,10 @@
// extract the arguments from the parsed command line
vector<po::option> arguments;
-
+
std::remove_copy_if(opts.options.begin(), opts.options.end(),
back_inserter(arguments), cmd_line_utils::is_argument());
-
+
// try to find a config file somewhere up the filesystem hierarchy
// starting with the input file path. This allows to use a general wave.cfg
// file for all files in a certain project.
@@ -1221,7 +1268,7 @@
input_dir = boost::wave::util::branch_path(input_dir);
}
}
-
+
// if there is specified at least one config file, parse it and add the
// options to the main variables_map
if (vm.count("config-file")) {
Modified: branches/release/tools/wave/cpp_version.hpp
==============================================================================
--- branches/release/tools/wave/cpp_version.hpp (original)
+++ branches/release/tools/wave/cpp_version.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -10,7 +10,7 @@
#if !defined(CPP_VERSION_HPP_CE4FE67F_63F9_468D_8364_C855F89D3C5D_INCLUDED)
#define CPP_VERSION_HPP_CE4FE67F_63F9_468D_8364_C855F89D3C5D_INCLUDED
-#include <boost/wave/wave_version.hpp>
+#include <boost/wave/wave_version.hpp>
#define CPP_VERSION_MAJOR BOOST_WAVE_VERSION_MAJOR
#define CPP_VERSION_MINOR BOOST_WAVE_VERSION_MINOR
@@ -18,8 +18,8 @@
#define CPP_VERSION_FULL BOOST_WAVE_VERSION
#define CPP_VERSION_FULL_STR BOOST_PP_STRINGIZE(CPP_VERSION_FULL)
-
-#define CPP_VERSION_DATE 20090309L
-#define CPP_VERSION_DATE_STR "20090309"
+
+#define CPP_VERSION_DATE 20090602L
+#define CPP_VERSION_DATE_STR "20090602"
#endif // !defined(CPP_VERSION_HPP_CE4FE67F_63F9_468D_8364_C855F89D3C5D_INCLUDED)
Modified: branches/release/tools/wave/trace_macro_expansion.hpp
==============================================================================
--- branches/release/tools/wave/trace_macro_expansion.hpp (original)
+++ branches/release/tools/wave/trace_macro_expansion.hpp 2009-09-14 14:15:58 EDT (Mon, 14 Sep 2009)
@@ -53,7 +53,8 @@
enum trace_flags {
trace_nothing = 0, // disable tracing
trace_macros = 1, // enable macro tracing
- trace_includes = 2 // enable include file tracing
+ trace_macro_counts = 2, // enable invocation counting
+ trace_includes = 4 // enable include file tracing
};
///////////////////////////////////////////////////////////////////////////////
@@ -70,7 +71,7 @@
pragma_system_not_enabled = boost::wave::preprocess_exception::last_error_number + 1,
pragma_mismatched_push_pop,
};
-
+
bad_pragma_exception(char const *what_, error_code code, int line_,
int column_, char const *filename_) throw()
: boost::wave::preprocess_exception(what_,
@@ -79,8 +80,7 @@
{
}
~bad_pragma_exception() throw() {}
-
-
+
virtual char const *what() const throw()
{
return "boost::wave::bad_pragma_exception";
@@ -93,14 +93,14 @@
{
return boost::wave::util::severity_remark;
}
-
+
static char const *error_text(int code)
{
switch(code) {
case pragma_system_not_enabled:
return "the directive '#pragma wave system()' was not enabled, use the "
"-x command line argument to enable the execution of";
-
+
case pragma_mismatched_push_pop:
return "unbalanced #pragma push/pop in input file(s) for option";
}
@@ -111,7 +111,7 @@
switch(code) {
case pragma_system_not_enabled:
return boost::wave::util::severity_remark;
-
+
case pragma_mismatched_push_pop:
return boost::wave::util::severity_error;
}
@@ -140,7 +140,7 @@
: public boost::wave::context_policies::eat_whitespace<TokenT>
{
typedef boost::wave::context_policies::eat_whitespace<TokenT> base_type;
-
+
public:
trace_macro_expansion(bool preserve_whitespace_,
std::ofstream &output_, std::ostream &tracestrm_,
@@ -160,7 +160,16 @@
~trace_macro_expansion()
{
}
-
+
+ void enable_macro_counting()
+ {
+ logging_flags = trace_flags(logging_flags | trace_macro_counts);
+ }
+ std::map<std::string, std::size_t> const& get_macro_counts() const
+ {
+ return counts;
+ }
+
///////////////////////////////////////////////////////////////////////////
//
// The function 'expanding_function_like_macro' is called whenever a
@@ -197,6 +206,9 @@
ContainerT const &definition,
TokenT const ¯ocall, std::vector<ContainerT> const &arguments)
{
+ if (enabled_macro_counting())
+ count_invocation(macrodef.get_value().c_str());
+
if (!enabled_macro_tracing())
return;
#else
@@ -209,6 +221,9 @@
TokenT const ¯ocall, std::vector<ContainerT> const &arguments,
IteratorT const& seqstart, IteratorT const& seqend)
{
+ if (enabled_macro_counting())
+ count_invocation(macrodef.get_value().c_str());
+
if (!enabled_macro_tracing())
return false;
#endif
@@ -229,8 +244,8 @@
stream << ")" << std::endl;
output(BOOST_WAVE_GETSTRING(stream));
increment_level();
- }
-
+ }
+
// output definition reference
{
BOOST_WAVE_OSSTREAM stream;
@@ -283,7 +298,7 @@
close_trace_body();
}
open_trace_body();
-
+
#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS == 0
return false;
#endif
@@ -312,6 +327,9 @@
void expanding_object_like_macro(TokenT const ¯odef,
ContainerT const &definition, TokenT const ¯ocall)
{
+ if (enabled_macro_counting())
+ count_invocation(macrodef.get_value().c_str());
+
if (!enabled_macro_tracing())
return;
#else
@@ -322,6 +340,9 @@
TokenT const ¯odef, ContainerT const &definition,
TokenT const ¯ocall)
{
+ if (enabled_macro_counting())
+ count_invocation(macrodef.get_value().c_str());
+
if (!enabled_macro_tracing())
return false;
#endif
@@ -335,7 +356,7 @@
output(BOOST_WAVE_GETSTRING(stream));
increment_level();
}
-
+
// output definition reference
{
BOOST_WAVE_OSSTREAM stream;
@@ -351,7 +372,7 @@
return false;
#endif
}
-
+
///////////////////////////////////////////////////////////////////////////
//
// The function 'expanded_macro' is called whenever the expansion of a
@@ -375,7 +396,7 @@
#endif
{
if (!enabled_macro_tracing()) return;
-
+
BOOST_WAVE_OSSTREAM stream;
stream << boost::wave::util::impl::as_string(result) << std::endl;
output(BOOST_WAVE_GETSTRING(stream));
@@ -413,7 +434,7 @@
output(BOOST_WAVE_GETSTRING(stream));
close_trace_body();
close_trace_body();
-
+
if (1 == get_level())
decrement_level();
}
@@ -483,7 +504,7 @@
act_token.get_position());
return false;
}
-
+
// try to spawn the given argument as a system command and return the
// std::cout of this process as the replacement of this _Pragma
return interpret_pragma_system(ctx, pending, values, act_token);
@@ -501,7 +522,7 @@
}
return false;
}
-
+
///////////////////////////////////////////////////////////////////////////
//
// The function 'opened_include_file' is called whenever a file referred
@@ -534,13 +555,13 @@
opened_include_file(ContextT const& ctx, std::string const &relname,
std::string const &absname, bool is_system_include)
{
- std::size_t include_depth = ctx.get_max_include_nesting_depth();
+ std::size_t include_depth = ctx.get_iteration_depth();
#endif
if (enabled_include_tracing()) {
// print indented filename
for (std::size_t i = 0; i < include_depth; ++i)
includestrm << " ";
-
+
if (is_system_include)
includestrm << "<" << relname << "> (" << absname << ")";
else
@@ -609,7 +630,7 @@
#endif
}
using base_type::throw_exception;
-
+
protected:
#if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0
///////////////////////////////////////////////////////////////////////////
@@ -641,7 +662,7 @@
if (1 == values.size()) {
token_type const &value = values.front();
-
+
if (value.get_value() == "enable" ||
value.get_value() == "on" ||
value.get_value() == "1")
@@ -718,7 +739,7 @@
token_id id = util::impl::skip_whitespace(it, end);
if (T_COLON == id)
id = util::impl::skip_whitespace(it, end);
-
+
// implement push/pop
if (T_IDENTIFIER == id) {
if ((*it).get_value() == "push") {
@@ -753,12 +774,12 @@
if (T_PP_NUMBER != id)
return false;
-
+
using namespace std; // some platforms have atoi in namespace std
return interpret_pragma_option_preserve_set(
atoi((*it).get_value().c_str()), preserve_whitespace, ctx);
}
-
+
// interpret the pragma wave option(line: [0|1|push|pop]) directive
template <typename ContextT, typename IteratorT>
bool
@@ -785,7 +806,7 @@
pragma_mismatched_push_pop, "line",
act_token.get_position());
}
-
+
// pop output line from the internal option stack
ctx.set_language(
enable_emit_line_directives(ctx.get_language(), line_options.top()),
@@ -798,7 +819,7 @@
if (T_PP_NUMBER != id)
return false;
-
+
using namespace std; // some platforms have atoi in namespace std
int emit_lines = atoi((*it).get_value().c_str());
if (0 == emit_lines || 1 == emit_lines) {
@@ -819,7 +840,7 @@
ContextT& ctx, typename ContextT::token_type const &act_token)
{
namespace fs = boost::filesystem;
-
+
// ensure all directories for this file do exist
fs::create_directories(boost::wave::util::branch_path(fpath));
@@ -861,14 +882,14 @@
{
using namespace boost::wave;
namespace fs = boost::filesystem;
-
+
typedef typename ContextT::token_type token_type;
typedef typename token_type::string_type string_type;
token_id id = util::impl::skip_whitespace(it, end);
if (T_COLON == id)
id = util::impl::skip_whitespace(it, end);
-
+
bool result = false;
if (T_STRINGLIT == id) {
namespace fs = boost::filesystem;
@@ -906,7 +927,7 @@
act_token.get_position());
return false;
}
-
+
// pop output option from the internal option stack
output_option_type const& opts = output_options.top();
generate_output = opts.first;
@@ -942,7 +963,7 @@
result = interpret_pragma_option_output_close(true);
}
}
- return result;
+ return result;
}
///////////////////////////////////////////////////////////////////////////
@@ -953,15 +974,15 @@
typename ContextT::token_type const &act_token)
{
using namespace boost::wave;
-
+
typedef typename ContextT::token_type token_type;
typedef typename token_type::string_type string_type;
typedef typename ContainerT::const_iterator const_iterator;
-
+
const_iterator end = values.end();
for (const_iterator it = values.begin(); it != end; /**/) {
bool valid_option = false;
-
+
token_type const &value = *it;
if (value.get_value() == "preserve") {
// #pragma wave option(preserve: [0|1|2|push|pop])
@@ -1013,7 +1034,7 @@
typedef typename token_type::string_type string_type;
if (0 == values.size()) return false; // ill_formed_pragma_option
-
+
string_type stdout_file(std::tmpnam(0));
string_type stderr_file(std::tmpnam(0));
string_type system_str(boost::wave::util::impl::as_string(values));
@@ -1023,14 +1044,14 @@
if (0 != std::system(system_str.c_str())) {
// unable to spawn the command
string_type error_str("unable to spawn command: ");
-
+
error_str += native_cmd;
BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
ill_formed_pragma_option,
error_str.c_str(), act_token.get_position());
return false;
}
-
+
// rescan the content of the stdout_file and insert it as the
// _Pragma replacement
typedef typename ContextT::lexer_type lexer_type;
@@ -1099,7 +1120,7 @@
int increment_level() { return ++level; }
int decrement_level() { BOOST_ASSERT(level > 0); return --level; }
int get_level() const { return level; }
-
+
bool enabled_macro_tracing() const
{
return (flags & trace_macros) && (logging_flags & trace_macros);
@@ -1108,7 +1129,28 @@
{
return (flags & trace_includes);
}
-
+ bool enabled_macro_counting() const
+ {
+ return logging_flags & trace_macro_counts;
+ }
+
+ void count_invocation(std::string const& name)
+ {
+ typedef std::map<std::string, std::size_t>::iterator iterator;
+ typedef std::map<std::string, std::size_t>::value_type value_type;
+
+ iterator it = counts.find(name);
+ if (it == counts.end())
+ {
+ std::pair<iterator, bool> p = counts.insert(value_type(name, 0));
+ if (p.second)
+ it = p.first;
+ }
+
+ if (it != counts.end())
+ ++(*it).second;
+ }
+
void timer(TokenT const &value)
{
if (value.get_value() == "0" || value.get_value() == "restart") {
@@ -1144,14 +1186,16 @@
bool& generate_output; // allow generated tokens to be streamed to output
std::string const& default_outfile; // name of the output file given on command line
boost::filesystem::path current_outfile; // name of the current output file
-
+
stop_watch elapsed_time; // trace timings
std::time_t started_at; // time, this process was started at
-
+
typedef std::pair<bool, boost::filesystem::path> output_option_type;
std::stack<output_option_type> output_options; // output option stack
std::stack<int> line_options; // line option stack
std::stack<int> preserve_options; // preserve option stack
+
+ std::map<std::string, std::size_t> counts; // macro invocation counts
};
#undef BOOST_WAVE_GETSTRING
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