|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r80762 - in branches/release: . boost boost/wave boost/wave/cpplexer boost/wave/cpplexer/re2clex libs libs/wave libs/wave/src/cpplexer/re2clex tools tools/wave
From: hartmut.kaiser_at_[hidden]
Date: 2012-09-29 16:15:32
Author: hkaiser
Date: 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
New Revision: 80762
URL: http://svn.boost.org/trac/boost/changeset/80762
Log:
Wave: merging from trunk
Properties modified:
branches/release/ (props changed)
branches/release/boost/ (props changed)
branches/release/boost/wave/ (props changed)
branches/release/libs/ (props changed)
branches/release/libs/wave/ (props changed)
branches/release/tools/ (props changed)
branches/release/tools/wave/ (props changed)
Text files modified:
branches/release/boost/wave/cpp_exceptions.hpp | 52 ++++++++++----------
branches/release/boost/wave/cpp_iteration_context.hpp | 4
branches/release/boost/wave/cpplexer/cpplexer_exceptions.hpp | 46 +++++++++---------
branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp | 96 ++++++++++++++++++++--------------------
branches/release/boost/wave/cpplexer/re2clex/scanner.hpp | 16 +++---
branches/release/boost/wave/cpplexer/validate_universal_char.hpp | 94 +++++++++++++++++++-------------------
branches/release/libs/wave/ChangeLog | 3 +
branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.cpp | 54 +++++++++++-----------
branches/release/tools/wave/trace_macro_expansion.hpp | 4
9 files changed, 186 insertions(+), 183 deletions(-)
Modified: branches/release/boost/wave/cpp_exceptions.hpp
==============================================================================
--- branches/release/boost/wave/cpp_exceptions.hpp (original)
+++ branches/release/boost/wave/cpp_exceptions.hpp 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -42,11 +42,11 @@
severity_commandline_error,
last_severity_code = severity_commandline_error
};
-
+
inline char const *
- get_severity(int level)
+ get_severity(int level)
{
- static char const *severity_text[] =
+ static char const *severity_text[] =
{
"remark", // severity_remark
"warning", // severity_warning
@@ -54,20 +54,20 @@
"fatal error", // severity_fatal
"command line error" // severity_commandline_error
};
- BOOST_ASSERT(severity_remark <= level &&
+ BOOST_ASSERT(severity_remark <= level &&
level <= last_severity_code);
return severity_text[level];
}
}
///////////////////////////////////////////////////////////////////////////////
-// cpp_exception, the base class for all specific C preprocessor exceptions
+// cpp_exception, the base class for all specific C preprocessor exceptions
class BOOST_SYMBOL_VISIBLE cpp_exception
: public std::exception
{
public:
- cpp_exception(int line_, int column_, char const *filename_) throw()
- : line(line_), column(column_)
+ cpp_exception(std::size_t line_, std::size_t column_, char const *filename_) throw()
+ : line(line_), column(column_)
{
unsigned int off = 0;
while (off < sizeof(filename)-1 && *filename_)
@@ -75,22 +75,22 @@
filename[off] = 0;
}
~cpp_exception() throw() {}
-
+
virtual char const *what() const throw() = 0; // to be overloaded
virtual char const *description() const throw() = 0;
virtual int get_errorcode() const throw() = 0;
virtual int get_severity() const throw() = 0;
virtual char const* get_related_name() const throw() = 0;
virtual bool is_recoverable() const throw() = 0;
-
- int line_no() const throw() { return line; }
- int column_no() const throw() { return column; }
+
+ std::size_t line_no() const throw() { return line; }
+ std::size_t column_no() const throw() { return column; }
char const *file_name() const throw() { return filename; }
-
+
protected:
char filename[512];
- int line;
- int column;
+ std::size_t line;
+ std::size_t column;
};
///////////////////////////////////////////////////////////////////////////////
@@ -149,9 +149,9 @@
last_error_number = pragma_message_directive
};
- preprocess_exception(char const *what_, error_code code, int line_,
- int column_, char const *filename_) throw()
- : cpp_exception(line_, column_, filename_),
+ preprocess_exception(char const *what_, error_code code, std::size_t line_,
+ std::size_t column_, char const *filename_) throw()
+ : cpp_exception(line_, column_, filename_),
code(code)
{
unsigned int off = 0;
@@ -160,7 +160,7 @@
buffer[off] = 0;
}
~preprocess_exception() throw() {}
-
+
virtual char const *what() const throw()
{
return "boost::wave::preprocess_exception";
@@ -184,7 +184,7 @@
virtual bool is_recoverable() const throw()
{
switch (get_errorcode()) {
- // these are the exceptions thrown during processing not supposed to
+ // these are the exceptions thrown during processing not supposed to
// produce any tokens on the context::iterator level
case preprocess_exception::no_error: // just a placeholder
case preprocess_exception::macro_redefinition:
@@ -221,7 +221,7 @@
case preprocess_exception::ill_formed_pragma_message:
case preprocess_exception::pragma_message_directive:
return true;
-
+
case preprocess_exception::unexpected_error:
case preprocess_exception::ill_formed_operator:
case preprocess_exception::too_few_macroarguments:
@@ -234,7 +234,7 @@
}
return false;
}
-
+
static char const *error_text(int code)
{
// error texts in this array must appear in the same order as the items in
@@ -370,8 +370,8 @@
public preprocess_exception
{
public:
- macro_handling_exception(char const *what_, error_code code, int line_,
- int column_, char const *filename_, char const *macroname) throw()
+ macro_handling_exception(char const *what_, error_code code, std::size_t line_,
+ std::size_t column_, char const *filename_, char const *macroname) throw()
: preprocess_exception(what_, code, line_, column_, filename_)
{
unsigned int off = 0;
@@ -380,7 +380,7 @@
name[off] = 0;
}
~macro_handling_exception() throw() {}
-
+
virtual char const *what() const throw()
{
return "boost::wave::macro_handling_exception";
@@ -396,10 +396,10 @@
///////////////////////////////////////////////////////////////////////////////
//
-// The is_recoverable() function allows to decide, whether it is possible
+// The is_recoverable() function allows to decide, whether it is possible
// simply to continue after a given exception was thrown by Wave.
//
-// This is kind of a hack to allow to recover from certain errors as long as
+// This is kind of a hack to allow to recover from certain errors as long as
// Wave doesn't provide better means of error recovery.
//
///////////////////////////////////////////////////////////////////////////////
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 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -124,8 +124,8 @@
BOOST_WAVE_STRINGTYPE real_filename; // real name of the current file
BOOST_WAVE_STRINGTYPE real_relative_filename; // real relative name of the current file
BOOST_WAVE_STRINGTYPE filename; // actual processed file
- unsigned int line; // line counter of underlying stream
- unsigned int emitted_lines; // count of emitted newlines
+ std::size_t line; // line counter of underlying stream
+ std::size_t emitted_lines; // count of emitted newlines
std::size_t if_block_depth; // depth of #if block recursion
ContextT& ctx; // corresponding context<> object
file_type type; // the type of the handled file
Modified: branches/release/boost/wave/cpplexer/cpplexer_exceptions.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpplexer_exceptions.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpplexer_exceptions.hpp 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -110,11 +110,11 @@
severity_error,
severity_fatal
};
-
+
inline char const *
- get_severity(severity level)
+ get_severity(severity level)
{
- static char const *severity_text[] =
+ static char const *severity_text[] =
{
"remark", // severity_remark
"warning", // severity_warning
@@ -127,13 +127,13 @@
}
///////////////////////////////////////////////////////////////////////////////
-// cpplexer_exception, the base class for all specific C++ lexer exceptions
+// cpplexer_exception, the base class for all specific C++ lexer exceptions
class BOOST_SYMBOL_VISIBLE cpplexer_exception
: public std::exception
{
public:
- cpplexer_exception(int line_, int column_, char const *filename_) throw()
- : line(line_), column(column_)
+ cpplexer_exception(std::size_t line_, std::size_t column_, char const *filename_) throw()
+ : line(line_), column(column_)
{
unsigned int off = 0;
while (off < sizeof(filename)-1 && *filename_)
@@ -141,21 +141,21 @@
filename[off] = 0;
}
~cpplexer_exception() throw() {}
-
+
virtual char const *what() const throw() = 0; // to be overloaded
virtual char const *description() const throw() = 0;
virtual int get_errorcode() const throw() = 0;
virtual int get_severity() const throw() = 0;
virtual bool is_recoverable() const throw() = 0;
- int line_no() const throw() { return line; }
- int column_no() const throw() { return column; }
+ std::size_t line_no() const throw() { return line; }
+ std::size_t column_no() const throw() { return column; }
char const *file_name() const throw() { return filename; }
-
+
protected:
char filename[512];
- int line;
- int column;
+ std::size_t line;
+ std::size_t column;
};
///////////////////////////////////////////////////////////////////////////////
@@ -174,9 +174,9 @@
generic_lexing_warning = 6
};
- lexing_exception(char const *what_, error_code code, int line_,
- int column_, char const *filename_) throw()
- : cpplexer_exception(line_, column_, filename_),
+ lexing_exception(char const *what_, error_code code, std::size_t line_,
+ std::size_t column_, char const *filename_) throw()
+ : cpplexer_exception(line_, column_, filename_),
level(severity_level(code)), code(code)
{
unsigned int off = 0;
@@ -185,7 +185,7 @@
buffer[off] = 0;
}
~lexing_exception() throw() {}
-
+
virtual char const *what() const throw()
{
return "boost::wave::lexing_exception";
@@ -212,14 +212,14 @@
case lexing_exception::generic_lexing_warning:
case lexing_exception::generic_lexing_error:
return true; // for now allow all exceptions to be recoverable
-
+
case lexing_exception::unexpected_error:
default:
break;
}
return false;
}
-
+
static char const *error_text(int code)
{
// error texts in this array must appear in the same order as the items in
@@ -229,7 +229,7 @@
"universal character name specifies an invalid character", // universal_char_invalid
"a universal character name cannot designate a character in the "
"basic character set", // universal_char_base_charset
- "this universal character is not allowed in an identifier", // universal_char_not_allowed
+ "this universal character is not allowed in an identifier", // universal_char_not_allowed
"long long suffixes are not allowed in pure C++ mode, "
"enable long_long mode to allow these", // invalid_long_long_literal
"generic lexer error", // generic_lexing_error
@@ -246,7 +246,7 @@
util::severity_error, // universal_char_base_charset
util::severity_error, // universal_char_not_allowed
util::severity_warning, // invalid_long_long_literal
- util::severity_error, // generic_lexing_error
+ util::severity_error, // generic_lexing_error
util::severity_warning // invalid_long_long_literal
};
return preprocess_exception_severity[code];
@@ -264,10 +264,10 @@
///////////////////////////////////////////////////////////////////////////////
//
-// The is_recoverable() function allows to decide, whether it is possible
+// The is_recoverable() function allows to decide, whether it is possible
// simply to continue after a given exception was thrown by Wave.
//
-// This is kind of a hack to allow to recover from certain errors as long as
+// This is kind of a hack to allow to recover from certain errors as long as
// Wave doesn't provide better means of error recovery.
//
///////////////////////////////////////////////////////////////////////////////
@@ -280,7 +280,7 @@
///////////////////////////////////////////////////////////////////////////////
} // namespace cpplexer
} // namespace wave
-} // namespace boost
+} // namespace boost
// the suffix header occurs after all of the code
#ifdef BOOST_HAS_ABI_HEADERS
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 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -54,21 +54,21 @@
namespace re2clex {
///////////////////////////////////////////////////////////////////////////////
-//
+//
// encapsulation of the re2c based cpp lexer
//
///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT,
+template <typename IteratorT,
typename PositionT = boost::wave::util::file_position_type,
typename TokenT = lex_token<PositionT> >
-class lexer
+class lexer
{
public:
typedef TokenT token_type;
typedef typename token_type::string_type string_type;
- lexer(IteratorT const &first, IteratorT const &last,
+ lexer(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language_);
~lexer();
@@ -82,9 +82,9 @@
scanner.file_name = filename.c_str();
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- bool has_include_guards(std::string& guard_name) const
- {
- return guards.detected(guard_name);
+ bool has_include_guards(std::string& guard_name) const
+ {
+ return guards.detected(guard_name);
}
#endif
@@ -111,12 +111,12 @@
};
///////////////////////////////////////////////////////////////////////////////
-// initialize cpp lexer
+// initialize cpp lexer
template <typename IteratorT, typename PositionT, typename TokenT>
inline
-lexer<IteratorT, PositionT, TokenT>::lexer(IteratorT const &first,
- IteratorT const &last, PositionT const &pos,
- boost::wave::language_support language_)
+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_)
#if BOOST_WAVE_SUPPORT_THREADING != 0
, cache()
@@ -127,7 +127,7 @@
scanner.eol_offsets = aq_create();
if (first != last) {
scanner.first = scanner.act = (uchar *)&(*first);
- scanner.last = scanner.first + std::distance(first, last);
+ scanner.last = scanner.first + std::distance(first, last);
}
scanner.line = pos.get_line();
scanner.column = scanner.curr_column = pos.get_column();
@@ -162,7 +162,7 @@
template <typename IteratorT, typename PositionT, typename TokenT>
inline
-lexer<IteratorT, PositionT, TokenT>::~lexer()
+lexer<IteratorT, PositionT, TokenT>::~lexer()
{
using namespace std; // some systems have free in std
aq_terminate(scanner.eol_offsets);
@@ -175,31 +175,31 @@
inline TokenT&
lexer<IteratorT, PositionT, TokenT>::get(TokenT& result)
{
- if (at_eof)
+ if (at_eof)
return result = token_type(); // return T_EOI
- unsigned int actline = scanner.line;
+ std::size_t 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)
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
if (!boost::wave::need_no_character_validation(language))
- impl::validate_identifier_name(value, actline, scanner.column, filename);
+ impl::validate_identifier_name(value, actline, scanner.column, filename);
break;
case T_STRINGLIT:
case T_CHARLIT:
case T_RAWSTRINGLIT:
// test literal characters for validity (throws if invalid chars found)
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
if (boost::wave::need_convert_trigraphs(language))
- value = impl::convert_trigraphs(value);
+ value = impl::convert_trigraphs(value);
if (!boost::wave::need_no_character_validation(language))
- impl::validate_literal(value, actline, scanner.column, filename);
+ impl::validate_literal(value, actline, scanner.column, filename);
break;
#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
@@ -208,7 +208,7 @@
case T_PP_INCLUDE:
// convert to the corresponding ..._next token, if appropriate
{
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
// Skip '#' and whitespace and see whether we find an 'include_next' here.
@@ -220,11 +220,11 @@
#endif
case T_LONGINTLIT: // supported in C++11, C99 and long_long mode
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
if (!boost::wave::need_long_long(language)) {
// syntax error: not allowed in C++ mode
- BOOST_WAVE_LEXER_THROW(lexing_exception, invalid_long_long_literal,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, invalid_long_long_literal,
value.c_str(), actline, scanner.column, filename.c_str());
}
break;
@@ -241,7 +241,7 @@
case T_SPACE2:
case T_ANY:
case T_PP_NUMBER:
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
break;
@@ -264,7 +264,7 @@
value = cache.get_token_value(BASEID_FROM_TOKEN(id));
}
else {
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
}
break;
@@ -272,10 +272,10 @@
case T_ANY_TRIGRAPH:
if (boost::wave::need_convert_trigraphs(language)) {
value = impl::convert_trigraph(
- string_type((char const *)scanner.tok));
+ string_type((char const *)scanner.tok));
}
else {
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
}
break;
@@ -284,7 +284,7 @@
if (CATEGORY_FROM_TOKEN(id) != EXTCATEGORY_FROM_TOKEN(id) ||
IS_CATEGORY(id, UnknownTokenType))
{
- value = string_type((char const *)scanner.tok,
+ value = string_type((char const *)scanner.tok,
scanner.cur-scanner.tok);
}
else {
@@ -306,8 +306,8 @@
}
template <typename IteratorT, typename PositionT, typename TokenT>
-inline int
-lexer<IteratorT, PositionT, TokenT>::report_error(Scanner const *s, int errcode,
+inline int
+lexer<IteratorT, PositionT, TokenT>::report_error(Scanner const *s, int errcode,
char const *msg, ...)
{
BOOST_ASSERT(0 != s);
@@ -321,28 +321,28 @@
vsprintf(buffer, msg, params);
va_end(params);
- BOOST_WAVE_LEXER_THROW_VAR(lexing_exception, errcode, buffer, s->line,
+ BOOST_WAVE_LEXER_THROW_VAR(lexing_exception, errcode, buffer, s->line,
s->column, s->file_name);
// BOOST_UNREACHABLE_RETURN(0);
return 0;
}
///////////////////////////////////////////////////////////////////////////////
-//
+//
// lex_functor
-//
+//
///////////////////////////////////////////////////////////////////////////////
-template <typename IteratorT,
+template <typename IteratorT,
typename PositionT = boost::wave::util::file_position_type,
typename TokenT = typename lexer<IteratorT, PositionT>::token_type>
-class lex_functor
+class lex_functor
: public lex_input_interface_generator<TokenT>
{
public:
typedef TokenT token_type;
- lex_functor(IteratorT const &first, IteratorT const &last,
+ lex_functor(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language)
: re2c_lexer(first, last, pos, language)
{}
@@ -352,7 +352,7 @@
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
+ bool has_include_guards(std::string& guard_name) const
{ return re2c_lexer.has_include_guards(guard_name); }
#endif
@@ -364,16 +364,16 @@
///////////////////////////////////////////////////////////////////////////////
template <typename IteratorT, typename PositionT, typename TokenT>
token_cache<typename lexer<IteratorT, PositionT, TokenT>::string_type> const
- lexer<IteratorT, PositionT, TokenT>::cache =
+ lexer<IteratorT, PositionT, TokenT>::cache =
token_cache<typename lexer<IteratorT, PositionT, TokenT>::string_type>();
#endif
} // namespace re2clex
///////////////////////////////////////////////////////////////////////////////
-//
+//
// The new_lexer_gen<>::new_lexer function (declared in cpp_lex_interface.hpp)
-// should be defined inline, if the lex_functor shouldn't be instantiated
+// should be defined inline, if the lex_functor shouldn't be instantiated
// separately from the lex_iterator.
//
// Separate (explicit) instantiation helps to reduce compilation time.
@@ -384,21 +384,21 @@
#define BOOST_WAVE_RE2C_NEW_LEXER_INLINE
#else
#define BOOST_WAVE_RE2C_NEW_LEXER_INLINE inline
-#endif
+#endif
///////////////////////////////////////////////////////////////////////////////
//
// The 'new_lexer' function allows the opaque generation of a new lexer object.
-// It is coupled to the iterator type to allow to decouple the lexer/iterator
+// It is coupled to the iterator type to allow to decouple the lexer/iterator
// configurations at compile time.
//
-// This function is declared inside the cpp_lex_token.hpp file, which is
+// This function is declared inside the cpp_lex_token.hpp file, which is
// referenced by the source file calling the lexer and the source file, which
-// instantiates the lex_functor. But is is defined here, so it will be
-// instantiated only while compiling the source file, which instantiates the
+// instantiates the lex_functor. But is is defined here, so it will be
+// instantiated only while compiling the source file, which instantiates the
// lex_functor. While the cpp_re2c_token.hpp file may be included everywhere,
// this file (cpp_re2c_lexer.hpp) should be included only once. This allows
-// to decouple the lexer interface from the lexer implementation and reduces
+// to decouple the lexer interface from the lexer implementation and reduces
// compilation time.
//
///////////////////////////////////////////////////////////////////////////////
@@ -407,7 +407,7 @@
BOOST_WAVE_RE2C_NEW_LEXER_INLINE
lex_input_interface<TokenT> *
new_lexer_gen<IteratorT, PositionT, TokenT>::new_lexer(IteratorT const &first,
- IteratorT const &last, PositionT const &pos,
+ IteratorT const &last, PositionT const &pos,
boost::wave::language_support language)
{
using re2clex::lex_functor;
@@ -419,7 +419,7 @@
///////////////////////////////////////////////////////////////////////////////
} // namespace cpplexer
} // namespace wave
-} // namespace boost
+} // namespace boost
// the suffix header occurs after all of the code
#ifdef BOOST_HAS_ABI_HEADERS
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 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -4,8 +4,8 @@
http://www.boost.org/
Copyright (c) 2001 Daniel C. Nuffer.
- Copyright (c) 2001-2012 Hartmut Kaiser.
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Copyright (c) 2001-2012 Hartmut Kaiser.
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
@@ -28,7 +28,7 @@
struct Scanner;
typedef unsigned char uchar;
-typedef int (* ReportErrorProc)(struct Scanner const *, int errorcode,
+typedef int (* ReportErrorProc)(struct Scanner const *, int errorcode,
char const *, ...);
typedef struct Scanner {
@@ -37,7 +37,7 @@
uchar* last; /* end (one past last char) of input buffer */
uchar* bot; /* beginning of the current buffer */
uchar* top; /* top of the current buffer */
- uchar* eof; /* when we read in the last buffer, will point 1 past the
+ uchar* eof; /* when we read in the last buffer, will point 1 past the
end of the file, otherwise 0 */
uchar* tok; /* points to the beginning of the current token */
uchar* ptr; /* used for YYMARKER - saves backtracking info */
@@ -45,10 +45,10 @@
uchar* lim; /* used for YYLIMIT - points to the end of the buffer */
/* (lim == top) except for the last buffer, it points to
the end of the input (lim == eof - 1) */
- unsigned int line; /* current line being lex'ed */
- unsigned int column; /* current token start column position */
- unsigned int curr_column; /* current column position */
- ReportErrorProc error_proc; /* must be != 0, this function is called to
+ std::size_t line; /* current line being lex'ed */
+ std::size_t column; /* current token start column position */
+ std::size_t curr_column; /* current column position */
+ ReportErrorProc error_proc; /* must be != 0, this function is called to
report an error */
char const *file_name; /* name of the lex'ed file */
aq_queue eol_offsets;
Modified: branches/release/boost/wave/cpplexer/validate_universal_char.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/validate_universal_char.hpp (original)
+++ branches/release/boost/wave/cpplexer/validate_universal_char.hpp 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -2,7 +2,7 @@
Boost.Wave: A Standard compliant C++ preprocessor library
Grammar for universal character validation (see C++ standard: Annex E)
-
+
http://www.boost.org/
Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
@@ -37,12 +37,12 @@
};
///////////////////////////////////////////////////////////////////////////
-//
-// is_range is a helper function for the classification by brute force
+//
+// is_range is a helper function for the classification by brute force
// below
//
///////////////////////////////////////////////////////////////////////////
-inline bool
+inline bool
in_range(unsigned long ch, unsigned long l, unsigned long u)
{
return (l <= ch && ch <= u);
@@ -67,15 +67,15 @@
// Implementation note:
// This classification isn't implemented very effectively here. This
// function should be rewritten with some range run matching algorithm.
-//
+//
///////////////////////////////////////////////////////////////////////////////
-inline universal_char_type
+inline universal_char_type
classify_universal_char (unsigned long ch)
{
// test for invalid characters
if (ch <= 0x0020 || in_range(ch, 0x007f, 0x009f))
return universal_char_type_invalid;
-
+
// test for characters in the range of the base character set
if (in_range(ch, 0x0021, 0x005f) || in_range(ch, 0x0061, 0x007e))
return universal_char_type_base_charset;
@@ -88,7 +88,7 @@
{
return universal_char_type_valid; // Latin
}
-
+
if (0x0384 == ch || in_range(ch, 0x0388, 0x038a) ||
0x038c == ch || in_range(ch, 0x038e, 0x03a1) ||
in_range(ch, 0x03a3, 0x03ce) || in_range(ch, 0x03d0, 0x03d6) ||
@@ -96,7 +96,7 @@
in_range(ch, 0x03e2, 0x03f3) || in_range(ch, 0x1f00, 0x1f15) ||
in_range(ch, 0x1f18, 0x1f1d) || in_range(ch, 0x1f20, 0x1f45) ||
in_range(ch, 0x1f48, 0x1f4d) || in_range(ch, 0x1f50, 0x1f57) ||
- 0x1f59 == ch || 0x1f5b == ch || 0x1f5d == ch ||
+ 0x1f59 == ch || 0x1f5b == ch || 0x1f5d == ch ||
in_range(ch, 0x1f5f, 0x1f7d) || in_range(ch, 0x1f80, 0x1fb4) ||
in_range(ch, 0x1fb6, 0x1fbc) || in_range(ch, 0x1fc2, 0x1fc4) ||
in_range(ch, 0x1fc6, 0x1fcc) || in_range(ch, 0x1fd0, 0x1fd3) ||
@@ -105,7 +105,7 @@
{
return universal_char_type_valid; // Greek
}
-
+
if (in_range(ch, 0x0401, 0x040d) || in_range(ch, 0x040f, 0x044f) ||
in_range(ch, 0x0451, 0x045c) || in_range(ch, 0x045e, 0x0481) ||
in_range(ch, 0x0490, 0x04c4) || in_range(ch, 0x04c7, 0x04c8) ||
@@ -114,20 +114,20 @@
{
return universal_char_type_valid; // Cyrillic
}
-
+
if (in_range(ch, 0x0531, 0x0556) || in_range(ch, 0x0561, 0x0587))
return universal_char_type_valid; // Armenian
if (in_range(ch, 0x05d0, 0x05ea) || in_range(ch, 0x05f0, 0x05f4))
return universal_char_type_valid; // Hebrew
-
+
if (in_range(ch, 0x0621, 0x063a) || in_range(ch, 0x0640, 0x0652) ||
in_range(ch, 0x0670, 0x06b7) || in_range(ch, 0x06ba, 0x06be) ||
in_range(ch, 0x06c0, 0x06ce) || in_range(ch, 0x06e5, 0x06e7))
{
return universal_char_type_valid; // Arabic
}
-
+
if (in_range(ch, 0x0905, 0x0939) || in_range(ch, 0x0958, 0x0962))
return universal_char_type_valid; // Devanagari
@@ -139,7 +139,7 @@
{
return universal_char_type_valid; // Bengali
}
-
+
if (in_range(ch, 0x0a05, 0x0a0a) || in_range(ch, 0x0a0f, 0x0a10) ||
in_range(ch, 0x0a13, 0x0a28) || in_range(ch, 0x0a2a, 0x0a30) ||
in_range(ch, 0x0a32, 0x0a33) || in_range(ch, 0x0a35, 0x0a36) ||
@@ -209,49 +209,49 @@
// validate_identifier_name
//
// The validate_identifier_name function tests a given identifier name for
-// its validity with regard to eventually contained universal characters.
-// These should be in valid ranges (see the function
+// its validity with regard to eventually contained universal characters.
+// These should be in valid ranges (see the function
// classify_universal_char above).
//
-// If the identifier name contains invalid or not allowed universal
+// If the identifier name contains invalid or not allowed universal
// characters a corresponding lexing_exception is thrown.
//
///////////////////////////////////////////////////////////////////////////////
template <typename StringT>
-inline void
-validate_identifier_name (StringT const &name, int line, int column,
- StringT const &file_name)
+inline void
+validate_identifier_name (StringT const &name, std::size_t line,
+ std::size_t column, StringT const &file_name)
{
using namespace std; // some systems have strtoul in namespace std::
-
+
typename StringT::size_type pos = name.find_first_of('\\');
while (StringT::npos != pos) {
// the identifier name contains a backslash (must be universal char)
BOOST_ASSERT('u' == name[pos+1] || 'U' == name[pos+1]);
-
+
StringT uchar_val(name.substr(pos+2, ('u' == name[pos+1]) ? 4 : 8));
- universal_char_type type =
- classify_universal_char(strtoul(uchar_val.c_str(), 0, 16));
-
+ universal_char_type type =
+ classify_universal_char(strtoul(uchar_val.c_str(), 0, 16));
+
if (universal_char_type_valid != type) {
// an invalid char was found, so throw an exception
StringT error_uchar(name.substr(pos, ('u' == name[pos+1]) ? 6 : 10));
-
+
if (universal_char_type_invalid == type) {
- BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_invalid,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_invalid,
error_uchar, line, column, file_name.c_str());
}
else if (universal_char_type_base_charset == type) {
- BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_base_charset,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_base_charset,
error_uchar, line, column, file_name.c_str());
}
else {
- BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_not_allowed,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_not_allowed,
error_uchar, line, column, file_name.c_str());
}
}
-
+
// find next universal char (if appropriate)
pos = name.find_first_of('\\', pos+2);
}
@@ -261,55 +261,55 @@
//
// validate_literal
//
-// The validate_literal function tests a given string or character literal
-// for its validity with regard to eventually contained universal
-// characters. These should be in valid ranges (see the function
+// The validate_literal function tests a given string or character literal
+// for its validity with regard to eventually contained universal
+// characters. These should be in valid ranges (see the function
// classify_universal_char above).
//
-// If the string or character literal contains invalid or not allowed
+// If the string or character literal contains invalid or not allowed
// universal characters a corresponding lexing_exception is thrown.
//
///////////////////////////////////////////////////////////////////////////////
template <typename StringT>
-inline void
-validate_literal (StringT const &name, int line, int column,
+inline void
+validate_literal (StringT const &name, std::size_t line, std::size_t column,
StringT const &file_name)
{
using namespace std; // some systems have strtoul in namespace std::
-
+
typename StringT::size_type pos = name.find_first_of('\\');
while (StringT::npos != pos) {
// the literal contains a backslash (may be universal char)
if ('u' == name[pos+1] || 'U' == name[pos+1]) {
StringT uchar_val(name.substr(pos+2, ('u' == name[pos+1]) ? 4 : 8));
- universal_char_type type =
- classify_universal_char(strtoul(uchar_val.c_str(), 0, 16));
-
- if (universal_char_type_valid != type &&
- universal_char_type_not_allowed_for_identifiers != type)
+ universal_char_type type =
+ classify_universal_char(strtoul(uchar_val.c_str(), 0, 16));
+
+ if (universal_char_type_valid != type &&
+ universal_char_type_not_allowed_for_identifiers != type)
{
// an invalid char was found, so throw an exception
StringT error_uchar(name.substr(pos, ('u' == name[pos+1]) ? 6 : 10));
-
+
if (universal_char_type_invalid == type) {
- BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_invalid,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_invalid,
error_uchar, line, column, file_name.c_str());
}
else {
- BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_base_charset,
+ BOOST_WAVE_LEXER_THROW(lexing_exception, universal_char_base_charset,
error_uchar, line, column, file_name.c_str());
}
}
}
-
+
// find next universal char (if appropriate)
pos = name.find_first_of('\\', pos+2);
}
}
///////////////////////////////////////////////////////////////////////////////
-} // namespace impl
+} // namespace impl
} // namespace cpplexer
} // namespace wave
} // namespace boost
Modified: branches/release/libs/wave/ChangeLog
==============================================================================
--- branches/release/libs/wave/ChangeLog (original)
+++ branches/release/libs/wave/ChangeLog 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -34,6 +34,9 @@
sequence was skipped, now we skip only the macro itself, which still expands
the arguments for the macro invocation.
+Boost V1.52.0:
+ - Fixed a couple of compilation warnings
+
Boost V1.51.0
- Fixed #7050: Invalid memory write bug in lexing_exception
- Fixed #7159: Text-lines are processed as if they were preprocessing directives
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 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -2,14 +2,14 @@
Boost.Wave: A Standard compliant C++ preprocessor library
Copyright (c) 2001 Daniel C. Nuffer
- Copyright (c) 2001-2012 Hartmut Kaiser.
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Copyright (c) 2001-2012 Hartmut Kaiser.
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- TODO:
- It also may be necessary to add $ to identifiers, for asm.
+ TODO:
+ It also may be necessary to add $ to identifiers, for asm.
handle errors better.
- have some easier way to parse strings instead of files (done)
+ have some easier way to parse strings instead of files (done)
=============================================================================*/
#define BOOST_WAVE_SOURCE 1
@@ -31,7 +31,7 @@
#include <unistd.h>
#else
#include <io.h>
-#endif
+#endif
#include <boost/assert.hpp>
#include <boost/detail/workaround.hpp>
@@ -103,7 +103,7 @@
if (0 != s->act) {
RE2C_ASSERT(s->first != 0 && s->last != 0);
RE2C_ASSERT(s->first <= s->act && s->act <= s->last);
- if (s->act < s->last)
+ if (s->act < s->last)
return *(s->act)++;
}
return -1;
@@ -136,7 +136,7 @@
{
aq_queue q;
std::size_t i;
-
+
if (!s->eol_offsets)
s->eol_offsets = aq_create();
@@ -218,10 +218,10 @@
{
using namespace std; // some systems have printf in std
if (0 != s->error_proc) {
- (*s->error_proc)(s, lexing_exception::unexpected_error,
+ (*s->error_proc)(s, lexing_exception::unexpected_error,
"Out of memory!");
}
- else
+ else
printf("Out of memory!\n");
/* get the scanner to stop */
@@ -245,12 +245,12 @@
cnt = BOOST_WAVE_BSIZE;
memmove(s->lim, s->act, cnt);
s->act += cnt;
- if (cnt != BOOST_WAVE_BSIZE)
+ if (cnt != BOOST_WAVE_BSIZE)
{
s->eof = &s->lim[cnt]; *(s->eof)++ = '\0';
}
}
-
+
/* backslash-newline erasing time */
/* first scan for backslash-newline and erase them */
@@ -265,7 +265,7 @@
memmove(p, p + offset, s->lim + cnt - p - offset);
cnt -= offset;
--p;
- aq_enqueue(s->eol_offsets, p - s->bot + 1);
+ aq_enqueue(s->eol_offsets, p - s->bot + 1);
}
else if (*(p+len) == '\r')
{
@@ -283,14 +283,14 @@
cnt -= offset;
--p;
}
- aq_enqueue(s->eol_offsets, p - s->bot + 1);
+ aq_enqueue(s->eol_offsets, p - s->bot + 1);
}
}
}
- /* FIXME: the following code should be fixed to recognize correctly the
+ /* FIXME: the following code should be fixed to recognize correctly the
trigraph backslash token */
-
+
/* check to see if what we just read ends in a backslash */
if (cnt >= 2)
{
@@ -304,7 +304,7 @@
if (next == '\n')
{
--cnt; /* chop the final \, we've already read the \n. */
- aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
+ aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
}
else if (next == '\r')
{
@@ -319,7 +319,7 @@
rewind_stream(s, -1);
--cnt;
}
- aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
+ aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
}
else if (next != -1) /* -1 means end of file */
{
@@ -341,13 +341,13 @@
rewind_stream(s, -1);
cnt -= 2;
}
- aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
+ aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
}
/* check \ \n EOB */
else if (last == '\n' && last2 == '\\')
{
cnt -= 2;
- aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
+ aq_enqueue(s->eol_offsets, cnt + (s->lim - s->bot));
}
}
@@ -362,21 +362,21 @@
}
///////////////////////////////////////////////////////////////////////////////
-// Special wrapper class holding the current cursor position
+// Special wrapper class holding the current cursor position
struct uchar_wrapper
{
- uchar_wrapper (uchar *base_cursor, unsigned int column = 1)
+ uchar_wrapper (uchar *base_cursor, std::size_t column = 1)
: base_cursor(base_cursor), column(column)
{}
- uchar_wrapper& operator++()
+ uchar_wrapper& operator++()
{
++base_cursor;
++column;
return *this;
}
- uchar_wrapper& operator--()
+ uchar_wrapper& operator--()
{
--base_cursor;
--column;
@@ -393,14 +393,14 @@
return base_cursor;
}
- friend std::ptrdiff_t
+ 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;
+ std::size_t column;
};
///////////////////////////////////////////////////////////////////////////////
@@ -428,7 +428,7 @@
} // namespace boost
#undef BOOST_WAVE_RET
-#undef BOOST_WAVE_BSIZE
+#undef BOOST_WAVE_BSIZE
#undef YYCTYPE
#undef YYCURSOR
#undef YYLIMIT
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 2012-09-29 16:15:30 EDT (Sat, 29 Sep 2012)
@@ -76,8 +76,8 @@
pragma_mismatched_push_pop,
};
- bad_pragma_exception(char const *what_, error_code code, int line_,
- int column_, char const *filename_) throw()
+ bad_pragma_exception(char const *what_, error_code code, std::size_t line_,
+ std::size_t column_, char const *filename_) throw()
: boost::wave::preprocess_exception(what_,
(boost::wave::preprocess_exception::error_code)code, line_,
column_, filename_)
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