mirror of
https://github.com/boostorg/wave.git
synced 2026-07-21 13:43:40 +00:00
Quickbook: Copy trunk libs into quickbook-dev branch.
[SVN r75213]
This commit is contained in:
@@ -20,12 +20,40 @@ TODO (known issues):
|
||||
|
||||
CHANGELOG
|
||||
|
||||
Boost V1.48.0
|
||||
- V2.3.1
|
||||
- Added the flag support_option_emit_contnewlines allowing to control whether
|
||||
backslash newline sequences are emitted by the Wave library. The default is
|
||||
as before: these tokens will be silently ignored (after the token positions
|
||||
have been properly updated). Note: this option is supported by the SLex lexer
|
||||
module only.
|
||||
- Fixed #5887: flex_string.hpp needs to include <ios>
|
||||
|
||||
Boost V1.47.0
|
||||
- V2.3.0
|
||||
- After preprocessing the body of any #pragma wave option() the wave tool now
|
||||
concatenates all adjacent string literals into a single string literal.
|
||||
- Fixed whitespace handling, added a corresponding set of test cases
|
||||
(t_9_020.cpp)
|
||||
- Added a new preprocessing hook: locate_include_file allowing to customize the
|
||||
way include files are located.
|
||||
- Added new command line option --noexpand/-N to the Wave driver allowing to
|
||||
suppress macro expansion for a given macro name (works for both, object like
|
||||
and function like macros). This option has to be used very carefully as it
|
||||
not only leaves the whole macro invocation untouched in the generated output
|
||||
but also removes this macro from consideration for Wave itself. This can
|
||||
cause unexpected results if the suppressed macro would influence #ifdef's
|
||||
later on.
|
||||
- Fixed Wave driver to retain all macros defined on the command line in
|
||||
interactive mode.
|
||||
- Fixed problem #5554: wave slex parser eof without eol skips the last line.
|
||||
- Added the compile time configuartion option BOOST_WAVE_WCHAR_T_SIGNEDNESS,
|
||||
which can be set to BOOST_WAVE_WCHAR_T_AUTOSELECT, BOOST_WAVE_WCHAR_T_FORCE_SIGNED,
|
||||
or BOOST_WAVE_WCHAR_T_FORCE_UNSIGNED), it defaults to autoßselect.
|
||||
- Fixed a problem in teh wave driver tool related to #pragma option(output).
|
||||
If wave was invoked in rapid succession this erroneously appended to an
|
||||
existing file instead of overwriting that file.
|
||||
- Fixed #5569: slex CONTLINE token works only for LF line endings
|
||||
|
||||
Boost V1.46.0
|
||||
- V2.2.0
|
||||
|
||||
@@ -381,7 +381,8 @@
|
||||
<p>This functions allows to specify the language mode, in which
|
||||
the <tt>Wave</tt> library should work. The possible
|
||||
language modes are defined by the enumerated type <tt>language_support</tt>:</p>
|
||||
<pre> <span class="keyword">enum</span> language_support {<br> <span class="comment">// support flags for C++98</span><br> support_normal = 0x01,<br> support_cpp = support_normal,<br><span class="comment"><br> // support flags for C99</span><br> support_option_long_long = 0x02,<br> support_option_variadics = 0x04,<br> support_c99 = support_option_variadics | support_option_long_long | 0x08,<br><span class="comment"><br> // the mask for the main language settings</span><br> support_option_mask = 0xFF80,<br><br><span class="comment"> // additional fine tuning of the general behavior</span><br> support_option_insert_whitespace = 0x0080,<br> support_option_preserve_comments = 0x0100,<br> support_option_no_character_validation = 0x0200,<br> support_option_convert_trigraphs = 0x0400,<br> support_option_single_line = 0x0800,<br> support_option_prefer_pp_numbers = 0x1000,<br> support_option_emit_line_directives = 0x2000,<br> support_option_include_guard_detection = 0x4000,<br> support_option_emit_pragma_directives = 0x8000<br> };</pre>
|
||||
<pre> <span class="keyword">enum</span> language_support {<br> <span class="comment">// support flags for C++98</span><br> support_normal = 0x01,<br> support_cpp = support_normal,<br><span class="comment"><br> // support flags for C99</span><br> support_option_long_long = 0x02,<br> support_option_variadics = 0x04,<br> support_c99 = support_option_variadics | support_option_long_long | 0x08,<br><span class="comment"><br> // the mask for the main language settings</span><br> support_option_mask = 0xFFB0,<br><br><span class="comment"> // additional fine tuning of the general behavior</span>
|
||||
support_option_emit_contline = 0x0040,<br> support_option_insert_whitespace = 0x0080,<br> support_option_preserve_comments = 0x0100,<br> support_option_no_character_validation = 0x0200,<br> support_option_convert_trigraphs = 0x0400,<br> support_option_single_line = 0x0800,<br> support_option_prefer_pp_numbers = 0x1000,<br> support_option_emit_line_directives = 0x2000,<br> support_option_include_guard_detection = 0x4000,<br> support_option_emit_pragma_directives = 0x8000<br> };</pre>
|
||||
<p>When used with <tt>support_option_variadics</tt> the support for variadics, placemarkers and the <tt>operator _Pragma()</tt> is enabled in normal C++ mode. When used with the <tt>support_option_long_long</tt> the support for long long suffixes is enabled in C++ mode. </p>
|
||||
<p>The <tt>support_c99</tt> switches on the C99
|
||||
language support, which enables variadics, placemarkers, the <tt>operator _Pragma</tt> and long long suffixes by default. Additionally it disables the C++
|
||||
@@ -444,6 +445,7 @@
|
||||
the <tt>BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES</tt> is defined
|
||||
during compilation to a value not equal to zero (see <a href="compiletime_config.html">here</a> for more
|
||||
information). </li>
|
||||
<li>If the <tt>support_option_emit_contlines</tt> flag is set, the <tt>Wave</tt> library will emit all backslash newline sequences encountered in the input. It will generate a <tt>T_CONTLINE</tt> token for each of those character sequences. Please note that this option is supported by the custom SLex lexer module only. See the cpp_tokens example for a working example.</li>
|
||||
</ul>
|
||||
<p><strong> </strong>If the parameter <tt>reset_macros</tt> is true the <tt>set_language</tt> function internally
|
||||
resets the list of defined macros, so please be careful not to call it
|
||||
@@ -476,7 +478,7 @@
|
||||
<span class="updated"></span>
|
||||
<p class="copyright"><span class="updated">Last
|
||||
updated:
|
||||
<!-- #BeginDate format:fcAm1m -->Sunday, October 12, 2008 20:14<!-- #EndDate -->
|
||||
<!-- #BeginDate format:fcAm1m -->Saturday, August 6, 2011 20:22<!-- #EndDate -->
|
||||
</span> </p>
|
||||
<p> </p>
|
||||
</body>
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="21"> </td>
|
||||
<td width="885"><font size="6" face="Verdana, Arial, Helvetica, sans-serif"><b>Wave V2.0</b></font></td>
|
||||
<td width="885"><font size="6" face="Verdana, Arial, Helvetica, sans-serif"><b>Wave V2.3</b></font></td>
|
||||
<td width="96"><a href="http://www.boost.org"><img src="doc/theme/wave.gif" align="right" border="0" height="68" width="93"></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -100,7 +100,7 @@
|
||||
http://www.boost.org/LICENSE_1_0.txt) </font> </p>
|
||||
<span class="updated"></span>
|
||||
<p class="copyright"><span class="updated">Last updated:
|
||||
<!-- #BeginDate format:fcAm1m -->Tuesday, July 29, 2008 20:31<!-- #EndDate -->
|
||||
<!-- #BeginDate format:fcAm1m -->Saturday, August 6, 2011 20:16<!-- #EndDate -->
|
||||
</span></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -52,16 +52,20 @@ main(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
// read the file to analyse into a std::string
|
||||
// read the file to analyse into a std::string
|
||||
ifstream infile(argv[1]);
|
||||
string teststr;
|
||||
if (infile.is_open()) {
|
||||
infile.unsetf(std::ios::skipws);
|
||||
string line;
|
||||
for (getline(infile, line); infile.good(); getline(infile, line)) {
|
||||
teststr += line;
|
||||
teststr += '\n';
|
||||
}
|
||||
#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
|
||||
// this is known to be very slow for large files on some systems
|
||||
copy (std::istream_iterator<char>(infile),
|
||||
std::istream_iterator<char>(),
|
||||
std::inserter(teststr, teststr.end()));
|
||||
#else
|
||||
teststr = std::string(std::istreambuf_iterator<char>(infile.rdbuf()),
|
||||
std::istreambuf_iterator<char>());
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
teststr = argv[1];
|
||||
@@ -90,6 +94,7 @@ main(int argc, char *argv[])
|
||||
ctx.set_language(boost::wave::support_cpp0x);
|
||||
ctx.set_language(boost::wave::enable_preserve_comments(ctx.get_language()));
|
||||
ctx.set_language(boost::wave::enable_prefer_pp_numbers(ctx.get_language()));
|
||||
ctx.set_language(boost::wave::enable_emit_contnewlines(ctx.get_language()));
|
||||
|
||||
context_type::iterator_type first = ctx.begin();
|
||||
context_type::iterator_type last = ctx.end();
|
||||
|
||||
@@ -37,7 +37,11 @@
|
||||
typedef boost::wave::cpplexer::slex_token<> token_type;
|
||||
|
||||
template struct boost::wave::grammars::intlit_grammar_gen<token_type>;
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<token_type>;
|
||||
#if BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_AUTOSELECT || \
|
||||
BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_FORCE_SIGNED
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<int, token_type>;
|
||||
#endif
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<unsigned int, token_type>;
|
||||
|
||||
#endif // #if BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION != 0
|
||||
|
||||
|
||||
@@ -382,7 +382,7 @@ lexer<IteratorT, PositionT>::init_data[INIT_DATA_SIZE] =
|
||||
#endif
|
||||
TOKEN_DATA(SPACE, "[ \t\v\f]+"),
|
||||
// TOKEN_DATA(SPACE2, "[\\v\\f]+"),
|
||||
TOKEN_DATA(CONTLINE, "\\" "\\n"),
|
||||
TOKEN_DATA(CONTLINE, Q("\\") "\n"),
|
||||
TOKEN_DATA(NEWLINE, NEWLINEDEF),
|
||||
TOKEN_DATA(POUND_POUND, "##"),
|
||||
TOKEN_DATA(POUND_POUND_ALT, Q("%:") Q("%:")),
|
||||
@@ -637,8 +637,10 @@ public:
|
||||
id = T_EOF; // end of input reached
|
||||
|
||||
string_type token_val(value.c_str());
|
||||
|
||||
if (T_CONTLINE != id) {
|
||||
|
||||
if (boost::wave::need_emit_contnewlines(language) ||
|
||||
T_CONTLINE != id)
|
||||
{
|
||||
// The cast should avoid spurious warnings about missing case labels
|
||||
// for the other token ids's.
|
||||
switch (static_cast<unsigned int>(id)) {
|
||||
@@ -673,7 +675,7 @@ public:
|
||||
pos.get_line(), pos.get_column(), pos.get_file());
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case T_LONGINTLIT: // supported in C99 and long_long mode
|
||||
if (!boost::wave::need_long_long(language)) {
|
||||
// syntax error: not allowed in C++ mode
|
||||
@@ -706,7 +708,7 @@ public:
|
||||
at_eof = true;
|
||||
token_val.clear();
|
||||
break;
|
||||
|
||||
|
||||
case T_OR_TRIGRAPH:
|
||||
case T_XOR_TRIGRAPH:
|
||||
case T_LEFTBRACE_TRIGRAPH:
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
|
||||
stream << std::setw(16)
|
||||
<< std::left << boost::wave::get_token_name(id) << " ("
|
||||
<< "#" << token_id(ID_FROM_TOKEN(*this))
|
||||
<< "#" << token_id(BASEID_FROM_TOKEN(*this))
|
||||
<< ") at " << get_position().get_file() << " ("
|
||||
<< std::setw(3) << std::right << get_position().get_line() << "/"
|
||||
<< std::setw(2) << std::right << get_position().get_column()
|
||||
|
||||
@@ -37,7 +37,11 @@
|
||||
typedef boost::wave::cpplexer::lex_token<> token_type;
|
||||
|
||||
template struct boost::wave::grammars::intlit_grammar_gen<token_type>;
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<token_type>;
|
||||
#if BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_AUTOSELECT || \
|
||||
BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_FORCE_SIGNED
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<int, token_type>;
|
||||
#endif
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<unsigned int, token_type>;
|
||||
|
||||
#endif // #if BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION != 0
|
||||
|
||||
|
||||
@@ -36,7 +36,11 @@
|
||||
typedef lex_token<> token_type;
|
||||
|
||||
template struct boost::wave::grammars::intlit_grammar_gen<token_type>;
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<token_type>;
|
||||
#if BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_AUTOSELECT || \
|
||||
BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_FORCE_SIGNED
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<int, token_type>;
|
||||
#endif
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<unsigned int, token_type>;
|
||||
|
||||
#endif // #if BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION != 0
|
||||
|
||||
|
||||
@@ -41,7 +41,11 @@ typedef boost::wave::cpplexer::lex_token<> token_type;
|
||||
|
||||
// no need to change anything below
|
||||
template struct boost::wave::grammars::intlit_grammar_gen<token_type>;
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<token_type>;
|
||||
#if BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_AUTOSELECT || \
|
||||
BOOST_WAVE_WCHAR_T_SIGNEDNESS == BOOST_WAVE_WCHAR_T_FORCE_SIGNED
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<int, token_type>;
|
||||
#endif
|
||||
template struct boost::wave::grammars::chlit_grammar_gen<unsigned int, token_type>;
|
||||
|
||||
// the suffix header occurs after all of the code
|
||||
#ifdef BOOST_HAS_ABI_HEADERS
|
||||
|
||||
Reference in New Issue
Block a user