[29] | 1 | Boost.Wave: A Standard compliant C++ preprocessor library |
---|
| 2 | http://www.boost.org/ |
---|
| 3 | |
---|
| 4 | Copyright (c) 2001-2007 Hartmut Kaiser. Distributed under the Boost |
---|
| 5 | Software License, Version 1.0. (See accompanying file |
---|
| 6 | LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
---|
| 7 | ------------------------------------------------------------------------------- |
---|
| 8 | |
---|
| 9 | TODO (known issues): |
---|
| 10 | - Fix expansion of macros, which replacement-list terminates in a partial |
---|
| 11 | macro expansion. |
---|
| 12 | - Fix the re2c lexer for iterators others then string::iterator (or more |
---|
| 13 | generally for iterators, which aren't random access iterators) |
---|
| 14 | - Try to remove the second parameter from the pp_iterator<>::force_include |
---|
| 15 | function. |
---|
| 16 | - Fix the trigraph backslash problem in the re2c (C/C++ and IDL) scanners, if |
---|
| 17 | there is the end of the (internal) buffer just in between a '??/' and a '\n'. |
---|
| 18 | |
---|
| 19 | - Do a sourceforge release. |
---|
| 20 | |
---|
| 21 | ------------------------------------------------------------------------------- |
---|
| 22 | |
---|
| 23 | CHANGELOG |
---|
| 24 | |
---|
| 25 | Boost V1.34.0 |
---|
| 26 | - Wave Version 1.2.4 |
---|
| 27 | - Added the possibility to explicitly enable/disable the generation of #line |
---|
| 28 | directives. Added a corresponding commandline argument to the Wave driver |
---|
| 29 | tool (--line/-L) which takes either 0 or 1 as its parameter. |
---|
| 30 | - Added support for #pragma wave option(command: value) directives, which |
---|
| 31 | supports the following commands: |
---|
| 32 | . #pragma wave option(line: [0|1]) |
---|
| 33 | Enable/disable generation of #line directives |
---|
| 34 | . #pragma wave option(preserve: [0|1|2]) |
---|
| 35 | Control whitespace preservation |
---|
| 36 | . #pragma wave option(output: ["filename" | null | default]) |
---|
| 37 | Redirect output to the given file (or no output, if 'null' is specified, |
---|
| 38 | or output to the file as given on the command line, if 'default' is |
---|
| 39 | specified). |
---|
| 40 | The filename is resolved relative to the directory of the processed |
---|
| 41 | file. |
---|
| 42 | These new #pragma directives are implemented in the Wave driver tool only. |
---|
| 43 | It is possible to combine several options in one #pragma directive, i.e. |
---|
| 44 | #pragma wave option(line: 0, preserve: 2). |
---|
| 45 | - Changed the signature of the may_skip_whitespace() preprocessing hook to |
---|
| 46 | additionally take the preprocessing context as its first parameter. |
---|
| 47 | - Added the possibility to the Wave tool to disable initial output by |
---|
| 48 | specifying a '-' as the output file. This is useful for syntax checks only or |
---|
| 49 | in conjunction with the #pragma wave option(output: ...) to restrict the |
---|
| 50 | generated output. |
---|
| 51 | - Improved error reporting in the Wave tool on bad output file stream state. |
---|
| 52 | - Switched to Re2C V0.10.0 |
---|
| 53 | - Fixed some of the VC7.1 /W4 warnings. |
---|
| 54 | - The Wave tool now creates the directory hierarchy of output files as needed. |
---|
| 55 | - Applied some optimization, which causes skipping of the parsing for almost |
---|
| 56 | all preprocessor directives when the if block status is false. This gains |
---|
| 57 | upto 10-20% in speed for average applications. |
---|
| 58 | - Added error diagnostic for #elif without matching #if, which was missing |
---|
| 59 | under certain circumstances. |
---|
| 60 | - Avoided the evaluation of #elif expressions if one of the previous #if/#elif |
---|
| 61 | blocks of the same level was true. This gains upto another 5% of speed for |
---|
| 62 | average applications. |
---|
| 63 | - The MS specific integer suffix 'i64' is now correctly supported by the Re2C |
---|
| 64 | and SLex lexer components (only when BOOST_WAVE_SUPPORT_MS_EXTENSIONS is |
---|
| 65 | defined during compilation). |
---|
| 66 | - Changed the Wave tool to print the column number of an error/warning along |
---|
| 67 | with the line number. The new format is: 'filename:line:column: error text'. |
---|
| 68 | - It is now possible to recover from the unbalanced #if/#endif statement |
---|
| 69 | warning in a proper way. |
---|
| 70 | - The Wave library now automaticaly recognizes include guards in headers files |
---|
| 71 | and uses this information to avoid opening these header files more than once. |
---|
| 72 | This speeds up things by upto 10-20% depending on the concrete include files. |
---|
| 73 | - Fixed the failing test t_6_023.cpp. Error reporting for illformed #else |
---|
| 74 | directives was broken (because of some recent changes). |
---|
| 75 | - Fixed the failing test t_5_007.cpp. This was caused by the automatic include |
---|
| 76 | guard detection, which prevented the second inclusion of the specified |
---|
| 77 | include file the test was relying on. |
---|
| 78 | - Added the possibility to switch off the automatic include guard detection. |
---|
| 79 | - Added a new command line option to the Wave tool: --noguard/-G, which |
---|
| 80 | disables the automatic include guard detection. |
---|
| 81 | - Now a header with include guards will be included correctly for a second time |
---|
| 82 | after its include guard symbol gets undefined. |
---|
| 83 | - Added the generating platform to Wave's full version string. |
---|
| 84 | - Made the Wave tool fully interactive when started with input from stdin and |
---|
| 85 | and output to stdout. In this mode the Wave tool preprocesses the input |
---|
| 86 | line by line and not only after receiving the full input as normally. |
---|
| 87 | - Added serialization support for the wave::context object, which stores |
---|
| 88 | all information about defined macros and all #pragma once header information. |
---|
| 89 | - Added the command line option --state (-s) to the Wave tool, which tries to |
---|
| 90 | load the serialized information from the file given as the argument to |
---|
| 91 | --state and save the state information at the end to the same file. |
---|
| 92 | This option is available in interactive mode only. |
---|
| 93 | - Added possibility to verify the compatibility of the configuration used |
---|
| 94 | during compilation of the Wave library with the config info used for the |
---|
| 95 | application. Added a corresponding test to the Wave tool. |
---|
| 96 | - Added a new predefined macro __WAVE_CONFIG__ which expands to an integer |
---|
| 97 | literal containg the configuration information the library was compiled |
---|
| 98 | with. |
---|
| 99 | - Added proper versioning support to the serialization of state. |
---|
| 100 | - Fixed the macro tracing information to contain the column numbers of the macro |
---|
| 101 | definitions as well (the format used is the same as for error messages). |
---|
| 102 | - Fixed a memory leak in the flex_string copy on write code (thanks to Tobias |
---|
| 103 | Schwinger for reporting this bug). |
---|
| 104 | - Fixed a memory corruption bug in the Re2C scanner buffer management code |
---|
| 105 | (thanks to Andreas Sæbjørnsen for spotting the bug). |
---|
| 106 | - Fixed a major performance bottleneck in the lex_token class. This speeds up |
---|
| 107 | Wave for upto another 20-40% depending on the amount of macro expansions to |
---|
| 108 | perform. |
---|
| 109 | - Added the BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES and the |
---|
| 110 | BOOST_SPIRIT_USE_LIST_FOR_TREES Spirit configration constants to the |
---|
| 111 | wave_config.hpp to allow to fine tune the generated Spirit tree code. VC7.1 |
---|
| 112 | gives best results when both are defined. |
---|
| 113 | - Fixed a memory corruption bug triggered by a possible dangling reference. |
---|
| 114 | - Fixed Wave tools startup crash when compiled with VC8. |
---|
| 115 | - Added the name of the generating compiler (BOOST_COMPILER) to the full |
---|
| 116 | Wave version info. |
---|
| 117 | - Fixed all Jamfile.v2 to correctly disable RTTI for VC7.1. |
---|
| 118 | - Added #pragma message("...") to be optionally supported by the Wave library. |
---|
| 119 | This may be enabled by defining the BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE pp |
---|
| 120 | constant to some value different from zero. |
---|
| 121 | - Fixed a couple of typos in the file cpp.cpp preventing it to compile on |
---|
| 122 | gcc 4.1.0 (thanks to Richard Guenther for reporting these). |
---|
| 123 | - Richard Guenther fixed another buffer overrun problem in the Re2C scanner. |
---|
| 124 | - Fixed Jamfile.v2 files for all sample applications. |
---|
| 125 | - Fixed a bug which lead to reporting of an illegal preprocessing directive |
---|
| 126 | inside not-evaluated conditional blocks under certain circumstances (thanks |
---|
| 127 | to Tobias Schwinger for reporting). |
---|
| 128 | - Fixed '#define true ...', '#define false ...' and other constructs, i.e. the |
---|
| 129 | usage of the boolean keywords as identifiers during the preprocessing. Added |
---|
| 130 | a corresponding test case (t_9_017.cpp). Thanks to Andreas Sæbjørnsen for |
---|
| 131 | reporting. |
---|
| 132 | - Corrected the Jamfile[.v2] of the waveidl sample to refer to correct file |
---|
| 133 | names (thanks to Juergen Hunold for submitting a patch). |
---|
| 134 | - Fixed a bug which prevented the main iterator from returning a T_EOF token |
---|
| 135 | at the overall end of the input. |
---|
| 136 | - Fixed a problem, where non-evaluated #elif directives never got passed to the |
---|
| 137 | skippen_token() pp hook (thanks to Andreas Sæbjørnsen for reporting). |
---|
| 138 | - Fixed a problem in the get_tokenname() function. |
---|
| 139 | - Added a missing #define BOOST_WAVE_SOURCE 1 to the wave_config_constant.cpp |
---|
| 140 | file. |
---|
| 141 | - Fixed exception specifications to catch all exceptions by const&. |
---|
| 142 | - Fixed predefined macros to appear to be defined at a position referring to |
---|
| 143 | a file named "<built-in>". Thanks to Andreas Sæbjørnsen for reporting. |
---|
| 144 | - Fixed the Re2C lexer not to segfault on empty files anymore. |
---|
| 145 | - Stripped leading and trailing whitespace for all lines in a config file (Wave |
---|
| 146 | driver tool). |
---|
| 147 | - Fixed RTTI build issue for VC7.1/bjam --v2 (thanks to Rene Rivera for |
---|
| 148 | submitting a patch for the Wave Jamfile.v2). |
---|
| 149 | - Fixed certain problems reported by the Boost inspection tool. |
---|
| 150 | - Fixed a couple of SunPro5.8 warnings. |
---|
| 151 | - Fixed a bug resulting in a crash if a macro was redefined with a shorter |
---|
| 152 | expansion list as it was defined initially. Added a corresponding test case. |
---|
| 153 | - Fixed a bug causing an infinite loop when there was a missing endif in the |
---|
| 154 | main preprocessed file. |
---|
| 155 | - Improved error recovery for illegal preprocessing directive errors. |
---|
| 156 | - Improved error handling and error recovery for conditional expressions |
---|
| 157 | (#if/#elif expressions). |
---|
| 158 | - Wave now passes 160 out of 161 tests from the MCPP V2.6.1 validation |
---|
| 159 | testsuite! |
---|
| 160 | - Added new warning for invalid #line number and filename arguments |
---|
| 161 | - Improved error diagnostics for invalid #line directives containing arbitrary |
---|
| 162 | tokens after at the end of the line. |
---|
| 163 | - Improved error handling wrt the misuse of the __VA_ARG__ token in macro |
---|
| 164 | definitions. |
---|
| 165 | - The warning, that a file is not terminated by a newline is now issued for all |
---|
| 166 | files, not only for the main file (as previous). |
---|
| 167 | - Added a couple of new test cases to verify various diagnostics. |
---|
| 168 | - Fixed wave applet not to report missing #endif's when in interactive mode. |
---|
| 169 | - Cleaned up the Re2C lexer code. |
---|
| 170 | - Fixed a bug, where a empty line followed by an arbitrary token and followed |
---|
| 171 | by a preprocessing directive interpreted the preprcessing directive as if it |
---|
| 172 | were the first non-whitespace token on the line. This error occured only |
---|
| 173 | if the #line directive generation was suppressed. Thanks to Joan Grant for |
---|
| 174 | reporting this problem. |
---|
| 175 | - Fixed a problem in the Wave applet which prevented the correct recognition of |
---|
| 176 | Windows file paths in a configuration file, if this path was enclosed in |
---|
| 177 | quotes. |
---|
| 178 | - Extended the copyright notice to include the year 2007. |
---|
| 179 | - Fixed a problem in preserve=1 mode, when a C style comment triggered the |
---|
| 180 | generation of a #line directive. |
---|
| 181 | - Worked around a linker issue for the True64/CXX compiler, complaining about |
---|
| 182 | multiple defined symbols when using the flex_string class. |
---|
| 183 | |
---|
| 184 | Sat Feb 18 2005 |
---|
| 185 | - Version 1.2.3 |
---|
| 186 | - Added a missing throw() specification to the function |
---|
| 187 | cpp_exception::get_related_name(). |
---|
| 188 | - Fix Boost bug ([ boost-Bugs-1395857 ] wave redefines BSIZE). |
---|
| 189 | - Added missing calls to the skipped_token() preprocessing hook which wasn't |
---|
| 190 | called for pp directives inside disabled #if blocks. |
---|
| 191 | - Made the context<> type noncopyable. |
---|
| 192 | - Introduced the --extended/-x command line option to the wave driver |
---|
| 193 | executable, which enables the #pragma wave system() directive. This directive |
---|
| 194 | is now disabled by default because it may cause a potential security threat. |
---|
| 195 | - Changed the what() function of the macro_handling_exception class, which now |
---|
| 196 | correctly returns the name of the exception type itself. |
---|
| 197 | - Added a diagnostic message to the wave driver executable, which is issued |
---|
| 198 | whenever a #pragma wave system() directive is found, but the -x (--extended) |
---|
| 199 | command line argument was not given. |
---|
| 200 | - Fixed long integer suffix to be allowed to be mixed case (1Ll or 2lL). |
---|
| 201 | - Fixed the BOOST_PP_CAT(1e, -1) pp-token bug. Wave now correctly recognizes |
---|
| 202 | pp-number tokens, which are converted to C++ tokens right before they are |
---|
| 203 | returned from the library. |
---|
| 204 | - Moved the implementation of the token_id query functions (get_token_name(), |
---|
| 205 | get_token_value()) to a separate source file. |
---|
| 206 | - Fixed a bug, which prevented to prefer pp-numbers in files preprocessed as |
---|
| 207 | a result of #include directives. |
---|
| 208 | - Fixed a bug, which prevented to open #include'd files specified by an |
---|
| 209 | absolute path. |
---|
| 210 | - Fixed a problem in the expression parser value type. |
---|
| 211 | - Fixed a dynaload compilation problem with VC7.1 of the re2c lexer tests. |
---|
| 212 | |
---|
| 213 | Sat Dec 24 13:33:53 CST 2005 |
---|
| 214 | - Version 1.2.2 |
---|
| 215 | - Added three new preprocessing hooks: 'found_directive', 'skipped_token' and |
---|
| 216 | 'evaluated_conditional_expression' (thanks to Andreas Sæbjørnsen for the |
---|
| 217 | suggestions). |
---|
| 218 | - Removed hook forwarding functions in the context_type. |
---|
| 219 | - Added missing include_next case branches for get_directivename() function. |
---|
| 220 | - Added new sample: advanced_hooks. |
---|
| 221 | - Fixed a possible buffer overflow in the cpplexer and cpp exception classes. |
---|
| 222 | - Made the cpp_grammar thread safe. |
---|
| 223 | - Removed the need for the get_directivename() function. Fixed typos in the |
---|
| 224 | predefined token table. |
---|
| 225 | - Removed assertions from get_token_name() and get_token_value() and replaced |
---|
| 226 | these with more meaningful code. |
---|
| 227 | - Added the BOOST_WAVE_USE_STRICT_LEXER configuration constant which allows to |
---|
| 228 | decide, whether the '$' character will be recognized as a part of identifiers |
---|
| 229 | or not (the default is BOOST_WAVE_USE_STRICT_LEXER == 0, i.e. '$' will be |
---|
| 230 | recognized as part of identifiers). |
---|
| 231 | - Added the possibility to testwave to extract a tagged comment based on a |
---|
| 232 | preprocessor constant (testwave V0.4.0). |
---|
| 233 | - Made the predefined_macros_grammar thread safe. |
---|
| 234 | - Added dll support for the generated Wave libraries. |
---|
| 235 | - Added the const_iterator based exlicit instantiations for the Re2C lexer to |
---|
| 236 | the built Wave library and dll. |
---|
| 237 | - Added the whitespace handling policy to the context object. This actually is |
---|
| 238 | no separate policy, it's a new preprocessing hook allowing to decide, whether |
---|
| 239 | a concrete token has to be skipped. |
---|
| 240 | - Changed the --preserve option of the wave tool to take a single integer |
---|
| 241 | argument (0: no whitespace is preserved, 1: only comments are preserved, |
---|
| 242 | 2: all whitespace is preserved) |
---|
| 243 | - Edited the command line option descriptions of the wave driver. |
---|
| 244 | - Fixed broken tags in documentation (magically inserted by DreamWeaver). |
---|
| 245 | - Merged the new whitespace_handling policy with the existing preprocessing |
---|
| 246 | hooks. The name of the new preprocessing hook ist may_skip_whitespace(). |
---|
| 247 | - Fixed compatibility issues for CW9.4 in the Wave test aplication. |
---|
| 248 | - Added get_errorcode() member to the wave exception classes allowing to |
---|
| 249 | get back the reason for the exception. |
---|
| 250 | - Added boost::wave::is_recoverable(cpp_exception const&) alowing to decide, |
---|
| 251 | whether it is possible to continue after a cpp_exception has been thrown. |
---|
| 252 | This is a temporary hack to overcome the current limitation of the library |
---|
| 253 | not allowing to do generic error recovery. It allows to recover from 75% of |
---|
| 254 | the generated errors types. |
---|
| 255 | - The --timer command line option for the Wave driver now prints the elapsed |
---|
| 256 | time correctly even if a preprcessing error occured. |
---|
| 257 | - Fixed an error recovery problem which skipped one token after continuing in |
---|
| 258 | case this was a pp directive. |
---|
| 259 | - Added the --autooutput (-E) option to the Wave driver applet which redirects |
---|
| 260 | the generated output to a file named after the input file changing the file |
---|
| 261 | extension to '.i'. |
---|
| 262 | - Changed all throw's to boost::throw_exception. |
---|
| 263 | - Added the possibility to configure the command keyword for the wave specific |
---|
| 264 | #pragma directives. It is now possible to define a string literal via |
---|
| 265 | BOOST_WAVE_PRAGMA_COMMAND, which will be recognized and all corresponding |
---|
| 266 | #pragma's are dispatched to the interpret_pragma() preprocessing hook. |
---|
| 267 | The default value for BOOST_WAVE_PRAGMA_COMMAND is "wave", just to ensure |
---|
| 268 | complete backward compatibility. |
---|
| 269 | - Added missing #pragma warning(pop) directives. |
---|
| 270 | - Fixed a bug wrt error propagation in the expression parser. |
---|
| 271 | - Fixed an assertion fired when cpp_token is used to process the quick_start |
---|
| 272 | sample. |
---|
| 273 | - Fixed a (Windows specific) bug which triggered a boost::file_system exception |
---|
| 274 | under certain conditions. |
---|
| 275 | - Switched to Re2C V0.9.11 |
---|
| 276 | - Fixed a problem with the new '-E' (--autooutput) option. |
---|
| 277 | - Added better error reporting for duplicate macro definitions to the Wave |
---|
| 278 | tool. Added the macro_handling_exception type containing the corresponding |
---|
| 279 | macro name via the new (virtual) get_related_name() function. |
---|
| 280 | - Added the get_severity() function to the exceptions thrown by the Wave |
---|
| 281 | library. |
---|
| 282 | - Extended the copyright notice to include the year 2006. |
---|
| 283 | |
---|
| 284 | Mon Dec 5 22:05:22 CST 2005 |
---|
| 285 | Boost V1.33.1 |
---|
| 286 | - Version 1.2.1 |
---|
| 287 | - Fixed bug reported as Sourceforge bug 1274584. |
---|
| 288 | - Switched to Re2C V0.9.9. |
---|
| 289 | - Fixed a bug where the 'parameters' and 'definition' parameters to the |
---|
| 290 | defined_macro callback of the preprocessing hooks were always empty (thanks |
---|
| 291 | to Stefan Seefeld for reporting). |
---|
| 292 | - Fixed missing namespace specifiers in token definition macros (thanks to |
---|
| 293 | Jozsef Mihalicza for reporting). |
---|
| 294 | - Enabled --preserved and --long_long modes by default for the cpp_tokens |
---|
| 295 | sample. |
---|
| 296 | - Newline tokens reported a wrong line number (offset by one) when using the |
---|
| 297 | Re2C generated lexer (thanks to Jozsef Mihalicza for pointing this out). |
---|
| 298 | - Changed file positions to carry 'unsigned int' line and column numbers. |
---|
| 299 | - Fixed tokens of a generated #line directive to carry the correct column |
---|
| 300 | numbers. |
---|
| 301 | - Tokens now contain the correct filename, line and column numbers even if |
---|
| 302 | a #line directive was encountered. |
---|
| 303 | - Fixed wrong line numbering in reference comments of the tests t_5_002.cpp and |
---|
| 304 | t_5_035.cpp. |
---|
| 305 | - Made sure, that preprocessor expression errors get ignored for 'passive' |
---|
| 306 | #elif branches. |
---|
| 307 | - Fixed an issue reported by the gcc debug stl. |
---|
| 308 | - Added the <vc-7_1-stlport><*><rtti>off directive to all of the V1 Jamfiles. |
---|
| 309 | |
---|
| 310 | Wed Aug 17 20:21:00 CST 2005 |
---|
| 311 | Boost V1.33.0 |
---|
| 312 | Version 1.2 |
---|
| 313 | - Fixed name clash wrt T_DIVIDE on FreeBSD. |
---|
| 314 | - Fixed documentation of the different language_support flags. |
---|
| 315 | - The support for long long suffixes is no longer bound to the variadics mode, |
---|
| 316 | it has to be enabled by the new long_long mode (default in C99). |
---|
| 317 | - Fixed compilation if BOOST_WAVE_DUMP_PARSE_TREE is defined. |
---|
| 318 | - Fixed lexer error message wrt long_long mode. |
---|
| 319 | - Stefan Seefeld fixed a bug in the lexer, where include_next was assumed for |
---|
| 320 | included files containg a "include_" in their name. |
---|
| 321 | - Fixed some trigraph token id's in the lexers. |
---|
| 322 | - Added column information to the re2c generated lexer. |
---|
| 323 | - Added tests for the different lexers. |
---|
| 324 | - Fixed the found_include_directive preprocessing hook to carry the information |
---|
| 325 | about #include_next directives as well. |
---|
| 326 | - Separated the different lexer tests. |
---|
| 327 | - Fixed a bug in the whitespace eater. |
---|
| 328 | - Fixed a bug where Wave emitted the found C++ comments in --preserve mode even |
---|
| 329 | if these were found inside of disabled #if/#endif blocks. |
---|
| 330 | - Removed the function local static grammars to avoid possible raise conditions |
---|
| 331 | and to make CW8.3 happy. |
---|
| 332 | - Unified lexer interface, adjusted namespaces. |
---|
| 333 | - Added lexer testcases to the regression tests. |
---|
| 334 | - Fixed test cases to scale to 64 bit platforms. |
---|
| 335 | - Disabled the MS specific extensions in the lexer tests in a platform related |
---|
| 336 | way. |
---|
| 337 | - Added special handling of the eof tokens inside the lexer iterator classes |
---|
| 338 | for Comeau. |
---|
| 339 | - Applied a workaround proposed by David Abrahams to make the slex lexer work |
---|
| 340 | on the CodeWarrior platforms. |
---|
| 341 | |
---|
| 342 | Sun May 8 17:22:59 WEDT 2005 |
---|
| 343 | Version 1.1.17 |
---|
| 344 | - Added ill_formed_character_literal and ill_formed_integer_literal errors. |
---|
| 345 | - Improved error handling and diagnostics for integer overflow in #if/#elif |
---|
| 346 | expressions. |
---|
| 347 | - Fixed a bug in the testwave application which prevented the correct |
---|
| 348 | recognition of expected errors under certain circumstances. |
---|
| 349 | - Fixed a portability problem (for gcc 3.3.x) in the testwave application. |
---|
| 350 | - Enforced that #if/#endif are balanced file wise. |
---|
| 351 | - Changed the command line arguments for the Wave testrun to use absolute |
---|
| 352 | directories. |
---|
| 353 | - Changed the test application to return a value != zero if one of the given |
---|
| 354 | config files were not found. |
---|
| 355 | - Fixed a command line parsing problem caused by a change in the parameter |
---|
| 356 | handling inside in the program_options library. |
---|
| 357 | - Switched to the most recent version of re2c (V0.9.7.dev). |
---|
| 358 | - Fixed a como compilation error and several como --a warnings. |
---|
| 359 | - The T_EOF token doesn't carry the value of the previous token anymore. |
---|
| 360 | - Added operator==() to the token classes to fix the ambiguity error reported |
---|
| 361 | by the True64 compiler. |
---|
| 362 | - Improved the error message, when empty arguments are used in pure C++ mode. |
---|
| 363 | - Added character literal out of range testing and an additional corresponding |
---|
| 364 | error message. |
---|
| 365 | - Fixed parsing of long character literals (such as '\x1234'). |
---|
| 366 | - Fixed almost all problems diagnosed by the Boost inspection report. |
---|
| 367 | - Several fixes to make the True64 compiler happy. |
---|
| 368 | - Added the long long suffix handling to the C99 mode (LL/ll). |
---|
| 369 | - Fixed a bug in the slex regex specifications. |
---|
| 370 | |
---|
| 371 | Thu Apr 7 10:07:45 WEDT 2005 |
---|
| 372 | Version 1.1.16 |
---|
| 373 | - Fixed a bug in the white space eating component, which prevented a C++ |
---|
| 374 | comment to be suppressed if it followed after another whitespace. |
---|
| 375 | - Fixed the inconsistencies between the documentation and the behaviour wrt the |
---|
| 376 | different include search paths. See the Wave driver docs for details of how |
---|
| 377 | the '-I', '-I-', and '-S' options work. |
---|
| 378 | - Allowed to specify more than one config file ('@' syntax) on the command line |
---|
| 379 | of the wave driver executable. |
---|
| 380 | - Changed copyrights in all files to reflect the acceptance of Wave into Boost. |
---|
| 381 | - Unknown preprocessing directives were not recognised as such anymore. |
---|
| 382 | - If comments shouldn't be preserved all C++ comments are replaced by newline |
---|
| 383 | tokens (instead of beeing igored completely). |
---|
| 384 | - Fixed a bug in the white space eater component. |
---|
| 385 | - Fixed a bug which reported wrong line numbers for error encountered during |
---|
| 386 | retokenisation (concatination). |
---|
| 387 | - Fixed a bug in the unescaping code. |
---|
| 388 | - Fixed a compilation error of the testwave executable (added a missing |
---|
| 389 | namespace specifier). |
---|
| 390 | - Added a missing header to make cpp.re.cpp compile on CW. |
---|
| 391 | - The predefined macro __BASE_FILE__ now returns a properly escaped file name |
---|
| 392 | string. |
---|
| 393 | - Fixed the function boost::wave::util::impl::unescape_lit(). |
---|
| 394 | - Added the Wave unit test framework. For now it contains about 60 unit tests |
---|
| 395 | executed by a special test driver (testwave). |
---|
| 396 | - Added the '$F' replacement string to the testwave application. This allows |
---|
| 397 | to handle file paths sensitive comparison of the expected and real results. |
---|
| 398 | - Fixed a minor problem in the whitespace eating component. |
---|
| 399 | - Added optional trigraph conversion. |
---|
| 400 | - Changed all size_t, time_t etc. to std::size_t, std::time_t etc (for CW). |
---|
| 401 | - If the comments should not be preserved every C comment containing at minimum |
---|
| 402 | one newline is now converted to a newline token. |
---|
| 403 | - Added the lexed_tokens sample. |
---|
| 404 | - Fixed warnings and errors reported by the CodeWarrior compiler. |
---|
| 405 | - Added the '$V' replacement string to the testwave application. It expands to |
---|
| 406 | the current BOOST_LIB_VERSION. |
---|
| 407 | - Diagnosed the attempt to redefine the alternative operators as and, or etc. |
---|
| 408 | - Improved error handling. |
---|
| 409 | - Disabled the flex_string class for VC7, enabled to fallback to std::string |
---|
| 410 | for this compiler. |
---|
| 411 | - Renamed files to comply with the Boost rules. |
---|
| 412 | - Added the first part of the MCPP validation suite to the Wave unit tests. |
---|
| 413 | - Added even more missing "using namespace std;" statements for functions from |
---|
| 414 | the C runtime library. The Wave test suite now contains more than 100 unit |
---|
| 415 | tests. |
---|
| 416 | - Added the $P/$P(basename) replacement string to the testwave application |
---|
| 417 | which expands to the full path of the current file ($P) or to the current |
---|
| 418 | directory/basename ($P(basename)). |
---|
| 419 | - Fixed a bunch of portability problmes revealed by the regression tests on |
---|
| 420 | different platforms. Thanks to Stefan Slapeda for his support to make it work |
---|
| 421 | on the cw-9_4 toolset (win32). |
---|
| 422 | |
---|
| 423 | Tue Mar 22 14:52:45 WEST 2005 |
---|
| 424 | Version 1.1.15 |
---|
| 425 | - Fixed a bug where the complete set of C99 predefined macros were pre-defined |
---|
| 426 | when in C++ mode and variadics were enabled. |
---|
| 427 | - When in variadics or C99 mode the __BASE_FILE__ predefined macro expanded to |
---|
| 428 | <Unknown>. |
---|
| 429 | - Added the --listincludes option to the Wave driver executable which allows to |
---|
| 430 | log the file names of the include files opened. |
---|
| 431 | - Fixed a gcc warning in token_cache.hpp (unused variable end). |
---|
| 432 | - Changed the logic behind #include_next. It now starts searching with the |
---|
| 433 | next directory after the directory the current file (the file containing the |
---|
| 434 | #include_next directive) is located in. |
---|
| 435 | - Changed the signature of the undefined_macro preprocessing hook to take the |
---|
| 436 | token itself and not the macro name only. This is important to pass the full |
---|
| 437 | context information about the position of the #undef directive to the |
---|
| 438 | user provided hook (thanks to Stefan Seefeld for pointing that out). |
---|
| 439 | - Fixed several broken links in the Context Policy topic. |
---|
| 440 | - Fixed a bug in the handling of the #include_next directive inside of |
---|
| 441 | non-evaluated #if blocks. |
---|
| 442 | - Fixed a bug in the #include_next handling code (thanks to Stefan Seefeld). |
---|
| 443 | - Changed the signature of the opened_include_file() preprocessing hook which |
---|
| 444 | now receives not only the absolute file name of the openend include file but |
---|
| 445 | additionally gets passed the (possibly) relative path of the openend include |
---|
| 446 | file. This concrete format of the relative path depends on the format of the |
---|
| 447 | include search directory given to the library. |
---|
| 448 | - Added a new preprocessing hook 'found_include_directive()' which gets called |
---|
| 449 | for every #include directive (even for those where the file to include |
---|
| 450 | doesn't exist) and which gets passed the (expanded) token sequence found |
---|
| 451 | after the #include directive token. |
---|
| 452 | - The file names passed to the preprocessing hooks are now normalised. |
---|
| 453 | - Changed the opened_include_file() preprocessing hook to receive the correct |
---|
| 454 | relative path even if the included file was found in the current directory. |
---|
| 455 | - Fixed a bug which reported 'defined(or)' as invalid (similarly all the other |
---|
| 456 | alternative bit operation token types). |
---|
| 457 | - Fixed a bug which prevented to define variadic macros from the command line. |
---|
| 458 | - Added a 'preserve comments' mode to preserve the comments in the input stream |
---|
| 459 | not inserted into macro definitions. |
---|
| 460 | - Added a new --preserve (-p) command line switch to the wave driver |
---|
| 461 | application to allow comments to be preserved in the generated output stream. |
---|
| 462 | |
---|
| 463 | Mon Feb 21 09:30:04 WEST 2005 |
---|
| 464 | Version 1.1.14 (Fixes in response to the Boost review) |
---|
| 465 | |
---|
| 466 | Wave was accepted into Boost! |
---|
| 467 | |
---|
| 468 | With special thanks to Tom Brinkman, who volunteered to be the review manager. |
---|
| 469 | |
---|
| 470 | With thanks to David Abrahams, Beman Dewes, Reece Dunn, Larry Evans, |
---|
| 471 | Doug Gregor, Joel de Guzman, Baptiste Lepilleur, Andy Little, Paul Mensonides, |
---|
| 472 | Dan Nuffer, Andreas Pokorny, Vladimir Prus, Gennadiy Rozental, Michiel Salters, |
---|
| 473 | Jonathan Turkanis, Chris Uzdavinis, Pavel Vozenilek, Michael Walter for bug |
---|
| 474 | reports, fixes and hints. |
---|
| 475 | |
---|
| 476 | - Added support for the MS extensions #region and #endregion, which simply get |
---|
| 477 | ignored by Wave. The support for these is enabled only, when the pp constant |
---|
| 478 | BOOST_WAVE_SUPPORT_MS_EXTENSIONS is defined. Otherwise these get flagged as |
---|
| 479 | an illegal preprocessor directive (as before). |
---|
| 480 | - Fixed a problem, where the replacement text for a #pragma directive got lost |
---|
| 481 | if this directive was on the last line of a processed (include-)file. |
---|
| 482 | - Changed the default value for BOOST_WAVE_SUPPORT_MS_EXTENSIONS for non- |
---|
| 483 | Windows systems to zero. |
---|
| 484 | - Updated outdated external links in the documentation. |
---|
| 485 | - Fixed certain grammatical and stylistic quirks in the documentation. |
---|
| 486 | - Fixed a problem in libs/wave/build/Jamfile.v2 (as reported by Larry Evans). |
---|
| 487 | Fixed the Jamfile.v2 in the samples directories accordingly. |
---|
| 488 | - Added the '<toolset>vc-7_1:<rtti>off' to all Jamfile.v2 files to adjust for |
---|
| 489 | the internal buffer overflow bug in the VC7.1 compiler (reported by Joel de |
---|
| 490 | Guzman). |
---|
| 491 | - Changed the '<toolset>vc-7_1:<rtti>off' to '<toolset>vc-7.1:<rtti>off' as |
---|
| 492 | required by the Boost.Build.v2 library (suggested by Vladimir Prus). |
---|
| 493 | - Finally fixed the Jamfile.v2 file (after a suggestion from Reece Dunn) |
---|
| 494 | - Fixed the column number reported for tokens for Slex lexer based |
---|
| 495 | configurations (reported by Baptiste Lepilleur). |
---|
| 496 | - Added the __BASE_FILE__ predefined macro, which contains a string literal |
---|
| 497 | of the main file name to preprocess (the one the context<> template was |
---|
| 498 | created with). (suggested by Pavel Vozenilek) |
---|
| 499 | - Used the boost::reverse_iterator instead of the std::reverse_iterator |
---|
| 500 | for the flex_string class to allow compilation of Wave with VC7.0 |
---|
| 501 | (as suggested by Reece Dunn). |
---|
| 502 | - Fixed a problem in the include_path template, which throwed a |
---|
| 503 | boost::filesystem exception whenever a character was used in a file name |
---|
| 504 | to include, which is marked as illegal by the default name checker of the |
---|
| 505 | boost::filesystem::path. |
---|
| 506 | |
---|
| 507 | Version 1.1.13 (Boost review candidate 2, bug fixed version) |
---|
| 508 | - Fixed a problem, where the context<> template referenced temporary iterator |
---|
| 509 | objects from the underlying stream (thanks to Michiel Salters for reporting |
---|
| 510 | this). |
---|
| 511 | - Fixed a bug in the re2c lexer, which allowed to dereference the end iterator |
---|
| 512 | of the underlying input stream (thanks to Doug Gregor for pointing this out). |
---|
| 513 | - Fixed several assertions fired by the iterator checking code of the VC8 stl. |
---|
| 514 | |
---|
| 515 | Version 1.1.12 (Boost review candidate) |
---|
| 516 | - A rough performance analysis showed, that 30% of the time is spent parsing |
---|
| 517 | the input for pp directives (cpp_grammar), 35% of the time is spent inside |
---|
| 518 | the flex_string code, mainly in the copy constructor and assignment |
---|
| 519 | operator, 15% of the time is spent inside the list and vector member |
---|
| 520 | functions, 10% is spent for memory allocation but only 1% of the time is |
---|
| 521 | spent in the re2c lexer. |
---|
| 522 | - Identified a performance problem, where the token_cache was instantiated |
---|
| 523 | for every created lexer object, but needed to be initialised only once. |
---|
| 524 | - Added #include <wave_version.hpp> to wave_config.hpp |
---|
| 525 | - Fixed problems reported by the gcc 3.4.1 compiler. |
---|
| 526 | - Adjusted Jamfiles for the new toolset names introduced in Boost V1.32. |
---|
| 527 | |
---|
| 528 | Version 1.1.11 |
---|
| 529 | - Updated copyrights. |
---|
| 530 | - Fixed some bugs introduced by the latest refactoring. |
---|
| 531 | - Tried to fix the expansion of macros, which replacement-list terminates in a |
---|
| 532 | partial macro expansion. No success so far. |
---|
| 533 | |
---|
| 534 | Version 1.1.10 |
---|
| 535 | - Refactored some of the macro map (macro namespace) code (added comments, |
---|
| 536 | splitted into separate files), |
---|
| 537 | - Fixed some typename errors in cpp_macromap.hpp (thanks to Vladimir Prus). |
---|
| 538 | - Fixed the BoostBuild V2 Jamfiles (thanks to Vladimir Prus). |
---|
| 539 | |
---|
| 540 | Version 1.1.9 |
---|
| 541 | - Moved all of the #pragma wave option(value) operators out of the wavelib into |
---|
| 542 | the wave driver program. Removed enable_trace() and trace_flags() policy |
---|
| 543 | functions. Renamed trace_policy into context_policy. |
---|
| 544 | - Added the defined_macro() and undefined_macro() preprocessing hooks to allow |
---|
| 545 | easily to build macro cross referencers and such. |
---|
| 546 | |
---|
| 547 | Version 1.1.8 |
---|
| 548 | - Replaced the usage of the string::erase() and string::insert() functions, |
---|
| 549 | which were the only non-const string member functions used. |
---|
| 550 | - Token pasting is now well defined in variadics mode (was in C++0x mode only). |
---|
| 551 | - Changed the timing code in the wave driver to include the parsing of |
---|
| 552 | files included by the --forceinclude command line switch. |
---|
| 553 | - Performance measurements (very informal) [sec], the files are some of the |
---|
| 554 | preprocessor specific test cases from Paul Mensonides chaos_pp library. |
---|
| 555 | |
---|
| 556 | std::string flex_string const_string const_string |
---|
| 557 | 12 Byte 28 Byte |
---|
| 558 | arithmetic.cpp 2.543 1.742 0.951 1.001 |
---|
| 559 | array.cpp 2.453 1.762 0.951 1.011 |
---|
| 560 | comparison.cpp 0.560 0.340 0.270 0.280 |
---|
| 561 | control.cpp 0.590 0.340 0.290 0.300 |
---|
| 562 | debug.cpp 0.370 0.310 0.190 0.190 |
---|
| 563 | detection.cpp 0.050 0.060 0.030 0.030 |
---|
| 564 | extended.cpp 0.370 0.260 0.190 0.190 |
---|
| 565 | facilities.cpp 0.610 0.340 0.290 0.300 |
---|
| 566 | iteration.cpp 1.081 0.550 0.410 0.450 |
---|
| 567 | list.cpp 1.742 1.141 0.811 0.851 |
---|
| 568 | logical.cpp 0.070 0.200 0.040 0.040 |
---|
| 569 | punctuation.cpp 0.030 0.080 0.020 0.020 |
---|
| 570 | repetition.cpp 1.392 0.851 0.650 0.690 |
---|
| 571 | selection.cpp 0.440 0.270 0.210 0.220 |
---|
| 572 | slot.cpp 0.680 0.350 0.240 0.270 |
---|
| 573 | tuple.cpp 0.420 0.240 0.190 0.210 |
---|
| 574 | |
---|
| 575 | |
---|
| 576 | Wed Aug 25 13:23:27 WEDT 2004 |
---|
| 577 | Version 1.1.7 |
---|
| 578 | - Branched for Boost Release. |
---|
| 579 | - Removed several features from the code base: |
---|
| 580 | . removed C++0x support |
---|
| 581 | . removed TST support |
---|
| 582 | - Fixed the program_option validator syntax, which has changed since the last |
---|
| 583 | update. |
---|
| 584 | - Removed misleading configuration options from the cpp_config.hpp file, |
---|
| 585 | because the application will have to use the same config options as were used |
---|
| 586 | during the compilation of the library. |
---|
| 587 | - Changed the naming convention of typedef'd types in the library. Removed the |
---|
| 588 | _t suffix, wherever possible. |
---|
| 589 | - Updated the documentation to reflect the removal of the C++0x features. |
---|
| 590 | |
---|
| 591 | - Changed the licensing scheme to: |
---|
| 592 | // Copyright 2004 Joe Coder. Distributed under the Boost |
---|
| 593 | // Software License, Version 1.0. (See accompanying file |
---|
| 594 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
---|
| 595 | |
---|
| 596 | Mon May 24 10:02:47 WEDT 2004 |
---|
| 597 | Version 1.1.6 |
---|
| 598 | - Fixed a incompatibility with the new program_options version. |
---|
| 599 | |
---|
| 600 | Version 1.1.5 |
---|
| 601 | Version 1.0.6 |
---|
| 602 | - Fixed a bug, which reported an #include statement as ill formed, if it was |
---|
| 603 | followed by an empty C comment only. This was an error in the cpp.re regular |
---|
| 604 | expression for C comments. Additionally, since this change simplified the |
---|
| 605 | Re2C generated lexer a lot it was possible to remove the compiler workaround |
---|
| 606 | for the VC7.1 compiler which prevented the optimization of this lexer. |
---|
| 607 | |
---|
| 608 | Mon Mar 29 09:36:59 WEDT 2004 |
---|
| 609 | - Corrected the signature of the main() functions (was main(int, char const*[])). |
---|
| 610 | |
---|
| 611 | Sun Mar 28 12:55:59 WEDT 2004 |
---|
| 612 | Version 1.1.4 |
---|
| 613 | - Fixed a problem, where the first returned token was lost, whenever a |
---|
| 614 | --forceinclude file was given. |
---|
| 615 | - Adjusted the Wave driver and the other samples to use the new program_options |
---|
| 616 | library syntax (V1.1.x only). |
---|
| 617 | |
---|
| 618 | Mon Mar 1 19:14:21 WEST 2004 |
---|
| 619 | Version 1.1.2 |
---|
| 620 | Version 1.0.4 |
---|
| 621 | - Fixed a problem, which does not report an error, if in a #define statement in |
---|
| 622 | between a macro name and its replacement list were no whitespace given. |
---|
| 623 | - Fixed a bug, which generated an unexpected exception of the $ character in the |
---|
| 624 | input. |
---|
| 625 | - Macro definitions, which differ by whitespace only (one definition contains |
---|
| 626 | whitespace at a certain position, the other definition does not) are correctly |
---|
| 627 | reported as a warning now. |
---|
| 628 | - Fixed a problem, where different formal argument names during macro |
---|
| 629 | redefinition were not flagged as a warning. |
---|
| 630 | - A wide character string used in a #line directive wasn't flagged as an error. |
---|
| 631 | |
---|
| 632 | Sun Feb 29 19:10:14 WEST 2004 |
---|
| 633 | Used the test suite distributed with the mcpp V2.4 preprocessor to fix a bunch |
---|
| 634 | of mostly minor issues: |
---|
| 635 | - Fixed trigraph backslash followed by a newline handling (??/ \n) in the |
---|
| 636 | re2c (C/C++ and IDL) scanners. |
---|
| 637 | - Fixed a digraph/trigraph token type handling problem during macro expansion. |
---|
| 638 | - Fixed a digraph/trigraph token type problem during handling of the null |
---|
| 639 | preprocessor directive. |
---|
| 640 | - Fixed several signed/unsigned conversion bugs in the expression evaluator. |
---|
| 641 | - Fixed the || and && operators in the expression evaluator to stop evaluation, |
---|
| 642 | as only the outcome of the overall expression is determined. |
---|
| 643 | - Fixed the expression evaluation engine to detect divide by zero errors. |
---|
| 644 | - Fixed a bug with operator || and && arithmetic (the deduced type was wrong). |
---|
| 645 | - Fixed a bug with the unary operators ! and - which IN conjunction with an |
---|
| 646 | arithmetic operation yielded A wrong result type. |
---|
| 647 | - Fixed a bug, which reported a macro definition as an invalid redefinition, if |
---|
| 648 | it was different from the original definition only by different whitespaces. |
---|
| 649 | - Fixed a bug, which reported the redefinition of one of the alternative tokens |
---|
| 650 | as 'and', 'bit_and' etc. as invalid. |
---|
| 651 | - Fixed a bug in the character literal parser, which prevented the recognition |
---|
| 652 | of multibyte character literals. |
---|
| 653 | |
---|
| 654 | - Moved the cpp_token_ids.hpp header into the main wave.hpp header, because the |
---|
| 655 | values defined therein aren't changeable by the user anyway. |
---|
| 656 | - Fixed some spelling errors in the documentation (thanks to Rob Stewart). |
---|
| 657 | |
---|
| 658 | Tue Feb 3 20:20:16 WEST 2004 |
---|
| 659 | - Fixed the problem, that macro definitions in a config file were flagged as |
---|
| 660 | an error, if there was any whitespace in between the -D and the macro name |
---|
| 661 | (same problem existed for -P). |
---|
| 662 | |
---|
| 663 | Fri Jan 30 20:28:27 WEST 2004 |
---|
| 664 | - Fixed a missing boostification in the trace support header. |
---|
| 665 | - Added a missing std:: namespace qualification to the list_includes.cpp sample |
---|
| 666 | file. |
---|
| 667 | - Fixed line ending problems with the cpp.re and idl.re files. |
---|
| 668 | - Added quick_start sample. |
---|
| 669 | |
---|
| 670 | Sun Jan 25 20:26:45 WEST 2004 |
---|
| 671 | This version was submitted to Boost as the review candidate (V1.1.0) |
---|
| 672 | - Fixed invalid explicit instantiation syntax as reported by the Comeau |
---|
| 673 | compiler. |
---|
| 674 | - Added a missing header to flex_string.hpp. |
---|
| 675 | |
---|
| 676 | Sat Jan 24 19:47:44 WEST 2004 |
---|
| 677 | - Completely decoupled the used lexer from the preprocessor. |
---|
| 678 | - Unfortunately had to change the template interface of the context class. It |
---|
| 679 | now instead of the token type takes the type of the lexer to use. |
---|
| 680 | - Reintroduced the cpp_tokens, list_includes and waveidl samples. |
---|
| 681 | . cpp_tokens is based on the SLex lexer |
---|
| 682 | . list_includes shows the usage of the include file tracing capability |
---|
| 683 | . waveidl uses the Re2C based IDL lexer in conjunction with the default token |
---|
| 684 | type |
---|
| 685 | |
---|
| 686 | Tue Jan 13 20:43:04 WEST 2004 |
---|
| 687 | - Fixed several compilation issues under linux (gcc 3.2.3, gcc 3.3, gcc 3.3.2, |
---|
| 688 | gcc 3.4, Intel V7.1) |
---|
| 689 | - Fixed a compatibility problem with Spirit versions older than V1.7. |
---|
| 690 | |
---|
| 691 | Mon Jan 12 20:39:50 WEST 2004 |
---|
| 692 | - Boostified the code base: |
---|
| 693 | . Moved code into namespace boost. |
---|
| 694 | . Prefixed all pp constants with "BOOST_". |
---|
| 695 | . Refactured the directory structure. |
---|
| 696 | - Removed IDL mode and SLex lexer from the code base. These will be re-added as |
---|
| 697 | samples. |
---|
| 698 | - Changed the Wave configuration system to be more flexible (all |
---|
| 699 | #if defined(BOOST_WAVE_...) changed to #if BOOST_WAVE_... != 0), |
---|
| 700 | which allows to configure the library without changing the code base itself |
---|
| 701 | |
---|
| 702 | Sat Jan 10 18:17:50 WEST 2004 |
---|
| 703 | - Incorporated Andrei Alexandrescu's latest changes to the flex_string class, |
---|
| 704 | which resulted in an overall spedd gain of about 5-10%. |
---|
| 705 | |
---|
| 706 | Wed Jan 7 17:46:45 WEST 2004 |
---|
| 707 | - Found a major performance hole! The achieved general speedup is about 50-70%. |
---|
| 708 | - Added missing old MS specific extensions to the re2c lexer (_based, |
---|
| 709 | _declspec, _cdecl, _fastcall, _stdcall, _inline and _asm). |
---|
| 710 | - Added support for #include_next (as implemented by gcc). |
---|
| 711 | - Fixed compilation problems with gcc 3.3.1 |
---|
| 712 | - Avoid to look up in symbol table of a potential macro name twice. |
---|
| 713 | - Added the Spirit SLex lexer sample to the Wave source tree, because it was |
---|
| 714 | removed from the Spirit distribution. |
---|
| 715 | - Removed the configuration option, which allowed to reverse the names stored |
---|
| 716 | in the symbol tables. |
---|
| 717 | - Implemented experimental support for using a TST (ternary search tree) as the |
---|
| 718 | container for the symbol tables. |
---|
| 719 | |
---|
| 720 | Sun Jan 5 12:30:50 2004 |
---|
| 721 | - Released V1.0.0 |
---|
| 722 | |
---|
| 723 | Sun Jan 4 00:11:50 2004 |
---|
| 724 | - Removed tabs from the flex_string.hpp file. |
---|
| 725 | - Modified the input_functor.hpp file to sqeeze out some milliseconds at |
---|
| 726 | runtime. |
---|
| 727 | - The --timer option now prints the overall elapsed time even if an error |
---|
| 728 | occured. |
---|
| 729 | - Added support for #pragma once. |
---|
| 730 | |
---|
| 731 | Fri Jan 2 22:58:54 2004 |
---|
| 732 | - Fixed a bug in the code, which predefines the preprocessor constants. |
---|
| 733 | - Fixed a bug in intlit_grammar<> initialisation code. |
---|
| 734 | |
---|
| 735 | Thu Jan 1 21:15:03 2004 |
---|
| 736 | - Fixed a bug while predefining a macro with a value through the commmand line. |
---|
| 737 | - Fixed a bug, which reported a macro definition as illegal, if the redefined |
---|
| 738 | macro was a function like macro with parameters. |
---|
| 739 | - Fixed a bug, if concatenation of two tokens resulted in a C++ comment start |
---|
| 740 | token. |
---|
| 741 | |
---|
| 742 | Thu Jan 1 15:01:54 2004 |
---|
| 743 | - Finished license migration. |
---|
| 744 | |
---|
| 745 | Wed Dec 31 12:23:55 2003 |
---|
| 746 | - Changed the copyright and licensing policiy to be Boost compatible. |
---|
| 747 | |
---|
| 748 | Wed Dec 31 12:01:14 2003 |
---|
| 749 | - Fixed a problem while compiling certain headers from the Microsoft Windows |
---|
| 750 | SDK: |
---|
| 751 | #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\ |
---|
| 752 | nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\ |
---|
| 753 | CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\ |
---|
| 754 | nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) |
---|
| 755 | where essentially is no whitespace between the parameter list and the macro |
---|
| 756 | replacement list. |
---|
| 757 | - Fixed a problem with the MS extension __declspec, which now is recognized |
---|
| 758 | correctly. |
---|
| 759 | |
---|
| 760 | Sat Dec 27 14:48:29 2003 |
---|
| 761 | - Fixed remaining problems with assign/assign_a. |
---|
| 762 | - Fixed some gcc warnings about signed/unsigned comparision mismatch. |
---|
| 763 | |
---|
| 764 | Tue Nov 11 20:51:41 WEST 2003 |
---|
| 765 | - Changed the IDL mode to recognize identifiers only. All keywords (except |
---|
| 766 | 'true' and 'false') are returned as identifiers. This allows for easy |
---|
| 767 | extension of the IDL language. The drawback is, that after preprocessing |
---|
| 768 | there needs to be just another lexing stage, which recognizes the keywords. |
---|
| 769 | - Fixed a possible problem, when in between a #if/#elif directive and a |
---|
| 770 | subsequent opening parenthesis Wave finds no whitespace: |
---|
| 771 | #if(_WIN_VER >= 0x0500) |
---|
| 772 | is now recognized correctly. |
---|
| 773 | (This problem was pointed out by Porter Schermerhorn). |
---|
| 774 | |
---|
| 775 | Sun Nov 9 21:05:23 WEST 2003 |
---|
| 776 | - Started to work on implementation of an IDL lexer for the TAO idl compiler. |
---|
| 777 | . Branched off the Re2C C++ lexer and related files as a starting point for |
---|
| 778 | the new IDL lexer. Added connfiguration means to allow compile time |
---|
| 779 | decision, in which mode to operatoe (C++ or IDL). |
---|
| 780 | . Implemented the Re2C based IDL lexing component. |
---|
| 781 | . Fixed all occurences of non-IDL tokens (as T_COLON_COLON and T_ELLIPSIS) |
---|
| 782 | |
---|
| 783 | Sat Nov 8 20:05:52 WEST 2003 |
---|
| 784 | - Version 1.0.0 |
---|
| 785 | - Munged the email addresses embedded within the source files. |
---|
| 786 | - Adjusted for the new actor names in Spirit (assign_a and append_a). |
---|
| 787 | |
---|
| 788 | Thu Aug 21 16:54:20 2003 |
---|
| 789 | - Removed the internally used macro 'countof()' to avoid possible nameclashes |
---|
| 790 | with user code. |
---|
| 791 | - Fixed a bug, which prevented the execution of the concatination operator '##' |
---|
| 792 | while expanding object-like macros. |
---|
| 793 | |
---|
| 794 | Tue Aug 5 10:04:00 2003 |
---|
| 795 | - Fixed a false assertion, if a #pragma directive started with some whitespace |
---|
| 796 | on the line. |
---|
| 797 | - Added the #pragma wave timer() directive to allow rough timings during |
---|
| 798 | processing. This is done on top of a new callback hook for unrecognized |
---|
| 799 | #pragma's, which allows to easily add new pragma commands without changing |
---|
| 800 | the Wave library. |
---|
| 801 | - Fixed a bug in the whitespace insertion engine, which prevented the insertion |
---|
| 802 | of a whitespace token in between two consecutive identifier tokens or a |
---|
| 803 | integer literal token followed by an identifier token. |
---|
| 804 | - Fixed a bug during macro concatenation, which allowed to concatenate |
---|
| 805 | unrelated tokens from the input stream: |
---|
| 806 | #define CAT(a, b) PRIMITIVE_CAT(a, b) |
---|
| 807 | #define PRIMITIVE_CAT(a, b) a ## b |
---|
| 808 | #define X() B |
---|
| 809 | #define ABC 1 |
---|
| 810 | CAT(A, X() C) // AB C |
---|
| 811 | CAT(A, X()C) // correct: AB C, was 1 |
---|
| 812 | - Fixed a 64 bit portability problem. |
---|
| 813 | - Added pragma wave timer(suspend) and wave timer(resume) |
---|
| 814 | - Fixed a ODR problem with static initialization data for predefined macros. |
---|
| 815 | - Ported the iterators to the new iterator_adaptors. |
---|
| 816 | - Updated the documentation to reflect the recent changes |
---|
| 817 | |
---|
| 818 | Sun Jun 29 12:35:00 2003 |
---|
| 819 | - Fixed 64 bit compatibility warnings. |
---|
| 820 | - Fixed a bug, which prevented the correct recognition of a #line directive, if |
---|
| 821 | only the filename part of this directive was generated by a macro expansion. |
---|
| 822 | - Fixed a bug during macro expansion of conditional expressions, which |
---|
| 823 | prevented the correct expansion of certain scoped macros. |
---|
| 824 | |
---|
| 825 | Fri Jun 27 09:50:14 2003 |
---|
| 826 | - Changed the output of the overall elapsed time (option --timer) to cerr. |
---|
| 827 | - Added a configuration constant WAVE_REVERSE_MACRONAMES_FOR_SYMBOLTABLE, which |
---|
| 828 | reverses the macro names while storing them into the symbol table, which |
---|
| 829 | allows to speed up name lookup especially, if the macro names are very long |
---|
| 830 | and if these share a common prefix. |
---|
| 831 | - Fixed a very subtle bug, which prevented the recognition of fully qualified |
---|
| 832 | macro names during the macro expansion of conditionals expressions (for |
---|
| 833 | #if/#elif). |
---|
| 834 | - Improved the error output for the illformed pp expression error. |
---|
| 835 | |
---|
| 836 | Thu Jun 26 08:20:30 2003 |
---|
| 837 | - Done a complete spell check of the source code comments. |
---|
| 838 | |
---|
| 839 | Wed Jun 25 20:33:52 2003 |
---|
| 840 | - Changed the conditional expression engine to work with integer numeric |
---|
| 841 | literals only. Distinguished signed and unsigned literals. |
---|
| 842 | - Importing a region twice is allowed now. |
---|
| 843 | - Fixed a bug, which does not removed all placeholder tokens from a expanded |
---|
| 844 | token sequence while evaluating conditional expressions (C++0x mode only). |
---|
| 845 | |
---|
| 846 | Wed Jun 25 15:01:51 2003 |
---|
| 847 | - Changed the conditional expression engine to respect the type of numeric |
---|
| 848 | literals, now expressions like '#if 1 / 10 == 0' evaluate correctly (to true |
---|
| 849 | :-) |
---|
| 850 | - Fixed a bug, where macro names referring to global macros (as ::A::B) were |
---|
| 851 | not correctly recognized under certain circumstances. |
---|
| 852 | - Empty parameter lists for macros with ellipses only sometimes generated a |
---|
| 853 | placemarker token in the output: |
---|
| 854 | #define STR(...) #__VA_ARGS__ |
---|
| 855 | STR() // resulted in "§" instead of "" . |
---|
| 856 | |
---|
| 857 | Wed Jun 25 08:35:06 2003 |
---|
| 858 | - Fixed several gcc compilation errors (missing typename's etc.) |
---|
| 859 | - Fixed a compilation problem, if Wave is built on top of the SLEX scanner. |
---|
| 860 | - Reformatted the --timer output from pure seconds to a more reasonable format. |
---|
| 861 | |
---|
| 862 | Fri Jun 20 19:33:30 2003 |
---|
| 863 | - Changed the enable_tracing function of the tracing_policies to take a |
---|
| 864 | trace_flags variable instead of a bool, to allow to control tracing with more |
---|
| 865 | granulation. |
---|
| 866 | - Added the tracing_enabled function to the tracing_policies, which returns the |
---|
| 867 | current tracing status. |
---|
| 868 | - Updated the documentation of the tracing policies. |
---|
| 869 | |
---|
| 870 | Thu Jun 19 21:45:39 2003 |
---|
| 871 | - Reactivated the list_includes sample with the help of the new include file |
---|
| 872 | tracing facility. |
---|
| 873 | |
---|
| 874 | Thu Jun 19 17:55:35 2003 |
---|
| 875 | - Eliminated the TraceT template parameter from the macromap<> template. |
---|
| 876 | - Added two hooks to the trace policy to allow to trace the opening and |
---|
| 877 | closing of include files. |
---|
| 878 | |
---|
| 879 | Thu Jun 19 14:08:10 2003 |
---|
| 880 | - Added the command line option --timer, which enables the output to std::cout |
---|
| 881 | of the overall elapsed time during the preprocessing of the given file. |
---|
| 882 | |
---|
| 883 | Fri Jun 13 09:11:29 2003 |
---|
| 884 | - Emitted an error message, if an ellipses was found as a formal macro |
---|
| 885 | parameter and variadics were disabled. |
---|
| 886 | - Fixed a false error message, that the last line was not terminated with a |
---|
| 887 | newline, which occured, if no output was generated by the last line of the |
---|
| 888 | source file. |
---|
| 889 | |
---|
| 890 | Thu Jun 12 15:20:22 2003 |
---|
| 891 | - Fixed the recent change in argument expansion for the variadics/C99/C++0x |
---|
| 892 | mode. |
---|
| 893 | - Fixed a problem, where an additional whitespace between _Pragma and the |
---|
| 894 | opening parenthesis resulted in a false error message. |
---|
| 895 | - Used a pool allocator for the token sequence containers (std::list<>'s), |
---|
| 896 | which gives a speed gain of more than 60% (while profiling the Order |
---|
| 897 | library). |
---|
| 898 | |
---|
| 899 | Wed Jun 11 22:18:54 2003 |
---|
| 900 | - Fixed a macro scoping/expansion problem, when a macro returned a full scope |
---|
| 901 | which is continued on the call site to form a full qualified name, the name |
---|
| 902 | wasn't recognized correctly: |
---|
| 903 | # region A |
---|
| 904 | # define MACRO 1 |
---|
| 905 | # region B |
---|
| 906 | # define MACRO 2 |
---|
| 907 | # endregion |
---|
| 908 | # endregion |
---|
| 909 | # define ID(x) x |
---|
| 910 | ID(A)::MACRO // 1 |
---|
| 911 | ID(A::B)::MACRO // 2, was expanded to A::B::MACRO |
---|
| 912 | - Changed the expansion of macro arguments such, that these will be expanded |
---|
| 913 | only, if the result is to be used for substitution during the expansion |
---|
| 914 | of the replacement list. |
---|
| 915 | |
---|
| 916 | Wed Jun 11 14:40:29 2003 |
---|
| 917 | - Included a whitespace eating finite state machine (FSM) for minimal |
---|
| 918 | whitespace in the generated output. This was suggested by Paul Mensonides. |
---|
| 919 | - Updated the acknowledgement section |
---|
| 920 | |
---|
| 921 | Wed Jun 4 08:03:04 2003 |
---|
| 922 | - Fixed a bug reported by Faisal Vali, which prevented the correct evaluation |
---|
| 923 | of conditional expressions, if these referenced macro names, which expanded |
---|
| 924 | to a sequence containing non-expandable tokens. |
---|
| 925 | - Fixed the above bug for #elif directives too (in the first place this was |
---|
| 926 | fixed for #if directives only) |
---|
| 927 | |
---|
| 928 | Mon May 26 22:15:40 2003 |
---|
| 929 | - Added missing copyrights in several files. |
---|
| 930 | - Fixed false output, if a unknown _Pragma were encountered. |
---|
| 931 | - Fixed a macro expansion problem with qualified names, were constructs like |
---|
| 932 | the following were not expanded correctly: |
---|
| 933 | #define ID(x) x |
---|
| 934 | #region SCOPE |
---|
| 935 | # define TEST 1 |
---|
| 936 | #endregion |
---|
| 937 | ID(SCOPE::) TEST // should expand to 1 |
---|
| 938 | - Changed #import semantics for macros from copy semantics to reference |
---|
| 939 | semantics, i.e. macros are now considered to be implicitly imported into the |
---|
| 940 | scope, where they are defined. If a macro is imported into another scope and |
---|
| 941 | the original macro is undefined, the imported macro still exists. Further, |
---|
| 942 | if the imported macro is expanded, then while rescanning the original macro |
---|
| 943 | is disabled too: |
---|
| 944 | #region A |
---|
| 945 | # define B(x) x |
---|
| 946 | #endregion |
---|
| 947 | #import A |
---|
| 948 | B (A::B) (*) // A::B(*) |
---|
| 949 | A::B (B) (*) // B(*) |
---|
| 950 | B (B) (*) // B(*) |
---|
| 951 | A::B (A::B) (*) // A::B(*) |
---|
| 952 | - Fixed a recently introduced problem, where placemarker tokens slipped through |
---|
| 953 | to the output under certain conditions (in variadics/C99/C++0x modes only). |
---|
| 954 | |
---|
| 955 | Mon May 19 16:30:49 2003 |
---|
| 956 | - Fixed a bug, which prevented the recognition of the __lparen__, __rparen__ or |
---|
| 957 | __comma__ alternative tokens, if these were the first token after an emitted |
---|
| 958 | #line directive (reported by Vesa Karvonen). |
---|
| 959 | - Added an optimization, that only those tokens are considered for a macro |
---|
| 960 | expansion, which may result in an expansion. |
---|
| 961 | |
---|
| 962 | Tue May 13 18:16:26 2003 |
---|
| 963 | - Fixed a newly introduced problem, where a omitted argument consisting out |
---|
| 964 | of whitespace only were failed to be replaced by a placemarker token. This |
---|
| 965 | lead to problems with constructs like the following: |
---|
| 966 | #define paste(a, b, c) a ## b ## c |
---|
| 967 | paste(1, , 3) // should expand to 13, but expanded to 1## 3 |
---|
| 968 | - Fixed a problem with the tracing support, which throwed an unexpected |
---|
| 969 | exception if there were too few arguments given while expanding a macro. |
---|
| 970 | - Allowed to open and to import the global scope ('#region ::' and |
---|
| 971 | '#import ::'). |
---|
| 972 | - Fixed a bug, if more than one file was given with a --forceinclude command |
---|
| 973 | line option. |
---|
| 974 | |
---|
| 975 | Sat May 10 21:30:29 2003 |
---|
| 976 | - Added __STDC_FULL_REGION__ and __STDC_CURRENT_REGION__ to the list of not |
---|
| 977 | undefinable macros. |
---|
| 978 | - In normal C++ mode and C99 mode the #ifdef/#ifndef and the operator defined() |
---|
| 979 | should not support qualified names. This is fixed now. |
---|
| 980 | - Updated the documentation. |
---|
| 981 | - Fixed minor gcc -Wall compilation warnings. |
---|
| 982 | - Added better error support for qualified names used as arguments for #ifdef, |
---|
| 983 | #ifndef and operator defined(). |
---|
| 984 | |
---|
| 985 | Sat May 10 09:51:18 2003 |
---|
| 986 | - Removed the feature, that the comma before the ellipsis parameter in a macro |
---|
| 987 | definition may be omitted. |
---|
| 988 | - Resolved an issue with the expansion of qualified macros, when these |
---|
| 989 | qualified names were partially generated by a previous macro expansion |
---|
| 990 | - Allowed to specify fully qualified names as arguments to the #region directive |
---|
| 991 | |
---|
| 992 | Wed May 7 22:44:21 2003 |
---|
| 993 | - Changed the names of __SCOPE__ and __FULL_SCOPE__ predefined macros to |
---|
| 994 | __STDC_CURRENT_REGION__ and __STDC_FULL_REGION__ resp. The names are subject |
---|
| 995 | to change if the #region keyword actually will be renamed to #scope/#module |
---|
| 996 | or whatever. |
---|
| 997 | - In C++0x mode it is now possible to omit the last comma before a variadics |
---|
| 998 | ellipsis in a macro definition: |
---|
| 999 | #define cat_i(a, b, c, d, e ...) a ## b ## c ## d ## e |
---|
| 1000 | - Fixed a bug in the stringize code, where an ellipsis to stringize resulted in |
---|
| 1001 | stringizing of the first ellipsis parameter only. Preserved the original |
---|
| 1002 | whitespace delimiting in between the ellipsis arguments. |
---|
| 1003 | - Introduced the wave::language_support enum for convenient switching of the |
---|
| 1004 | supported language features throughout the library. |
---|
| 1005 | - Fixed a bug, which prevented the definition of the predefined macro |
---|
| 1006 | __WAVE_HAS_VARRIADICS__, if --variadics were given on the command line. |
---|
| 1007 | |
---|
| 1008 | Tue May 6 15:49:45 2003 |
---|
| 1009 | - Made predefined macros available at every macro scope without qualification. |
---|
| 1010 | - Predefined a new macro in C++0x mode: __STDC_GLOBAL__, which is defined at |
---|
| 1011 | global macro scope only and equals to '1' (integer literal). |
---|
| 1012 | - In C++0x mode there are two new predefined macros: |
---|
| 1013 | __SCOPE__: expands to the last part of the qualified name of the |
---|
| 1014 | current macro scope |
---|
| 1015 | __FULL_SCOPE__: expands to the full qualified name of the current macro |
---|
| 1016 | scope |
---|
| 1017 | |
---|
| 1018 | Mon May 5 23:02:48 2003 |
---|
| 1019 | - Fixed a problem in the new well defined token pasting code, which occured for |
---|
| 1020 | constructs like the following: |
---|
| 1021 | #define is_empty(...) is_empty_ ## __VA_ARGS__ ## _other |
---|
| 1022 | i.e. where two or more '##' operators were contained in the replacement text. |
---|
| 1023 | - Implemented __comma__, __lparen__ and __rparen__ alternative pp-tokens, which |
---|
| 1024 | may be used as the ',', '(' and ')' tokens during preprocessing. These are |
---|
| 1025 | only converted to there respective string representation in a special |
---|
| 1026 | translation phase after preprocessing. This was proposed by Vesa Karvonen. |
---|
| 1027 | - Changed the macro scoping rules to: "If a qualified name does not find a |
---|
| 1028 | nested name, it is not a qualified name to the preprocessor." This seems to |
---|
| 1029 | be the simplest usable solution for the possible ambiguities. |
---|
| 1030 | - Fixed a bug in the macro expansion engine in C++0x mode, where the skipping |
---|
| 1031 | of whitespace inside of a qualified name wasn't consistent. |
---|
| 1032 | |
---|
| 1033 | Sun May 4 10:48:53 2003 |
---|
| 1034 | - Fixed a bug in the expression grammar, which prevented 'not' to be recognized |
---|
| 1035 | as a valid operator. |
---|
| 1036 | - Qualified names are now supported as parameters to #ifdef and #ifndef too. |
---|
| 1037 | - Remove one specialization of the macro expansion engine. It gets instantiated |
---|
| 1038 | only twice now (for the main input iterator and for list<>'s of tokens. |
---|
| 1039 | - Simplified the required explicit specialization of the defined_grammar |
---|
| 1040 | template. It has to be explicitely instantiated by providing the token type |
---|
| 1041 | only (just as for the explicit instantiations of the other grammars). |
---|
| 1042 | |
---|
| 1043 | Fri May 2 22:44:27 2003 |
---|
| 1044 | - Qualified names are now allowed as parameters to the operator defined() in |
---|
| 1045 | C++0x mode. |
---|
| 1046 | - Separated the defined() functionality into a separate translation unit to |
---|
| 1047 | work around a VC7.1 ICE. |
---|
| 1048 | |
---|
| 1049 | Fri May 2 15:38:26 2003 |
---|
| 1050 | - The C++0x mode now has a special set of predefined macros. |
---|
| 1051 | - The predefined macro __WAVE_HAS_VARIADICS__ is now defined in C99 and C++0x |
---|
| 1052 | modes too (--variadics is implied for these modes). |
---|
| 1053 | - Updated the documentation to reflect the recent changes and additions. |
---|
| 1054 | - In C++0x mode Wave now supports macro scopes: |
---|
| 1055 | - new keywords #region/#endregion/#import |
---|
| 1056 | - qualified macro names |
---|
| 1057 | - In C++0x mode Wave now supports token pasting of unrelated tokens. These are |
---|
| 1058 | concatenated, the result is re-tokenized and inserted into the output stream. |
---|
| 1059 | - Fixed a minor bug in the macro expansion engine, if a qualified function-like |
---|
| 1060 | macro was found in an object-like context. |
---|
| 1061 | - Fixed an issue with well defined token pasting of unrelated tokens. |
---|
| 1062 | |
---|
| 1063 | Tue Apr 29 08:47:37 2003 |
---|
| 1064 | - Fixed a bug in the macro expansion engine, which prevented the expansion |
---|
| 1065 | of a certain macro under specific conditions (if the left of two tokens to |
---|
| 1066 | concatenate were a disabled one (T_NONREPLACABLE_IDENTIFIER), then the |
---|
| 1067 | resulting token was disabled too). |
---|
| 1068 | - Added additional diagnostics to the Wave driver to disambiguate the C99 and |
---|
| 1069 | C++0x modes. |
---|
| 1070 | - Implemented a new API function and a corresponding Wave driver command line |
---|
| 1071 | option, which allows to specify one or more include files to be preprocessed |
---|
| 1072 | before the regular file is preprocessed (the files are processed as normal |
---|
| 1073 | input and all the resulting output is included, before processing the regular |
---|
| 1074 | input file). The Wave driver command line option is --forceinclude (-F). |
---|
| 1075 | - Wave now compiles the Order library from Vesa Karvonen. |
---|
| 1076 | |
---|
| 1077 | Mon Apr 28 07:57:10 2003 |
---|
| 1078 | - Fixed a bug in the macro expansion engine. |
---|
| 1079 | - Removed a lot of (not needed) whitespace in the generated output (but still |
---|
| 1080 | not optimal). |
---|
| 1081 | |
---|
| 1082 | Sat Apr 26 20:30:53 2003 |
---|
| 1083 | - Fixed a bug in the initialization code of the Slex lexer while working in |
---|
| 1084 | C99 mode (reported by Reece Dunn). |
---|
| 1085 | |
---|
| 1086 | Fri Apr 18 08:37:35 2003 |
---|
| 1087 | - Fixed the handling of option_value's inside of pragma directives: |
---|
| 1088 | _Pragma("wave option(option_value)") |
---|
| 1089 | inside which all all whitespaces were deleted. |
---|
| 1090 | - Started to implement experimental macro scoping. |
---|
| 1091 | |
---|
| 1092 | Thu Apr 10 10:20:07 2003 |
---|
| 1093 | - Fixed a problem with the #pragma wave stop(), where only the first token |
---|
| 1094 | inside the stop directive was output, when the preprocessor stops in result |
---|
| 1095 | of this pragma. |
---|
| 1096 | - Implemented a new #pragma wave system(command), which spawns a new operation |
---|
| 1097 | system command exactly as specified inside the system directive, intercepts |
---|
| 1098 | the stdout output of this process, retokenizes this output and inserts the |
---|
| 1099 | generated token sequence in place of the original #pragma or operator _Pragma. |
---|
| 1100 | Please note that the generated output is _not_ subject to any macro expansion |
---|
| 1101 | before its insertion as the replacement of the pragma itself. If you need to |
---|
| 1102 | macro expand the replacement text, you always may force this by writing: |
---|
| 1103 | #define SCAN(x) x |
---|
| 1104 | SCAN(_Pragma("wave system(...)")) |
---|
| 1105 | which re-scans the replacement once. |
---|
| 1106 | - Replaced the Wave position_iterator with the boost::spirit::position_iterator |
---|
| 1107 | (without any problems!). |
---|
| 1108 | |
---|
| 1109 | Mon Apr 7 10:45:30 2003 |
---|
| 1110 | - Fixed macro_trace_policies::expand_object_like_macro not to be called with |
---|
| 1111 | the formal arguments as one of its parameters. |
---|
| 1112 | - Updated the documentation to reflect the changes needed for the tracing |
---|
| 1113 | stuff. |
---|
| 1114 | |
---|
| 1115 | Mon Mar 31 19:07:05 2003 |
---|
| 1116 | - Fixed variadics support in the trace output. |
---|
| 1117 | - Fixed preprocessing of operator _Pragma() before it's execution. |
---|
| 1118 | - Added _Pragma("wave stop(errmsg)") (#pragma wave stop(errmsg)) to allow |
---|
| 1119 | diagnostics output from inside macro expansion. |
---|
| 1120 | - Fixed operator _Pragma for unknown pragmas (these are simply put through to |
---|
| 1121 | the output). |
---|
| 1122 | - Implemented a maximal possible include nesting depth to avoid an out of |
---|
| 1123 | memory error. The initial value for this is configurable through the compile |
---|
| 1124 | time constant WAVE_MAX_INCLUDE_LEVEL_DEPTH, which defaults to 1024, if not |
---|
| 1125 | given. |
---|
| 1126 | Additionally this may be enlarged through a new command line option: |
---|
| 1127 | -n/--nesting (Wave driver only). |
---|
| 1128 | |
---|
| 1129 | Sun Mar 30 20:40:17 2003 |
---|
| 1130 | - Implemented the predefined macro __INCLUDE_LEVEL__, which expands to a |
---|
| 1131 | decimal integer constant that represents the depth of nesting in include |
---|
| 1132 | files. The value of this macro is incremented on every '#include' directive |
---|
| 1133 | and decremented at every end of file. |
---|
| 1134 | - Implemented the operator _Pragma(). It is recognized in C99 mode and whenever |
---|
| 1135 | variadics are enabled. |
---|
| 1136 | |
---|
| 1137 | Sun Mar 30 08:30:12 2003 |
---|
| 1138 | - Changed the tracing format to be more readable. |
---|
| 1139 | - Changed the tracing #pragma's to |
---|
| 1140 | enable tracing: #pragma wave trace(enable) |
---|
| 1141 | disable tracing: #pragma wave trace(disable) |
---|
| 1142 | or |
---|
| 1143 | enable tracing: #pragma wave trace(1) |
---|
| 1144 | disable tracing: #pragma wave trace(0) |
---|
| 1145 | - Changed the semantics of the -t (--traceto) switch. Without any -t switch |
---|
| 1146 | there isn't generated any trace output at all, even, if the corresponding |
---|
| 1147 | #pragma directives are found. To output the trace info to a file, the |
---|
| 1148 | '-t file' syntax may be used, to output to std::cerr, the '-t-' (or '-t -') |
---|
| 1149 | syntax may be used. |
---|
| 1150 | |
---|
| 1151 | Fri Mar 28 17:27:25 2003 |
---|
| 1152 | - Added a new template parameter to the wave::context<> object, which allows |
---|
| 1153 | to specify a policy for controlling the macro expansion tracing. The default |
---|
| 1154 | macro_trace_policy does no tracing at all. This way one can add specific |
---|
| 1155 | macro expansion tracing facilities to the library. |
---|
| 1156 | - #pragma directives starting with a STDC identifier are no longer not macro |
---|
| 1157 | expanded in C++ mode, in C++ mode these are now expanded as usual, in C99 |
---|
| 1158 | mode not. |
---|
| 1159 | - The tracing can be enabled/disabled from inside the preprocessed stream by |
---|
| 1160 | inserting a special #pragma directive: |
---|
| 1161 | enable tracing: #pragma wave_option(trace: enable) |
---|
| 1162 | disable tracing: #pragma wave_option(trace: disable) |
---|
| 1163 | - The Wave driver now allows to specify a destination for the macro expansion |
---|
| 1164 | tracing trough a new command line switch: '-t path' or '--traceto path'. If |
---|
| 1165 | this option isn't given, the trace output goes to stderr. |
---|
| 1166 | - The Wave driver now allows to specify the name of the file, where the |
---|
| 1167 | preprocessed result stream is to be saved: '-o path' or '--output path'. If |
---|
| 1168 | this option is not given, the output goes to stdout. |
---|
| 1169 | |
---|
| 1170 | Wed Mar 26 20:39:11 2003 |
---|
| 1171 | - Fixed a problem with alternative tokens (as 'and', 'or' etc.) and trigraph |
---|
| 1172 | tokens, which were not correctly recognized inside #if/#elif expressions. |
---|
| 1173 | - Alternative tokens ('and', 'or' etc.) are no longer subject to a possible |
---|
| 1174 | macro redefinition. |
---|
| 1175 | - Fixed the special handling of 'true' and 'false' during the macro expansion |
---|
| 1176 | of #if/#elif expressions. |
---|
| 1177 | |
---|
| 1178 | Tue Mar 25 12:12:35 2003 |
---|
| 1179 | - Released Wave V0.9.1 |
---|
| 1180 | |
---|
| 1181 | Mon Mar 24 13:34:27 2003 |
---|
| 1182 | - Implemented placemarkers, i.e. Wave now supports empty arguments during macro |
---|
| 1183 | invocations. This must be enabled by means of a new pp constant: |
---|
| 1184 | WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the |
---|
| 1185 | placemarker and variadics code and by defining the command line option |
---|
| 1186 | '--variadics' (Wave driver only). |
---|
| 1187 | - Implemented variadics, i.e. Wave now supports macros with variable parameter |
---|
| 1188 | counts. This must be enabled by means of the pp constant: |
---|
| 1189 | WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the |
---|
| 1190 | placemarker and variadics code and by defining the command line option |
---|
| 1191 | '--variadics' (Wave driver only). |
---|
| 1192 | - Implemented a C99 mode. This mode enables variadics and placemarkers by |
---|
| 1193 | default and rejects some specific C++ tokens (as the alternate keywords and |
---|
| 1194 | '::', '->*', '.*'). This mode must be enabled by the means of the pp constant |
---|
| 1195 | WAVE_SUPPORT_VARIADICS_PLACEMARKERS (see above). The C99 mode is enabled by |
---|
| 1196 | the command line switch '--c99' (Wave driver only). |
---|
| 1197 | This involved some changes in the C99/C++ lexers. |
---|
| 1198 | |
---|
| 1199 | Fri Mar 21 16:02:10 2003 |
---|
| 1200 | - Fixed a bug in the macro expansion engine, which prevented the expansion of |
---|
| 1201 | macros, which name was concatenated out of a identifier and a integer |
---|
| 1202 | followed directly by another identifier: |
---|
| 1203 | #define X() X_ ## 0R() // note: _zero_ followed by 'R' |
---|
| 1204 | #define X_0R() ... |
---|
| 1205 | X() // expanded to: X_0R(), but should expand to ... |
---|
| 1206 | This is a problem resulting from the fact, that the Standard requires the |
---|
| 1207 | preprocessor to act on so called pp-tokens, but Wave acts on C++ tokens. |
---|
| 1208 | |
---|
| 1209 | Thu Mar 20 21:39:21 2003 |
---|
| 1210 | - Fixed a problem with expression parsing (#if/#elif constant expressions), |
---|
| 1211 | which failed to produce an error message for expressions like |
---|
| 1212 | #if 1 2 3 4 5 |
---|
| 1213 | i.e. where the token sequence starts with a valid constant expression, but |
---|
| 1214 | the remainder of the line contained other tokens than whitespace. |
---|
| 1215 | - Integrated the flex_string class from Andrei Alexandrescu (published on the |
---|
| 1216 | CUJ site) to get COW-string behaviour for the token values and position |
---|
| 1217 | filename strings. This resulted in a major overall speedup (about 2-3 times |
---|
| 1218 | faster in dependency of the complexity of pp usage in the input stream). |
---|
| 1219 | - Fixed a bug, which reported ill formed #if/#else expressions as errors, even |
---|
| 1220 | if the current if block status (conditional compilation status) is false. |
---|
| 1221 | - Added a warning, if the last line of a file does not end with a newline. |
---|
| 1222 | - Improved error recognition and handling for malformed preprocessor directives |
---|
| 1223 | |
---|
| 1224 | Mon Mar 17 19:53:29 2003 |
---|
| 1225 | - Fixed a concatenation problem: constructs like a##b##c where expanded |
---|
| 1226 | incorrectly. |
---|
| 1227 | - Optimized the recognition of pp directives: |
---|
| 1228 | - the parser is used only, if the next non-whitespace token starts a pp |
---|
| 1229 | directive |
---|
| 1230 | - null directives now are recognized without calling the parser |
---|
| 1231 | - the parser isn't called anymore, if the if_block_status is false and no |
---|
| 1232 | conditional pp directive (#if etc.) is to be recognized. |
---|
| 1233 | These optimizations give a speed improvement by upto 40%. |
---|
| 1234 | - Removed adjacent whitespace during macro expansion (needs to be revised, |
---|
| 1235 | since there is some whitespace left, which may be removed) |
---|
| 1236 | |
---|
| 1237 | Sun Mar 16 23:19:11 2003 |
---|
| 1238 | - Fixed a problem with include paths given on the command line, if the file |
---|
| 1239 | to preprocess was not given as a full path (driver executable). |
---|
| 1240 | - Fixed a problem with path names containing blanks (driver executable). |
---|
| 1241 | - Cleaned command line and argument handling (driver executable). |
---|
| 1242 | - Fixed a severe memory leak. |
---|
| 1243 | - Fixed a bug, if a C++ keyword was used as a macro name or macro parameter |
---|
| 1244 | name, which prevented the macro recognition and expansion to function |
---|
| 1245 | properly. |
---|
| 1246 | - Implemented the WAVE_SUPPORT_MS_EXTENSIONS compiler switch for the re2c |
---|
| 1247 | generated lexer too. |
---|
| 1248 | - Fixed a problem, which caused an internal T_PLACEHOLDER token to show up |
---|
| 1249 | outside the macro replacement engine. |
---|
| 1250 | - Fixed a problem with macro #include directives, which prevents to find the |
---|
| 1251 | file to include, if after the macro expansion the token sequence representing |
---|
| 1252 | the filename began or ended with at least one whitespace token. |
---|
| 1253 | - Fixed a problem, which caused a false error message if the '#' character was |
---|
| 1254 | to be concatenated with an arbitrary other token. |
---|
| 1255 | - The concatenation of a whitespace token with an arbitrary other token was |
---|
| 1256 | reported as illegal token pasting (but it is certainly not). |
---|
| 1257 | |
---|
| 1258 | Sat Mar 15 21:43:56 2003 |
---|
| 1259 | - Added a default constructor to the wave::util::file_position template. |
---|
| 1260 | - Report the concatenation of unrelated tokens as an error. |
---|
| 1261 | - Finished the documentation. |
---|
| 1262 | |
---|
| 1263 | Fri Mar 14 20:14:18 2003 |
---|
| 1264 | - More work on documentation |
---|
| 1265 | - Changed file_position to expose accessor functions (the member variables are |
---|
| 1266 | marked as private now). This opens up the possibility to provide another |
---|
| 1267 | file_position implementation, which may be optimized in some way. |
---|
| 1268 | - Fixed a problem with the token name table, the alternate and trigraph token |
---|
| 1269 | names were printed incorrectly. |
---|
| 1270 | - Fixed a bug, which prevented the correct recognition of 'defined X' (without |
---|
| 1271 | parenthesises). |
---|
| 1272 | - Fixed a bug, which allowed to redefine and undefine the predefined name |
---|
| 1273 | 'defined'. |
---|
| 1274 | - Fixed a bug, which prevents the correct recognition of a macro based #include |
---|
| 1275 | directive, if it expands to something like #include <...>. |
---|
| 1276 | - Fixed a bug, which prevented the recognition of duplicate macro parameter |
---|
| 1277 | names. |
---|
| 1278 | - Removed the insertion of additional whitespace inside of string literals |
---|
| 1279 | (during stringizing). |
---|
| 1280 | |
---|
| 1281 | Wed Mar 12 19:16:40 2003 |
---|
| 1282 | - Fixed a bug, which prevented the instantiation of the wave::context object |
---|
| 1283 | with auxiliary iterators. The token type isn't coupled anymore with the |
---|
| 1284 | iterator type. |
---|
| 1285 | This required some changes in the interface: |
---|
| 1286 | - The wave::context object now has three template parameters (the iterator |
---|
| 1287 | type, the token type and the input policy type) |
---|
| 1288 | - The token type does not have the iterator type as it's template parameter |
---|
| 1289 | anymore. |
---|
| 1290 | - Implemented a new position_iterator template on top of the iterator_adaptor<> |
---|
| 1291 | template to make it work even for input_iterator type iterators. |
---|
| 1292 | - Fixed a bug in the regular expressions for the Slex lexer. |
---|
| 1293 | - The function 'set_sys_include_delimiter()' was renamed to |
---|
| 1294 | 'set_sysinclude_delimiter()' to better fit the naming scheme of the other |
---|
| 1295 | functions. |
---|
| 1296 | - Wrote more documentation |
---|
| 1297 | - Unified the different token definitions of the lexers, so that there is only |
---|
| 1298 | one token type left. This required some changes in the interface: |
---|
| 1299 | - There is no need anymore to explicitly specify the namespace of the token |
---|
| 1300 | type to use. |
---|
| 1301 | - Added the command line option -P to the Wave driver program, which predefines |
---|
| 1302 | a macro (i.e. defines it such, that is _not_ undefinable through an #undef |
---|
| 1303 | directive from inside the preprocessed program). |
---|
| 1304 | |
---|
| 1305 | Sat Mar 8 07:46:43 2003 |
---|
| 1306 | - Released Wave 0.9.0 |
---|
| 1307 | |
---|
| 1308 | Thu Mar 6 20:02:44 2003 |
---|
| 1309 | - Compiled Wave with IntelV7.0/DinkumwareSTL (from VC6sp5) |
---|
| 1310 | - Fixed new compilation problems with gcc -Wall |
---|
| 1311 | - Fixed the list_includes and cpp_tokens samples to compile and link correctly. |
---|
| 1312 | - Fixed a bug, where a wrong filename was reported by the generated #line |
---|
| 1313 | directive. |
---|
| 1314 | - Fixed a bug, where the __FILE__ macro was expanded without '\"' around the |
---|
| 1315 | filename. |
---|
| 1316 | - The generated #line directives and the expanded __FILE__ macro now report |
---|
| 1317 | the filename in a native (to the system) format. Additionally the generated |
---|
| 1318 | string literals are now escaped correctly. |
---|
| 1319 | |
---|
| 1320 | Wed Mar 5 21:11:14 2003 |
---|
| 1321 | - Reorganized the directory structure to mirror the namespace structure of the |
---|
| 1322 | library |
---|
| 1323 | - Fixed a bug, where the complete input after the first found #include |
---|
| 1324 | directive were eaten up. |
---|
| 1325 | - Fixed a bug, where the __LINE__ macro expanded to a incorrect linenumber, if |
---|
| 1326 | the __LINE__ macro was encountered on a line after a '\\' '\n' sequence. |
---|
| 1327 | |
---|
| 1328 | Tue Mar 4 11:50:24 2003 |
---|
| 1329 | - The new name of the project is 'Wave'. |
---|
| 1330 | - Adjusted namespaces, comments etc. to reflect the new name. |
---|
| 1331 | - Added the command line option -U [--undefine], which allows to remove one of |
---|
| 1332 | the predefined macros (except __LINE__, __FILE__, __DATE__, __TIME__, |
---|
| 1333 | __STDC__ and __cplusplus) |
---|
| 1334 | |
---|
| 1335 | Sun Mar 2 20:10:04 2003 |
---|
| 1336 | - Fixed a bug while expanding macros without any definition part (empty macros) |
---|
| 1337 | - The pp-iterator will not emit a newline for every recognized preprocessing |
---|
| 1338 | directive anymore. The generated output is much more condensed this way. |
---|
| 1339 | - The pp-iterator now emits #line directives at appropriate places. |
---|
| 1340 | - Added an additional parser to the library, which may be used to parse macros |
---|
| 1341 | given in the command line syntax, i.e. something like 'MACRO(x)=definition'. |
---|
| 1342 | - Added the possibility to the cpp driver sample, to add macros from the |
---|
| 1343 | command line through the -D command line switch. |
---|
| 1344 | - Martin Wille contributed a test script to allow automatic testing of the |
---|
| 1345 | cpp driver sample by feeding all files contained in the test_files directory |
---|
| 1346 | through the cpp driver and comparing the generated output with the |
---|
| 1347 | corresponding expectations. |
---|
| 1348 | - Added config file support to allow for predefined option sets (for instance |
---|
| 1349 | for the emulation of other compilers) |
---|
| 1350 | - Changed the way, how include paths are defined. It resembles now the |
---|
| 1351 | behaviour of gcc. |
---|
| 1352 | Any directories specified with '-I' options before an eventually given '-I-' |
---|
| 1353 | option are searched only for the case of '#include "file"', they are not |
---|
| 1354 | searched for '#include <file>' directives. If additional directories are |
---|
| 1355 | specified with '-I' options after a '-I-' option was given, these directories |
---|
| 1356 | are searched for all '#include' directives. In addition, the '-I-' option |
---|
| 1357 | inhibits the use of the current directory as the first search directory for |
---|
| 1358 | '#include "file"'. Therefore, the current directory is searched only if it is |
---|
| 1359 | requested explicitly with '-I.'. Specifying both '-I-' and '-I.' allows to |
---|
| 1360 | control precisely which directories are searched before the current one |
---|
| 1361 | and which are searched after. |
---|
| 1362 | - Added config file support to the cpp driver. |
---|
| 1363 | - stored not only the current 'name' of a file (given eventually by a #line |
---|
| 1364 | directive) but in parallel the actual full file system name of this file too. |
---|
| 1365 | |
---|
| 1366 | Tue Feb 25 21:44:19 2003 |
---|
| 1367 | - Fixed the warnings emitted by gcc -Wall. |
---|
| 1368 | - Fixed a bug in the cpp grammar, which causes to failing the recognition of |
---|
| 1369 | certain preprocessor directives if at the end of this directive were placed |
---|
| 1370 | a C++ comment. |
---|
| 1371 | - Simplified and extended the insertion of whitespace tokens at places, where |
---|
| 1372 | otherwise two adjacent tokens would form a new different token, if |
---|
| 1373 | retokenized. |
---|
| 1374 | |
---|
| 1375 | Mon Feb 24 19:13:46 2003 |
---|
| 1376 | - defined() functionality was broken |
---|
| 1377 | - added missing typename keywords |
---|
| 1378 | - added missing using namespace statements, where appropriate |
---|
| 1379 | - added a warning, when a predefined macro is to be undefined (by an #undef |
---|
| 1380 | directive) |
---|
| 1381 | - removed the 'compile in C mode' hack for the re2c generated lexer (VC7.1 |
---|
| 1382 | (final beta) is not able to compile it with optimizations switched on |
---|
| 1383 | anyway :( ) |
---|
| 1384 | - compiled with gcc 3.2 and Intel V7.0 (20030129Z) |
---|
| 1385 | |
---|
| 1386 | Sun Feb 23 23:39:33 2003 |
---|
| 1387 | - Fixed a couple of 'missing typename' bugs (thanks to Martin Wille) |
---|
| 1388 | - Added code to insert whitespace at places, where otherwise two adjacent |
---|
| 1389 | tokens would form a new different token, if retokenized. |
---|
| 1390 | - Fixed a severe macro expansion bug. |
---|
| 1391 | - Added the handling of invalid or not allowed universal character values |
---|
| 1392 | inside of string literals and character literals. |
---|
| 1393 | |
---|
| 1394 | Sat Feb 22 20:52:06 2003 |
---|
| 1395 | - Bumped version to 0.9.0 |
---|
| 1396 | - Added test for invalid or not allowed universal character values (see |
---|
| 1397 | C++ Standard 2.2.2 [lex.charset] and Annex E) |
---|
| 1398 | - Fixed a bug with newlines between a macro name and the opening parenthesis |
---|
| 1399 | during the macro expansion and a bug with newlines inside the parameter list |
---|
| 1400 | during the macro expansion. |
---|
| 1401 | - Added the following predefined macros: |
---|
| 1402 | __SPIRIT_PP__ |
---|
| 1403 | expands to the version number of the pp-iterator lib (i.e. 0x0090 for |
---|
| 1404 | V0.9.0) |
---|
| 1405 | __SPIRIT_PP_VERSION__ |
---|
| 1406 | expands to the full version number of the pp-iterator lib (i.e. |
---|
| 1407 | 0x00900436 for V0.9.0.436) |
---|
| 1408 | __SPIRIT_PP_VERSION_STR__ |
---|
| 1409 | expands to the full version string of the pp-iterator lib (i.e. |
---|
| 1410 | "0.9.0.436") |
---|
| 1411 | |
---|
| 1412 | Fri Feb 21 22:09:04 2003 (feature complete!) |
---|
| 1413 | - Allowed to optionally compile the Re2c generated lexer in 'C' mode, because |
---|
| 1414 | at least the VC7.1 (final beta) compiler has problems to compile it in 'C++' |
---|
| 1415 | mode with optimizations switch on |
---|
| 1416 | - Implemented #error and #warning (optional) directives (C++ standard 16.5). |
---|
| 1417 | Additionally there are now allowed the following preprocessor configuration |
---|
| 1418 | constants: |
---|
| 1419 | CPP_PREPROCESS_ERROR_MESSAGE_BODY |
---|
| 1420 | if defined, preprocesses the message body of #error and #warning |
---|
| 1421 | directives to allow for better diagnostics. |
---|
| 1422 | CPP_SUPPORT_WARNING_DIRECTIVE |
---|
| 1423 | if defined, then the #warning directive will be recognized such, that |
---|
| 1424 | a warning with the given message will be issued |
---|
| 1425 | - Adjusted the error handling for the Re2c generated C++ lexer, so that any |
---|
| 1426 | error inside the lexer is now propagated as an cpplexer_exception. |
---|
| 1427 | - Implemented the #line directive (C++ standard 16.4) |
---|
| 1428 | - Implemented #pragma directive (C++ standard 16.6) |
---|
| 1429 | Additionally there are now allowed the following preprocessor configuration |
---|
| 1430 | constants: |
---|
| 1431 | CPP_RETURN_PRAGMA_DIRECTIVES |
---|
| 1432 | if defined, then the whole pragma directive is returned as a token |
---|
| 1433 | sequence to the caller, if not defined the whole pragma directive is |
---|
| 1434 | skipped |
---|
| 1435 | CPP_PREPROCESS_PRAGMA_BODY |
---|
| 1436 | if defined, then the #pragma body will be preprocessed |
---|
| 1437 | - Implemented #include directive with macro arguments (C++ standard 16.2.4) |
---|
| 1438 | - Made the namespace structure finer granulated to leave only the main |
---|
| 1439 | interface classes in the main namespace cpp. All other classes are moved into |
---|
| 1440 | sub-namespaces to reflect the logical dependencies |
---|
| 1441 | - Reorganized the public interface of the context<> template class, made all |
---|
| 1442 | non relevant functions into the protected. |
---|
| 1443 | - Implemented predefined macros (__LINE__ et.al.) (C++ standard 16.8) |
---|
| 1444 | - Further documentation work |
---|
| 1445 | |
---|
| 1446 | Wed Feb 19 23:44:47 2003 |
---|
| 1447 | - Corrected a lot of bugs in the macro expansion engine, which now should be |
---|
| 1448 | conformant to the C++ standard. |
---|
| 1449 | - # (null) directive (C++ standard 16.7) |
---|
| 1450 | |
---|
| 1451 | Sun Feb 16 08:40:38 2003 |
---|
| 1452 | - Added a macro expansion engine which expands macros with arguments |
---|
| 1453 | C++ standard 16.3 [cpp.replace] |
---|
| 1454 | - Added a new sample: cpp_tokens. This sample preprocesses a given file and |
---|
| 1455 | prints out the string representations of all tokens returned from the pp |
---|
| 1456 | iterator |
---|
| 1457 | - Added documentation (to be continued!) |
---|
| 1458 | - Added a couple of small test files to test elementary functionality |
---|
| 1459 | (the tests mainly were contributed by Paul Mensonides) |
---|
| 1460 | - The main cpp sample is now a simple preprocessor driver program, which |
---|
| 1461 | outputs the string representation of the preprocessed input stream. Use |
---|
| 1462 | cpp --help to get a hint, how to use it. |
---|
| 1463 | - Fixed a bug in the preprocessor grammar which failed to recognize a pp |
---|
| 1464 | statement, if there was a C++ comment at the end of the line |
---|
| 1465 | - Added '#' operator (C++ standard 16.3.2) [cpp.stringize] |
---|
| 1466 | - Fixed a bug in the slex based C++ lexer to handle the concatenation |
---|
| 1467 | characters correctly ('\\' followed by a '\n') |
---|
| 1468 | |
---|
| 1469 | Sun Feb 9 23:01:00 2003 |
---|
| 1470 | - Improved error handling for #if et.al. |
---|
| 1471 | - Fixed a pair of lexer errors |
---|
| 1472 | - Implemented the #if/#elif statements, the sample now contains a complete C++ |
---|
| 1473 | expression evaluation engine (for the calculation of the outcome of the |
---|
| 1474 | #if/#elif statement conditions) |
---|
| 1475 | - Implemented macro replacement (with parameters) |
---|
| 1476 | - Implemented the '##' [cpp.concat] operator |
---|
| 1477 | - Implemented the defined() [cpp.cond] operator |
---|
| 1478 | |
---|
| 1479 | Sun Feb 2 23:28:24 2003 |
---|
| 1480 | - Implemented the #define, #undef, #ifdef, #ifndef, #else and #endif |
---|
| 1481 | statements |
---|
| 1482 | - Added optional parse tree output as xml stream (controlled through the config |
---|
| 1483 | pp constant CPP_DUMP_PARSE_TREE) |
---|
| 1484 | |
---|
| 1485 | Fri Jan 31 21:30:55 2003 |
---|
| 1486 | - Fixed different minor issues and a border case (#include statement at the |
---|
| 1487 | last line of a included file) |
---|
| 1488 | |
---|
| 1489 | Wed Jan 29 21:13:32 2003 |
---|
| 1490 | - Fixed exception handling to report the correct error position |
---|
| 1491 | - Fixed another bug in the stream position calculation scheme |
---|
| 1492 | - Added a more elaborate sample 'list_includes' which lists the dependency |
---|
| 1493 | information for a given source file (see test/list_includes/readme.txt). |
---|
| 1494 | |
---|
| 1495 | Sat Jan 18 22:01:03 2003 |
---|
| 1496 | - Fixed a bug in the stream position calculation scheme |
---|
| 1497 | - Made cpp::exceptions more standard conformant (added 'throw()' at appropriate |
---|
| 1498 | places) |
---|
| 1499 | - Overall housekeeping :-) |
---|
| 1500 | |
---|
| 1501 | Wed Jan 15 21:54:20 2003 |
---|
| 1502 | Changes since project start (still 0.5.0) |
---|
| 1503 | - Added #include <...> and #include "..." functionality |
---|
| 1504 | - pp directives are now generally recognized |
---|
| 1505 | - Decoupled the C++ lexers and the pp grammar to separate compilation |
---|
| 1506 | units (optionally) to speed up compilation (a lot!) |
---|
| 1507 | |
---|
| 1508 | Thu Jan 2 12:39:30 2003 |
---|
| 1509 | A completely new version 0.5.0 of the C preprocessor was started. It's a |
---|
| 1510 | complete rewrite of the existing code base. The main differences are: |
---|
| 1511 | - The preprocessor is now implemented as an iterator, which returns the |
---|
| 1512 | current preprocessed token from the input stream. |
---|
| 1513 | - The preprocessing of include files isn't implemented through recursion |
---|
| 1514 | anymore. This follows directly from the first change. As a result of this |
---|
| 1515 | change the internal error handling is simplified. |
---|
| 1516 | - The C preprocessor iterator itself is feeded by a new unified C++ lexer |
---|
| 1517 | iterator. BTW, this C++ lexer iterator could be used standalone and is not |
---|
| 1518 | tied to the C preprocessor. There are two different C++ lexers implemented |
---|
| 1519 | now, which are functionally completely identical. These expose a similar |
---|
| 1520 | interface, so the C preprocessor could be used with both of them. |
---|
| 1521 | - The C++ lexers integrated into the C preprocessor by now are: |
---|
| 1522 | Slex: A spirit based table driven regular expression lexer (the slex |
---|
| 1523 | engine originally was written by Dan Nuffer and is available as a |
---|
| 1524 | separate Spirit sample). |
---|
| 1525 | Re2c: A C++ lexer generated with the help of the re2c tool. This C++ |
---|
| 1526 | lexer was written as a sample by Dan Nuffer too. |
---|
| 1527 | It isn't hard to plug in additional different C++ lexers. There are plans to |
---|
| 1528 | integrate a third one written by Juan Carlos Arevalo-Baeza, which is |
---|
| 1529 | available as a Spirit sample. |
---|
| 1530 | |
---|
| 1531 | ------------------------------------------------------------------------------- |
---|
| 1532 | Tue Feb 12 22:29:50 2002 |
---|
| 1533 | Changes from 0.2.3 to 0.2.4: |
---|
| 1534 | - Moved XML dumping functions to the main Spirit directory |
---|
| 1535 | - Fixed operator '##', it was not correctly implemented somehow :-( |
---|
| 1536 | |
---|
| 1537 | Sun Feb 10 21:07:19 2002 |
---|
| 1538 | Changes from 0.2.2 to 0.2.3: |
---|
| 1539 | - Implemented concatenation operator '##' (cpp.concat) |
---|
| 1540 | - Removed defined() functionality for Intel compiler (it ICE's) until this |
---|
| 1541 | issue is resolved |
---|
| 1542 | - Separated code for dumping a parse tree to XML for inclusion in the main |
---|
| 1543 | Spirit headers |
---|
| 1544 | |
---|
| 1545 | Thu Jan 17 23:51:21 2002 |
---|
| 1546 | Changes from 0.2.1 to 0.2.2: |
---|
| 1547 | - Fixes to compile with gcc 2.95.2 and gcc 3.0.2 (thanks Dan Nuffer) |
---|
| 1548 | - Reformatted the grammars to conform to a single formatting guideline |
---|
| 1549 | - Assigned explicit rule_id's to the rules of cpp_grammar, so that the |
---|
| 1550 | access code to the embedded definition class is not needed anymore |
---|
| 1551 | - Fixed a remaining const problem |
---|
| 1552 | |
---|
| 1553 | Tue Jan 15 23:40:40 2002 |
---|
| 1554 | Changes from 0.2.0 to 0.2.1: |
---|
| 1555 | - Corrected handling of defined() operator |
---|
| 1556 | - In preprocessing conditionals undefined identifiers now correctly |
---|
| 1557 | replaced by '0' |
---|
| 1558 | - Fixed several const problems |
---|
| 1559 | - Added parse_node_iterator for traversing one node in a parse_tree |
---|
| 1560 | without going deeper down the hierarchy than one level (this is useful, |
---|
| 1561 | if all inspected tokens arranged along a single node in the parse tree. |
---|
| 1562 | The main difference to the parse_tree_iterator is, that the underlying |
---|
| 1563 | iterator generally can be adjusted correctly after advancing the attached |
---|
| 1564 | parse_node_iterator |
---|
| 1565 | - Fixed a problem with gcc 2.95.2, which doesn't have a <sstream> header |
---|
| 1566 | - Prepared usage of slex for lexer states |
---|
| 1567 | |
---|
| 1568 | Sun Jan 13 10:21:16 2002 |
---|
| 1569 | Changes from 0.1.0 to 0.2.0: |
---|
| 1570 | - Added operator 'defined()' |
---|
| 1571 | - Added directive '#warning' |
---|
| 1572 | - Corrected error reporting |
---|
| 1573 | - Added command line option -I- for finer control of the searched include |
---|
| 1574 | directories (-I and -I- should now work as in gcc, see readme.html for |
---|
| 1575 | more info) |
---|
| 1576 | - Corrected conditional preprocessing (should be fully functional now) |
---|
| 1577 | - Fixed existing code base for changes made in parse tree support |
---|
| 1578 | - Moved parse tree utility functions to a separate header (prepared for |
---|
| 1579 | inclusion to the Spirit main library) |
---|