diff --git a/ChangeLog b/ChangeLog index 26b336b..1adbd79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,17 +15,25 @@ TODO (known issues): function. - Fix the trigraph backslash problem in the re2c (C/C++ and IDL) scanners, if there is the end of the (internal) buffer just in between a '??/' and a '\n'. -- Change the cpp_exception::what() function to return more meaningful error - texts. - + - Do a sourceforge release. ------------------------------------------------------------------------------- CHANGELOG -Boost V1.36 -- Wave Version 2.0 +Boost V1.37.0 +- Updated examples to reflect the recent changes in the used multi_pass + iterator. +- Fixed documentation links still pointing to the old Boost CVS (thanks to + Jürgen Hunold for providing the patch). + +Boost V1.36.0 +- Wave Version 2.0 is a new major release introducing some breaking API changes, + preventing it to be used with Boost versions earlier than V1.36.0. The API + and hook interface have been streamlined for more consistency. See the + documentation for more details. + - Added an additional template parameter to the context object, allowing to specify any possibly derived type. This change propagates to the preprocessing hooks, which now get passed the most derived context type as its first @@ -47,7 +55,8 @@ Boost V1.36 preprocessing two consecutive tokens. - Adjusted Spirit header includes to point to conform to the new directory structure, removed support for Spirit versions earlier than V1.7. - +- Started to migrate to new multi_pass iterators from Spirit V2.0. + Boost V1.35.0 - Wave Version 1.3 - Changed the return value of the 'evaluated_conditional_expression()' pp hook diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index e7115c9..c3e0561 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -11,8 +11,8 @@ project boost/wave : requirements shared:BOOST_ALL_DYN_LINK=1 - msvc-8.0:_SCL_SECURE_NO_DEPRECATE - msvc-8.0:_CRT_SECURE_NO_DEPRECATE + msvc:_SCL_SECURE_NO_DEPRECATE + msvc:_CRT_SECURE_NO_DEPRECATE : source-location ../src ; diff --git a/doc/class_reference_context.html b/doc/class_reference_context.html index d242d2f..b9e3598 100644 --- a/doc/class_reference_context.html +++ b/doc/class_reference_context.html @@ -1,515 +1,484 @@ - - The Context Object - - - - - - - - - - + +The Context Object + + + + +

The - Context Object
+ + + + + + +

The Context Object

- - +
+ + - + -
-
-

Introduction
- Header 'wave/context.hpp' synopsis
- Public Typedefs
- Template parameters
- Member functions

-
-

Introduction

-

The boost::wave::context<> object is the main user visible object of - the Wave library. It exists to generate the pair of iterators, which - while dereferenced return the preprocessed tokens. Additionally it is used - to control other aspects of the preprocessing, such as

-
-

 include - search paths, which define, where to search for files to be included with - #include <...> and #include "..." directives
-  which - macros to predefine and which of the predefined macros to undefine
-  several - other options as for instance to control, whether to enable several extensions - to the C++ Standard (as for instance variadics and placemarkers) or not.

-
-

Header wave/cpp_context.hpp - synopsis

-
namespace boost {
-namespace wave { 
-    
-    template <
-        typename Iterator, typename LexIterator, 
-        typename InputPolicy, typename ContextPolicy 
-    > 
-    class context : public InputPolicy 
-    {
-    public: 
-
-        typedef pp_iterator<context> iterator_type; 
-        typedef Token token_type;
-        typedef typename token_type::position_type position_type;
-        typedef std::list<token_type> token_sequence_type;
- // constructor - context(Iterator const &first_, - Iterator const &last_, - char const *fname = "<Unknown>", - ContextPolicy const& ctx_policy = ContextPolicy()) - - // iterator interface - iterator_type begin() const; - iterator_type end() const; - - // maintain include paths - bool add_include_path(char const *path_); - bool add_sysinclude_path(char const *path_); - void set_sysinclude_delimiter(); - - size_t get_iteration_depth() const; - - // maintain defined macros - bool add_macro_definition(std::string macrostring, - bool is_predefined = false); - template <typename String> - bool is_defined_macro(String const &name) const; - bool remove_macro_definition(std::string const &name, - bool even_predefined = false); - void reset_macro_definitions(); - bool get_macro_definition( - std::string const &name, bool &is_function_style, - bool &is_predefined, position_type &pos, - std::vector<token_type> &parameters, - token_sequence_type &definition) const; - name_iterator macro_names_begin(); - name_iterator macro_names_end(); - const_name_iterator macro_names_begin() const; - const_name_iterator macro_names_end() const; - - // other options - void set_language(language_support enable); - language_support get_language() const;
- void set_max_include_nesting_depth(std::size_t new_depth);
size_t get_max_include_nesting_depth() const;
- // get the Wave version information - static std::string get_version(); - static std::string get_version_string(); - }; - -} // namespace wave -} // namespace boost
-

Template parameters

-

The boost::wave::context object has three template parameters to specify - the concrete behaviour of its operation. The following table describes these - with more detail.

- - - - - - - - - - - - - - - - - - - - +
Template parameters required for the - boost::wave::context class
Iterator

The type of the underlying iterator, - through which the input stream is accessed.
- This should be at least an forward_iterator type iterator.

LexIterator

The type of the lexer type to be used by the Wave - library to identify tokens in the input stream.

InputPolicy

The type of the input policy class, which allows - to customize the behaviour of the Wave library and the type of the iterators - to use, when it comes to including and opening an included file.

ContextPolicy

The type of the context policy class, which allows - to customize different aspects of the behaviour of the preprocessing. The requirements of this policy and the available customization points provided by this policy are described here.

-

For further information about the lexer type to use, please refer to the The - Lexer Interface .

-

If the template parameter InputPolicy is omitted, the template boost::wave::iteration_context_policies::load_file_to_string - is used. For further information about the input policy, please refer to the - topic The Input Policy.

-

If the template parameter ContextPolicy is omitted, the boost::wave::context_policies::eat_whitespace - policy type is used, implementing certain basic preprocessing hooks needed for normal (default) execution. For further - information about the context policy, please refer to the topic The - Context Policy.

-

Public Typedefs

-

The boost::wave::context template defines the following public typedefs, which may be useful while using this class:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Public typedef's defined by the boost::wave::context class
iterator_type

The Iterator template parameter provided, while the context class was instantiated.

lex_type

The LexIterator template parameter provided, while the context class was instantiated.

token_type

The token type, which is returned by the context generated iterators. This type is taken from the LexIterator template parameter provided, whicle the context class was instantiated.

input_policy_type

The InputPolicy template parameter provided, while the context class was instantiated.

context_policy_type

The ContextPolicy template parameter provided, while the context class was instantiated.

position_type

The type of the position information contained in every returned token, which describes the point, at which the given token was recognised.

-

Member functions

-

Constructor

-
    context(Iterator const &first, 
-        Iterator const &last, char const *filename, 
-        ContextPolicy const& ctx_policy);
-

Constructs a context object on top of the input stream given by the pair - of auxilliary iterators [first, last). The iterators should - be at least forward_iterator type iterators. The filename parameter - is to be supplied for informational purposes only. This string is used for - indicating the token positions inside the input stream, it is not validated - against the file system. If the filename parameter is not given it defaults - to "<Unknown>". If the ctx_policy - parameter isn't supplied it defaults to a default constructed ContextPolicy - object.

-

Additionally the macro symbol table is filled with the predefined macros - and the current reference directory is set to the path of the given filename. - If this filename does not reference valid file system item, the current reference - directory is set to the current system directory. (The current reference directory - is the file system path, which is used as the target directory during the - processing of #include "..." directives).

-

Iterator interface

-

The pair of iterators returned by the context::begin and context::end - functions is the main interface for accessing the preprocessed tokens from the - preprocessor engine. While iterating over the given iterator range [begin, end) - there are returned the preprocessed C++ tokens, which are generated on the fly - from the underlying input stream. The returned iterators are conceptually of - forward_iterator type.

-

begin

-
    iterator_type begin();
-

Initializes and returns the starting iterator for the preprocessed token - stream.

- +

Introduction
+ Header + 'wave/context.hpp' synopsis
+ Public + Typedefs
+ Template + parameters
+ Member + functions

+
+

Introduction

+

The boost::wave::context<> object is the main user visible object of the Wave library. It exists to generate the pair of iterators, which while + dereferenced return the preprocessed tokens. Additionally it is used to + control other aspects of the preprocessing, such as

+
+

 include + search paths, which define, where to search for files to be included + with #include <...> and #include "..." directives
+  which macros to + predefine and which of the predefined macros to undefine
+  several other options as + for instance to control, whether to enable several extensions to the + C++ Standard (as for instance variadics and placemarkers) or not.

+
+

Header wave/cpp_context.hpp synopsis

+
namespace boost {
namespace wave {

struct this_type {};

template <
typename Iterator, typename LexIterator,
typename InputPolicy, typename ContextPolicy,
typename Derived = this_type
>
class context : public InputPolicy
{
typedef <unspecified> token_sequence_type;

public:

typedef pp_iterator<context> iterator_type;
typedef Token token_type;
typedef typename token_type::position_type position_type;
typedef std::list<token_type> token_sequence_type;

// constructor
context(Iterator const &first_,
Iterator const &last_,
char const *fname = "<Unknown>",
ContextPolicy const& ctx_policy = ContextPolicy())

// iterator interface
iterator_type begin() const;
iterator_type begin(Iterator const &first,
Iterator const &last) const;
iterator_type end() const;

// maintain include paths
bool add_include_path(char const *path_);
bool add_sysinclude_path(char const *path_);
void set_sysinclude_delimiter();

size_t get_iteration_depth() const;

// maintain defined macros
template <typename String>
bool add_macro_definition(String macrostring,
bool is_predefined = false);
template <typename String>
bool add_macro_definition(StringT const &name,
position_type const& pos, bool has_params,
std::vector<token_type> &parameters,
token_sequence_type &definition,
bool is_predefined = false)

template <typename String>
bool is_defined_macro(String const &name) const;
template <typename String>
bool remove_macro_definition(String const &name,
bool even_predefined = false);
void reset_macro_definitions();
template <typename String>
bool get_macro_definition(
String const &name, bool &is_function_style,
bool
&is_predefined, position_type &pos,
std::vector<token_type> &parameters,
token_sequence_type &definition) const;

typedef <unspecified> macromap_type;
typedef typename macromap_type::name_iterator name_iterator;
typedef typename macromap_type::const_name_iterator const_name_iterator;

name_iterator macro_names_begin();
name_iterator macro_names_end();
const_name_iterator macro_names_begin() const;
const_name_iterator macro_names_end() const;

// other options
void set_language(language_support enable);
language_support get_language() const;

void set_max_include_nesting_depth(std::size_t new_depth);
size_t get_max_include_nesting_depth() const;

// get the Wave version information
static std::string get_version();
static std::string get_version_string();
};

} // namespace wave
} // namespace boost
+

Template + parameters

+

The boost::wave::context object has + three template parameters to specify the concrete behaviour of its + operation. The following table describes these with more detail.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Template + parameters required for the boost::wave::context class
Iterator

The type of the underlying iterator, through which the + input stream is accessed.
+ This should be at least an forward_iterator type + iterator.

LexIterator

The type of the lexer type to be used by the Wave library to identify tokens in the input stream.

InputPolicy

The type of the input policy class, which allows to + customize the behaviour of the Wave library and the type of the + iterators to use, when it comes to including and opening an included + file.

ContextPolicy

The type of the context policy class, which allows to + customize different aspects of the behaviour of the preprocessing. The + requirements of this policy and the available customization points + provided by this policy are described here.   +  

Derived

The type of the type being derived from the context type (if + any). This template parameter is optional and defaults to 'this_type', + which means that the context type will be used assuming no derived type exists.
+

+

For further information about the lexer type to use, please + refer to the The + Lexer Interface .

+

If the template parameter InputPolicy is + omitted, the template boost::wave::iteration_context_policies::load_file_to_string is used. For further information about the input policy, please refer + to the topic The + Input Policy.

+

If the template parameter ContextPolicy is omitted, the boost::wave::context_policies::eat_whitespace policy type is used, implementing certain basic preprocessing hooks + needed for normal (default) execution. For further information about + the context policy, please refer to the topic The Context Policy.

+

Public + Typedefs

+

The boost::wave::context template + defines the following public typedefs, which may be useful while using + this class:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Public + typedef's defined by the boost::wave::context class
iterator_type

The Iterator template parameter + provided, while the context class was + instantiated.

lex_type

The LexIterator template parameter + provided, while the context class was + instantiated.

token_type

The token type, which is returned by the context generated iterators. This type is taken from the LexIterator template parameter provided, whicle the context class was instantiated.

input_policy_type

The InputPolicy template parameter + provided, while the context class was + instantiated.

context_policy_type

The ContextPolicy template + parameter provided, while the context class was + instantiated.

position_type

The type of the position information contained in every + returned token, which describes the point, at which the given token was + recognised.

+

Member + functions

+

Constructor

+
    context(Iterator const &first, 
Iterator const &last, char const *filename,
ContextPolicy const& ctx_policy);
+

Constructs a context object on top of the input stream given + by the pair of auxilliary iterators [first, last). + The iterators should be at least forward_iterator type iterators. The filename parameter is to be supplied for + informational purposes only. This string is used for indicating the + token positions inside the input stream, it is not validated against + the file system. If the filename parameter is not given it defaults to "<Unknown>". If + the ctx_policy parameter isn't supplied it defaults to a default + constructed ContextPolicy object.

+

Additionally the macro symbol table is filled with the + predefined macros and the current reference directory is set to the + path of the given filename. If this filename does not reference valid + file system item, the current reference directory is set to the current + system directory. (The current reference directory is the file system + path, which is used as the target directory during the processing of #include "..." directives).

+

Iterator interface

+

The pair of iterators returned by the context::begin and context::end functions is the main interface + for accessing the preprocessed tokens from the preprocessor engine. + While iterating over the given iterator range [begin, end) there are returned the preprocessed C++ tokens, which are generated on + the fly from the underlying input stream. The returned iterators are + conceptually of forward_iterator type.

+

begin

+
    iterator_type begin();
iterator_type begin(Iterator const &first,
Iterator const &last, );
+
+

Initializes and returns the starting iterator for the + preprocessed token stream. The iterator pair given by the parameters  [first, last) specifies the input sequence to preprocess. The first version of this + function uses the iinput stream as specified by the constructor. 

end

    iterator_type end() const;
-
-

Initializes and returns the end of stream iterator to compare with for detecting - the end of the preprocessed token stream.

+
+

Initializes and returns the end of stream iterator to + compare with for detecting the end of the preprocessed token stream.

Maintain include paths

-

The Wave library maintains two separate search paths for include - files. A search path for user include files and a search path for system include - files. Any directories specified with the add_include_path() - function before the function set_sysinclude_delimiter() - is called are searched only for the case of #include "..." - directives, they are not searched for #include <file> directives. - I.e. these directories are added to the user include search path.

-

If additional directories are specified with the add_include_path() - function after a call to the function set_sysinclude_delimiter(), - these directories are searched for all #include directives. I.e. these - directories are added to the system include search path.

-

In addition, a call to the function set_sysinclude_delimiter() - inhibits the use of the current reference directory as the first search directory - for #include "..." directives. Therefore, the current - reference directory is searched only, if it is requested explicitly with a call - to the function add_include_path("."). -

-

Callig both functions, the set_sysinclude_delimiter() - and add_include_path(".") allows you - to control precisely, which directories are searched before the current one - and which are searched after.

-

These functions are modelled after the command line behaviour implemented by - the popular gcc compiler.
+

The Wave library maintains two separate + search paths for include files. A search path for user include files + and a search path for system include files. Any directories specified + with the add_include_path() function before the function set_sysinclude_delimiter() is called are searched only for the case of #include "..." directives, they are not searched for #include <file> directives. I.e. these directories are added to the user include search + path.

+

If additional directories are specified with the add_include_path() function after a call to the function set_sysinclude_delimiter(), + these directories are searched for all #include directives. I.e. these directories are added to the system include + search path.

+

In addition, a call to the function set_sysinclude_delimiter() inhibits the use of the current reference directory as the first search + directory for #include "..." directives. + Therefore, the current reference directory is searched only, if it is + requested explicitly with a call to the function add_include_path(".").

+

Callig both functions, the set_sysinclude_delimiter() and add_include_path(".") allows you to control precisely, which directories are searched before + the current one and which are searched after.

+

These functions are modelled after the command line behaviour + implemented by the popular gcc compiler.

add_include_path

-
    bool add_include_path(char const *path);
+
    bool add_include_path(char const *path);
-
-

Adds the given file system path to the user include search paths. After a - call to the set_sysinclude_delimiter() - this function adds the given file system path to the system include search - paths. Note though, that the given path is validated against the file system. -

-

If the given path string does not form a name of a valid file system directory - item, the function returns false. If the given path was successfully - added to the include search paths in question, the function returns true.

+
+

Adds the given file system path to the user include search + paths. After a call to the set_sysinclude_delimiter() this function adds the given file system path to the system include + search paths. Note though, that the given path is validated against the + file system.

+

If the given path string does not form a name of a valid + file system directory item, the function returns false. + If the given path was successfully added to the include search paths in + question, the function returns true.

add_sysinclude_path

    bool add_sysinclude_path(char const *path);
-
-

Adds the given file system path to the system include search paths. This - function operates on the system include search path regardless of the mode - of operation of the add_include_path(). Note +

+

Adds the given file system path to the system include search + paths. This function operates on the system include search path + regardless of the mode of operation of the add_include_path(). Note though, that the given path is validated against the file system.

-

If the given path string does not form a name of a valid file system directory - item, the function returns false. If the given path was successfully - added to the system include search paths, the function returns true.

+

If the given path string does not form a name of a valid + file system directory item, the function returns false. + If the given path was successfully added to the system include search + paths, the function returns true.

set_sysinclude_delimiter

-
    void set_sysinclude_delimiter();
-
-

Switches the mode, how the add_include_path() - function operates. By default the given file system path is added to the user - include search paths. After calling this function a subsequent call to the - add_include_path() adds the given file system - path to the system include search paths. Additionally it inhibits the the - use of the current reference directory as the first search directory for #include "..." - directives.

+
    void set_sysinclude_delimiter();
+
+

Switches the mode, how the add_include_path() function operates. By default the given file system path is added to + the user include search paths. After calling this function a subsequent + call to the add_include_path() adds the given file system path to the system include search paths. + Additionally it inhibits the the use of the current reference directory + as the first search directory for #include "..." directives.

get_iteration_depth

    size_t get_iteration_depth() const;
-
-

Returns the actual include iteration depth, i.e. the current number of include - levels to be poped from the include iteration context, before the main (topmost) - iteration context is reached.

+
+

Returns the actual include iteration depth, i.e. the current + number of include levels to be poped from the include iteration + context, before the main (topmost) iteration context is reached.

Maintain defined macros

add_macro_definition

-
    bool add_macro_definition(
-        std::string macrostring, 
-        bool is_predefined); 
+
    bool add_macro_definition(
std::string macrostring, bool is_predefined);
-
-

Adds a new macro definition to the macro symbol table. The parameter macrostring - should contain the macro to define in the command line format, i.e. something - like MACRO(x)=definition. The following table describes this format - in more detail. The parameter is_predefined should be true while - defining predefined macros, i.e. macros, which are not undefinable with an - #undef directive from inside the preprocessed input stream. If this - parameter is not given, it defaults to false.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+

Adds a new macro definition to the macro symbol table. The + parameter macrostring should contain the macro to + define in the command line format, i.e. something like MACRO(x)=definition. + The following table describes this format in more detail. The parameter is_predefined should be true while defining + predefined macros, i.e. macros, which are not undefinable with an #undef directive from inside the preprocessed input stream. If this parameter + is not given, it defaults to false.

+
Summary of possible formats for defining - macros
MACROdefine MACRO as 1
MACRO=define MACRO as nothing (empty)
MACRO=definitiondefine MACRO as definition
MACRO(x)define MACRO(x) as 1
MACRO(x)=define MACRO(x) as nothing (empty)
MACRO(x)=definitiondefine MACRO(x) as definition
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary + of possible formats for defining macros
MACROdefine MACRO as 1
MACRO=define MACRO as nothing (empty)
MACRO=definitiondefine MACRO as definition
MACRO(x)define MACRO(x) as 1
MACRO(x)=define MACRO(x) as nothing (empty)
MACRO(x)=definitiondefine MACRO(x) as definition
-

The function returns false, if the macro to define already was defined - and the new definition is equivalent to the existing one, it returns true, - if the new macro was successfully added to the macro symbol table.

-

If the given macro definition resembles a redefinition and the new macro - is not identical to the already defined macro (in the sense defined by the - C++ Standard), the function throws a corresponding preprocess_exception.

+

The function returns false, if the + macro to define already was defined and the new definition is + equivalent to the existing one, it returns true, if the new macro was + successfully added to the macro symbol table.

+

If the given macro definition resembles a redefinition and + the new macro is not identical to the already defined macro (in the + sense defined by the C++ Standard), the function throws a corresponding preprocess_exception.

is_defined_macro

-
    template <typename String>
-    bool is_defined_macro(String const &name) const; 
+
    template <typename String>
bool is_defined_macro(String const &name) const;
-

Returns, if a macro with the given name is defined, i.e. if it is - contained in the macro symbol table.

-
+

Returns, if a macro with the given name is defined, i.e. if it is contained in the macro symbol table.

+

get_macro_definition

-
    bool get_macro_definition(
-        std::string const &name, bool &is_function_style, 
-        bool &is_predefined, position_type &pos, 
-        std::vector<token_type> &parameters, 
-        token_sequence_type &definition) const; 
+
    template <typename String>
bool get_macro_definition(
String const &name, bool &is_function_style,
bool
&is_predefined, position_type &pos,
std::vector<token_type> &parameters,
token_sequence_type &definition) const;
-

Allows to retrieve all information known with regard to a macro definition. The parameter name specifies the name of the macro the information should be returned for. The parameters - is_function_style and is_predefined return, whether the macro has been defined as a function style macro or as a predefined macro resp. The parameter pos will contain the position the macro was defined at. The parameter parameters will contain the names of the parameters the macro was defined with and the parameter definition will contain the token sequence for the definition (macro body).

-

The function returns true is the macro was defined and the requested information has been successfully retrieved, false otherwise.

+

Allows to retrieve all information known with regard to a + macro definition. The parameter name specifies + the name of the macro the information should be returned for. The + parameters is_function_style and is_predefined return, whether the macro has been defined as a function style macro or + as a predefined macro resp. The parameter pos will contain the position the macro was defined at. The parameter parameters will contain the names of the parameters the macro was defined with and + the parameter definition will contain the token + sequence for the definition (macro body).

+

The function returns true is the macro + was defined and the requested information has been successfully + retrieved, false otherwise.

remove_macro_definition

-
    bool remove_macro_definition(
-        std::string const &name, 
-        bool even_predefined); 
+
    template <typename String>
bool remove_macro_definition(
String const &name, bool even_predefined);
-

Removes the definition of the macro with the given name from the - macro symbol table. This operation is equivalent to an #undef directive - with this name executed from within the input stream. If the parameter - even_predefined is true, then the macro is removed from - the macro symbol table even, if it is defined as a predefined macro.

-

Note though, that the following macros are not undefinable in any - case: __FILE__, __LINE__, __DATE__, __TIME__, - __cplusplus, __STDC__. If the parameter even_predefined - is not given, it defaults to false.

-

The function returns false, if the macro to undefine was not defined - and returns true otherwise.

-

If the macro to remove may not be undefined (it is a predefined macro and - the parameter even_predefined is set to false or it is one - of the mentioned not undefinable macros above) the function throws a preprocess_exception.

+

Removes the definition of the macro with the given name from the macro symbol table. This operation is equivalent to an #undef directive with this name executed from within the + input stream. If the parameter even_predefined is true, then the macro is removed from the macro + symbol table even, if it is defined as a predefined macro.

+

Note though, that the following macros are not undefinable in any case: __FILE__, __LINE__, __DATE__, __TIME__, __cplusplus, __STDC__. If the parameter even_predefined is not given, it defaults to false.

+

The function returns false, if the + macro to undefine was not defined and returns true otherwise.

+

If the macro to remove may not be undefined (it is a + predefined macro and the parameter even_predefined is set to false or it is one of the mentioned not + undefinable macros above) the function throws a preprocess_exception.

reset_macro_definitions

    void reset_macro_definitions(); 
-

Resets the macro symbol table to it's initial state, i.e. undefines all user defined macros and inserts the internal predefined macros as described here.

+

Resets the macro symbol table to it's initial state, i.e. + undefines all user defined macros and inserts the internal predefined + macros as described here.

-

macro_names_begin, macro_names_end

-
    name_iterator macro_names_begin();
-    name_iterator macro_names_end();
-    const_name_iterator macro_names_begin() const;
-    const_name_iterator macro_names_end() const;
+

macro_names_begin, + macro_names_end

+
    name_iterator macro_names_begin();
name_iterator macro_names_end();
const_name_iterator macro_names_begin() const;
const_name_iterator macro_names_end() const;
-

The macro_names_begin and macro_names_end functions return iterators allowing to iterate on the names of all defined macros.

+

The macro_names_begin and macro_names_end functions return iterators allowing to iterate on the names of all + defined macros.

-

Get Version information

+

Get Version + information

get_version

-
    static std::string get_version(); 
+
    static std::string get_version(); 
-

Returns a string containing the current Wave version formatted as 0xvvrsbbbb - (this is a string representation of the equivalent hexadecimal number), where - 'vv' is the version number, 'r' - the release number, 's' the subrelease number - and 'bbbb' the build number. A possible return - value looks like 0x00910454. The returned value - is the same as is inserted in the preprocessed token stream, when the predefined - macro __WAVE_VERSION__ is expanded.

+

Returns a string containing the current Wave version + formatted as 0xvvrsbbbb (this is a string representation of the equivalent hexadecimal number), + where 'vv' is the + version number, 'r' the release number, 's' the subrelease number and 'bbbb' the build number. A possible return value looks like 0x00910454. The returned value + is the same as is inserted in the preprocessed token stream, when the + predefined macro __WAVE_VERSION__ is expanded.

get_version_str

-
    static std::string get_version_str(); 
-
-

Returns a string containing the current Wave version formatted as "v.rr.ss.bbbb", - where 'v' is the version number, 'rr' - the release number, 'ss' the subrelease number - and 'bbbb' the build number. A possible return - value looks like "0.9.1.454". The returned - value is the same as it will be inserted in the preprocessed token stream, when the - predefined macro __WAVE_VERSION_STR__ is expanded.

+
    static std::string get_version_str(); 
+
+

Returns a string containing the current Wave version + formatted as "v.rr.ss.bbbb", + where 'v' is the + version number, 'rr' the release number, 'ss' the subrelease number and 'bbbb' the build number. A possible return value looks like "0.9.1.454". The returned value + is the same as it will be inserted in the preprocessed token stream, + when the predefined macro __WAVE_VERSION_STR__ is + expanded.

Control extended options

set_language
get_language

-
    void set_language(language_support language, 
-        bool reset_macros = true);
-    language_support get_language() const;
-
-

This functions allows to specify the language mode, in which the Wave - library should work. The possible language modes are defined by the enumerated - type language_support:

-
    enum language_support {
-    // support flags for C++98
-        support_normal = 0x01,
-        support_cpp = support_normal,
-    
-    // support flags for C99
-        support_option_long_long = 0x02,
-        support_option_variadics = 0x04,
-        support_c99 = support_option_variadics | 
-                      support_option_long_long | 
-                      0x08,
-
-    // the mask for the main language settings
-        support_option_mask = 0xFF00,
- // additional fine tuning of the general behavior - support_option_preserve_comments = 0x0100, - support_option_no_character_validation = 0x0200, - support_option_convert_trigraphs = 0x0400, - support_option_single_line = 0x0800, - support_option_prefer_pp_numbers = 0x1000, - support_option_emit_line_directives = 0x2000, - support_option_include_guard_detection = 0x4000, - support_option_emit_pragma_directives = 0x8000 - };
-

When used with support_option_variadics the support for variadics, placemarkers - and the operator _Pragma() is enabled in normal C++ mode. When used with the support_option_long_long the support for long long suffixes is enabled in C++ mode.

-

The support_c99 switches on the C99 language support, which enables variadics, placemarkers, the operator _Pragma and long long suffixes by default. Additionally it disables the C++ specific tokens such as '->*', '.*', '::' etc.

-

The support_option_... values are to be used in conjunction with the main language settings (support_normal and support_c99) .

+
    void set_language(language_support language, 
bool reset_macros = true);
language_support get_language() const;
+
+

This functions allows to specify the language mode, in which + the Wave library should work. The possible + language modes are defined by the enumerated type language_support:

+
    enum language_support {
// support flags for C++98
support_normal = 0x01,
support_cpp = support_normal,

// support flags for C99

support_option_long_long = 0x02,
support_option_variadics = 0x04,
support_c99 = support_option_variadics | support_option_long_long | 0x08,

// the mask for the main language settings

support_option_mask = 0xFF80,

// additional fine tuning of the general behavior
support_option_insert_whitespace = 0x0080,
support_option_preserve_comments = 0x0100,
support_option_no_character_validation = 0x0200,
support_option_convert_trigraphs = 0x0400,
support_option_single_line = 0x0800,
support_option_prefer_pp_numbers = 0x1000,
support_option_emit_line_directives = 0x2000,
support_option_include_guard_detection = 0x4000,
support_option_emit_pragma_directives = 0x8000
};
+

When used with support_option_variadics the support for variadics, placemarkers and the operator _Pragma() is enabled in normal C++ mode. When used with the support_option_long_long the support for long long suffixes is enabled in C++ mode.

+

The support_c99 switches on the C99 + language support, which enables variadics, placemarkers, the operator _Pragma and long long suffixes by default. Additionally it disables the C++ + specific tokens such as '->*', '.*', '::' etc.

+

The support_option_... values are to + be used in conjunction with the main language settings (support_normal and support_c99) .

    -
  • If the support_option_preserve_comments flag is set, the Wave library preserves almost all comments in the source code. The only comments not preserved are those contained inside macro definitions. If this flag is not set all comments are replaced by a single space.
  • -
  • If the support_option_no_character_validation flag is set , the Wave library does not validate universal character literals (given in the form of 'u1234' or 'U12345678') to be in the allowed value range. This flag is merely used for internal purposes by the testing framework and will be rarely used by a user of the library.
  • -
  • If the support_option_convert_trigraphs flag is set, the Wave library replaces all occurences of trigraph characters with their non-trigraph character sequence (i.e. '??=' is replaced by '#' etc.) . By default no replacement is performed.
  • -
  • If the support_option_single_line flag is set, the Wave library will now reprot an error if the last line of the processed input is not terminated by a new line. This flag is merely used for internal purposes by the testing framework and will be rarely used by a user of the library.
  • -
  • If the support_option_prefer_pp_numbers flag is set, the Wave library is instructed to correctly identify pp-number's in the input stream. These get recognized into 'normal' number tokens before they get returned to the calling application. The flag is set by default and is used merely for internal purposes and will be rarely reset by a user of the library.
  • -
  • If the support_option_emit_line_directives flag is set, the Wave library will emit #line directives in the generated token stream, if appropriate. This flag is set by default, to prevent the library from generating #line directives it must be reset explicitely.
  • -
  • If the support_option_include_guard_detection flag is set, the Wave library will try to automatically identify include guards during the processing of a included file. Files which contained include guards are handled as if they contained a #pragma once, i.e. these files wonn#t be opened twice, even if specified in a second #include statement.
  • +
  • If the support_option_insert_whitespace flag is set, the Wave library  inserts + additional whitespace between tokens where the concatenated string + representation of the two tokens would form another valid C++ token. + This is very importatnt to avoid mis-interpretations of the generated + output if it is going to be processed by a C++ compiler afterwards. +  
  • +
  • If the support_option_preserve_comments flag is set, the Wave library preserves almost + all comments in the source code. The only comments not preserved are + those contained inside macro definitions. If this flag is not set all + comments are replaced by a single space.
  • +
  • If the support_option_no_character_validation flag is set , the Wave library does not validate + universal character literals (given in the form of 'u1234' or 'U12345678') to be in the allowed value range. + This flag is merely used for internal purposes by the testing framework + and will be rarely used by a user of the library.
  • +
  • If the support_option_convert_trigraphs flag is set, the Wave library replaces all + occurences of trigraph characters with their non-trigraph character + sequence (i.e. '??=' is replaced by '#' etc.) . By default no replacement is performed.
  • +
  • If the support_option_single_line flag is set, the Wave library will now reprot an + error if the last line of the processed input is not terminated by a + new line. This flag is merely used for internal purposes by the testing + framework and will be rarely used by a user of the library.
  • +
  • If the support_option_prefer_pp_numbers flag is set, the Wave library is instructed to + correctly identify pp-number's in the input stream. These get + recognized into 'normal' number tokens before they get returned to the + calling application. The flag is set by default and is used merely for + internal purposes and will be rarely reset by a user of the library.
  • +
  • If the support_option_emit_line_directives flag is set, the Wave library will emit #line directives in the + generated token stream, if appropriate. This flag is set by default, to + prevent the library from generating #line directives it must be reset explicitely.
  • +
  • If the support_option_include_guard_detection flag is set, the Wave library will try to + automatically identify include guards during the processing of a + included file. Files which contained include guards are handled as if + they contained a #pragma once, i.e. these files wonn#t be opened twice, + even if specified in a second #include statement.
-

During this process the library will recognize two forms of include guards:

-
    #ifndef INCLUDE_GUARD_MACRO
-    #define INCLUDE_GUARD_MACRO
-    ...
-    #endif
-
-  or
-
-    #if !defined(INCLUDE_GUARD_MACRO)
-    #define INCLUDE_GUARD_MACRO
-    ...
-    #endif
-

Note, that the parenthesis in the second form are optional (i.e. !defined INCLUDE_GUARD_MACRO will work as well). The code allows for any whitespace, newline and single - '#' tokens before the #if/#ifndef and after the final #endif for the include guard to be recognized.

-

This flag is on by default, so if you do not want the library to automatically reconize include guards you will need to reset this explicitely.

+

During this process the library will recognize two forms + of include guards:

+
 #ifndef INCLUDE_GUARD_MACRO
#define INCLUDE_GUARD_MACRO
...
#endif
or
#if !defined(INCLUDE_GUARD_MACRO)
#define INCLUDE_GUARD_MACRO
...
#endif
+

Note, that the parenthesis in the second form are + optional (i.e. !defined INCLUDE_GUARD_MACRO will + work as well). The code allows for any whitespace, newline and single + '#' tokens before the #if/#ifndef and after the + final #endif for + the include guard to be recognized.

+

This flag is on by default, so if you do not want the + library to automatically reconize include guards you will need to reset + this explicitely.

    -
  • If the support_option_emit_pragma_directives flag is set, the Wave library will emit all unknown #pragma directives to the output. This suport option will be recognized only if the BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES is defined during compilation to a value not equal to zero (see here for more information).
  • +
  • If the support_option_emit_pragma_directives flag is set, the Wave library will emit all + unknown #pragma directives to the output. This suport option will be recognized only if + the BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES is defined + during compilation to a value not equal to zero (see here for more + information).
-

If the parameter reset_macros is true the set_language function internally resets the list of defined macros, so please be careful not to call it after you have defined your own macros already.

+

If the parameter reset_macros is true the set_language function internally + resets the list of defined macros, so please be careful not to call it + after you have defined your own macros already.

set_max_include_nesting_depth
get_max_include_nesting_depth

-
    void set_max_include_nesting_depth(size_t new_depth); 
-    size_t get_max_include_nesting_depth() const;
-
-

This functions allow to set or to get the maximal possible include file nesting - depth supported by the Wave library. The initial value for this is - determined by the preprocessing constant WAVE_MAX_INCLUDE_LEVEL_DEPTH - (see here).

+
    void set_max_include_nesting_depth(size_t new_depth); 
size_t get_max_include_nesting_depth() const;
+
+

This functions allow to set or to get the maximal possible + include file nesting depth supported by the Wave library. The initial value for this is determined by the preprocessing + constant WAVE_MAX_INCLUDE_LEVEL_DEPTH (see here).

- - - - - - + + + + + + + +

- + Distributed under the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt)

- +

 

diff --git a/doc/class_reference_ctxpolicy.html b/doc/class_reference_ctxpolicy.html index 879794d..836fa48 100644 --- a/doc/class_reference_ctxpolicy.html +++ b/doc/class_reference_ctxpolicy.html @@ -5,33 +5,39 @@ - - - - - - - +

The - Context Policy (new, upcoming interface)
+ + + + + + +
 The + Context Policy

- - - - - - + + + + + + + +
-
+

Introduction
Header 'wave/preprocessing_hooks.hpp' synopsis
Member functions

Introduction

-

Please note that the following description relates to the new preprocessing hooks interface used by default starting with the Boost V1.35.0 release. If you are interested in the older interface please look here.

+

Please note that the following description relates to the new + preprocessing hooks interface used by default starting with the Boost + V1.35.0 release. If you are interested in the older interface please + look here.

The context policy is used to provide callback hooks, which are called from inside the library into the user code, whenever

  • a preprocessor directive has been recognized,
  • @@ -43,169 +49,111 @@
  • a token has to be skipped because it is contained in a non-evaluated conditional block,
  • a pragma of the form 'wave option[(value)]' has been recognized.
-

This policy type is used as a template parameter to the boost::wave::context<> - object, where the default policy provides empty hook functions only.

-

Header wave/preprocessing_hooks.hpp - synopsis

-
-namespace boost {
-namespace wave {
-namespace context_policies {
- 
-    struct default_preprocessing_hooks {
-
-        // general hook functions
-        template <typename ContextT, typename TokenT>
-        bool found_directive(ContextT const &ctx, 
-            TokenT const &directive);
- // test, whether a given token may be skipped
template <typename ContextT> - bool may_skip_whitespace (ContextT const& ctx, - TokenT &token, bool &skipped_newline);
- // Conditional compilation - template <typename ContextT, typename ContainerT>
bool evaluated_conditional_expression( - ContextT const &ctx, ContainerT const& expression,
bool expression_value);
- template <typename ContextT, typename TokenT> - void skipped_token(ContextT const &ctx, - TokenT const& token);
- // macro expansion tracing +

This policy type is used as a template parameter to the boost::wave::context<> object, where the default policy provides empty hook functions only.

+

Header wave/preprocessing_hooks.hpp synopsis

+
namespace boost {
namespace wave {
namespace context_policies {

struct default_preprocessing_hooks {

// general hook functions + template <typename ContextT, typename TokenT>
bool found_directive(ContextT const &ctx,
TokenT const &directive);

template <typename ContextT, typename ExceptionT>
void throw_exception(ContextT const &ctx,
ExceptionT const& e);

// test, whether a given token may be skipped
template <typename ContextT>
bool may_skip_whitespace (ContextT const& ctx,
TokenT &token, bool &skipped_newline);
+ // Conditional compilation + template <
typename ContextT, typename TokenT,
typename ContainerT
>
bool evaluated_conditional_expression(
ContextT const &ctx, TokenT const& directive,
ContainerT const& expression, bool expression_value);
+ template <typename ContextT, typename TokenT>
void skipped_token(ContextT const &ctx,
TokenT const& token);

template <typename ContextT, typename TokenT>
TokenT const& generated_token(ContextT const &ctx,
TokenT const& token);

// macro expansion tracing template < - typename ContextT, typename TokenT, typename ContainerT, - typename IteratorT - > - bool expanding_function_like_macro( - ContextT const &ctx, TokenT const &macrodef, - std::vector<TokenT> const &formal_args, - ContainerT const &definition, TokenT const &macrocall, - std::vector<ContainerT> const &arguments, - IteratorT const &seqstart, Iterator const &seqend); - - template <typename ContextT, typename TokenT, typename ContainerT> - bool expanding_object_like_macro( - ContextT const &ctx, TokenT const &macro, - ContainerT const &definition, TokenT const &macrocall); - - template <typename ContextT, typename ContainerT> - void expanded_macro(ContextT const &ctx, - ContainerT const &result); - - template <typename ContextT, typename ContainerT> - void rescanned_macro(ContextT const &ctx, - ContainerT const &result); - - // include file tracing functions - template <typename ContextT> - bool found_include_directive(ContextT const &ctx, - std::string const &filename, bool include_next); - - template <typename ContextT> - void opened_include_file(ContextT const &ctx, - std::string const &relname, std::string const& absname, - std::size_t include_depth, bool is_system_include); - - template <typename ContextT> - void returning_from_include_file(ContextT const &ctx); - - // interpretation of #pragma's of the form + typename ContextT, typename TokenT, typename ContainerT,
typename IteratorT
>
bool expanding_function_like_macro(
ContextT const &ctx, TokenT const &macrodef,
std::vector<TokenT> const &formal_args,
ContainerT const &definition, TokenT const &macrocall,
std::vector<ContainerT> const &arguments,
IteratorT const &seqstart, Iterator const &seqend);

template <typename ContextT, typename TokenT, typename ContainerT>
bool expanding_object_like_macro(
ContextT const &ctx, TokenT const &macro,
ContainerT const &definition, TokenT const &macrocall);

template <typename ContextT, typename ContainerT>
void expanded_macro(ContextT const &ctx,
ContainerT const &result);

template <typename ContextT, typename ContainerT>
void rescanned_macro(ContextT const &ctx,
ContainerT const &result);

// include file tracing functions + template <typename ContextT>
bool found_include_directive(ContextT const &ctx,
std::string const &filename, bool include_next);

template <typename ContextT>
void opened_include_file(ContextT const &ctx,
std::string const &relname, std::string const& absname,
bool is_system_include);

template <typename ContextT>
void returning_from_include_file(ContextT const &ctx);

// interpretation of #pragma's of the form // 'wave option[(value)]' - template <typename ContextT, typename ContainerT> - bool interpret_pragma(ContextT const &ctx, ContainerT &pending, - typename ContextT::token_type const &option, - ContainerT const &values, - typename ContextT::token_type const &pragma_token); - - // macro definition hooks - template < - typename ContextT, typename TokenT, - typename ParametersT, typename DefinitionT - > - void defined_macro(ContextT const &ctx, TokenT const &name, - bool is_functionlike, ParametersT const &parameters, - DefinitionT const &definition, bool is_predefined); - - template <typename ContextT, typename TokenT> - void undefined_macro(ContextT const &ctx, - TokenT const &name); - - // #error and #warning directive hooks - template <typename ContextT, typename ContainerT> - bool found_warning_directive(ContextT const &ctx, - ContainerT const &message); - - template <typename ContextT, typename ContainerT> - bool found_error_directive(ContextT const &ctx, - ContainerT const &message); - - // #line directive hook - template <typename ContextT, typename ContainerT> - void found_line_directive(ContextT const &ctx, - ContainerT const &arguments, unsigned int line, - std::string const& filename); - }; - -}}} // namespace boost::wave::context_policies
+ template <typename ContextT, typename ContainerT>
bool interpret_pragma(ContextT const &ctx, ContainerT &pending,
typename ContextT::token_type const &option,
ContainerT const &values,
typename ContextT::token_type const &pragma_token);

// macro definition hooks + template <
typename ContextT, typename TokenT, + typename ParametersT, typename DefinitionT
>
void defined_macro(ContextT const &ctx, TokenT const &name, + bool is_functionlike, ParametersT const &parameters,
DefinitionT const &definition, bool is_predefined);

template <typename ContextT, typename TokenT>
void undefined_macro(ContextT const &ctx,
TokenT const &name);

// #error and #warning directive hooks + template <typename ContextT, typename ContainerT>
bool found_warning_directive(ContextT const &ctx,
ContainerT const &message);

template <typename ContextT, typename ContainerT>
bool found_error_directive(ContextT const &ctx,
ContainerT const &message);

// #line directive hook + template <typename ContextT, typename ContainerT>
void found_line_directive(ContextT const &ctx,
ContainerT const &arguments, unsigned int line,
std::string const& filename);
};

}}} // namespace boost::wave::context_policies

Member functions

General hook functions

found_directive

-
    template <typename ContextT, typename TokenT>
-    bool found_directive(ContextT const& ctx, TokenT const &directive);
+
    template <typename ContextT, typename TokenT>
bool found_directive(ContextT const& ctx, TokenT const &directive);

The function found_directive is called, whenever the preprocessor has detected one of the preprocessing directives (#define, #undef, #if, #idef, #ifndef, #elif, #endif, #error, #include, #pragma or #warning) .

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter directive refers to the token containing the detected preprocessing directive.

-

If the return value is true, the directive will be skipped altogether, i.e. no preprocessing is done. The overall directive is replaced by a single newline character. If the return value is false, the directive is processed in the normal manner.

+

If the return value is true, the directive will be + skipped altogether, i.e. no preprocessing is done. The overall + directive is replaced by a single newline character. If the return + value is false, the directive is processed in the normal manner.

+
+

throw_exception

+
        template <typename ContextT, typename ExceptionT>
void throw_exception(ContextT const &ctx,
ExceptionT const& e);
+
+

he function throw_exception is called, whenever a preprocessing exception occurs .

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. 

+

The parameter e is the exception object containing detailed error information.

may_skipwhitespace

-
    template <typename ContextT, typename TokenT>
-    bool may_skip_whitespace(ContextT const& ctx, TokenT &token, 
-        bool& skipped_newline);
+
    template <typename ContextT, typename TokenT>
bool may_skip_whitespace(ContextT const& ctx, TokenT &token,
bool& skipped_newline);

The function may_skipwhitespace will be called by the library, whenever a token is about to be returned to the calling application.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Wave V1.2.4 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Wave V1.2.4 release.

The token parameter holds a reference to the current token. The policy is free to change this token if needed.

-

The skipped_newline parameter holds a reference to a boolean value which should be set to true by the policy function whenever a newline is going to be skipped.

+

The skipped_newline parameter holds a reference to a + boolean value which should be set to true by the policy function + whenever a newline is going to be skipped.

If the return value is true, the given token is skipped and the preprocessing continues to the next token. If the return value is false, the given token is returned to the calling application. Caution has to be used, because by returning true the policy function is able to force skipping even significant tokens not only whitespace.

Conditional compilation hook functions

evaluated_conditional_expression

-
    template <typename ContextT, typename ContainerT>
bool evaluated_conditional_expression(ContextT const& ctx, - ContainerT const& expression, bool expression_value); +
    template <typename ContextT, typename TokenT, typename ContainerT>
bool evaluated_conditional_expression(ContextT const& ctx,
TokenT const& directive, ContainerT const& expression,
bool
expression_value);
-

The function evaluated_conditional_expression is called, whenever the preprocessor has encountered a #if, #elif, #ifdef or #ifndef directive. This hook gets passed the non-expanded conditional expression (as it was given in the analysed source file) and the result of the evaluation of this expression in the current preprocessing context.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The function evaluated_conditional_expression is called, whenever the preprocessor has encountered a #if, #elif, #ifdef or #ifndef directive. This hook gets passed the non-expanded conditional + expression (as it was given in the analysed source file) and the result + of the evaluation of this expression in the current preprocessing + context.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

+

The token parameter holds a reference to the evaluated directive token. 

The parameter expression holds the non-expanded token sequence comprising the evaluated expression.

The parameter expression_value contains the result of the evaluation of the expression in the current preprocessing context.

-

The return value defines, whether the given expression has to be evaluated again, allowing to decide which of the conditional branches should be expanded. You need to return 'true' from this hook function to force the expression to be re-evaluated. Note, this was changed from a 'void' for the Boost V1.35.0 release.
+

The return value defines, whether the given expression has to be + evaluated again, allowing to decide which of the conditional branches + should be expanded. You need to return 'true' from this hook function to force the expression to be re-evaluated. Note, this was changed from a 'void' for the Boost V1.35.0 release.

skipped_token

-
    template <typename ContextT, typename TokenT>
-    void skipped_token(ContextT const& ctx, TokenT const& token);
+
    template <typename ContextT, typename TokenT>
void skipped_token(ContextT const& ctx, TokenT const& token);

The function skipped_token is called, whenever a token is about to be skipped due to a false preprocessor condition (code fragments to be - skipped inside the not evaluated conditional #if/#else/#endif branches).

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+ skipped inside the not evaluated conditional #if/#else/#endif branches).

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter token refers to the token to be skipped.

+

generated_token

+
    template <typename ContextT, typename TokenT>
TokenT const& generated_token(ContextT const& ctx, TokenT const& token);
+
+
+

The function generated_token is called, whenever a token is about to be returned from the library.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

+

The parameter token refers to the token about to be + returned from the library. This function may alter the token, but in + this case it must be implemented with a non-const reference for the + token parameter, allowing to modify the token in place.

+

The default behavior is to return the passed token reference unchanged to the caller.

+

Macro expansion tracking functions

expanding_function_like_macro

-
    template <typename ContextT, typename TokenT, typename ContainerT>
-    bool expanding_function_like_macro(
-        ContextT const& ctx, TokenT const &macrodef, 
-        std::vector<TokenT> const &formal_args, 
-        ContainerT const &definition, TokenT const &macrocall, 
-        std::vector<ContainerT> const &arguments,
-        IteratorT const &seqstart, Iterator const &seqend);
-
+
    template <typename ContextT, typename TokenT, typename ContainerT>
bool expanding_function_like_macro(
ContextT const& ctx, TokenT const &macrodef,
std::vector<TokenT> const &formal_args,
ContainerT const &definition, TokenT const &macrocall,
std::vector<ContainerT> const &arguments,
IteratorT const &seqstart, Iterator const &seqend);
+

The function expanding_function_like_macro is called, whenever a function-like macro is to be expanded, i.e. before the actual expansion starts.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The macroname parameter marks the position where the macro to expand is defined. It contains the token which identifies the macro name used inside the corresponding macro definition.

@@ -224,20 +172,21 @@

The parameters seqstart and seqend point into the input token stream allowing to access the whole token sequence comprising the macro invocation (starting with the opening parenthesis and ending after the - closing one).

-

If the return value is true, the macro is not expanded, i.e. the overall macro invocation sequence, including the parameters are copied to the output without further processing . If the return value is false, the macro is expanded as expected.
+ closing one).

+

If the return value is true, the macro is not expanded, + i.e. the overall macro invocation sequence, including the parameters + are copied to the output without further processing . If the return + value is false, the macro is expanded as expected.

expanding_object_like_macro

-
    template <typename ContextT, typename TokenT, typename ContainerT>
-    bool expanding_object_like_macro(
-        ContextT const& ctx, TokenT const &macro, 
-        ContainerT const &definition, TokenT const &macrocall);
+
    template <typename ContextT, typename TokenT, typename ContainerT>
bool expanding_object_like_macro(
ContextT const& ctx, TokenT const &macro,
ContainerT const &definition, TokenT const &macrocall);
-
+

The function expanding_object_like_macro is called, whenever a object-like macro is to be expanded, i.e. before the actual expansion starts.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The macroname parameter marks the position where the macro to expand is defined. It contains the token which identifies the macro name used inside the corresponding macro definition.

@@ -248,95 +197,88 @@ It contains the token which identifies the macro call inside the preprocessed input stream.

If the return value is true, the macro is not expanded, i.e. the macro symbol is copied to the output without further processing. If the return value is false, the macro is expanded as expected.
-

+

expanded_macro

-
    template <typename ContextT, typename ContainerT>
-    void expanded_macro(ContextT const& ctx, ContainerT const &result);
+
    template <typename ContextT, typename ContainerT>
void expanded_macro(ContextT const& ctx, ContainerT const &result);
-
+

The function expanded_macro is called whenever the expansion of a macro is finished, the replacement list is completely scanned and the identified - macros herein are replaced by its corresponding expansion results, but before - the rescanning process starts.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+ macros herein are replaced by its corresponding expansion results, but before the rescanning process starts.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter result contains the the result of the macro expansion so far. This is a standard STL container containing the generated token sequence.

rescanned_macro

-
    template <typename ContextT, typename ContainerT>
-    void rescanned_macro(ContextT const& ctx, ContainerT const &result);
+
    template <typename ContextT, typename ContainerT>
void rescanned_macro(ContextT const& ctx, ContainerT const &result);
-
+

The function rescanned_macro is called whenever the rescanning of a macro is finished, i.e. the macro expansion is complete.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter result contains the the result of the whole macro expansion. This is a standard STL container containing the generated token sequence.

Include file tracing functions

found_include_directive

-
    template <typename ContextT>
-    bool found_include_directive(ContextT const& ctx, 
-        std::string const &filename, bool include_next);
+
    template <typename ContextT>
bool found_include_directive(ContextT const& ctx,
std::string const &filename, bool include_next);

The function found_include_directive is called whenever whenever a #include directive was located..

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter filename contains the (expanded) file name found after - the #include directive. This has the format <file>, "file" or file. - The formats <file> or "file" are used for #include directives found + the #include directive. This has the format <file>, "file" or file. + The formats <file> or "file" are used for #include directives found in the preprocessed token stream, the format file is used for files specified through the --force_include command line argument.

The parameter include_next is set to true if the found directive was - a #include_next directive and the BOOST_WAVE_SUPPORT_INCLUDE_NEXT preprocessing constant was defined to something != 0.

-

If the return value is true, the include directive is not executed, i.e. the file to include is not loaded nor processed. The overall directive is replaced by a single newline character. If the return value is false, the directive is executed in a normal manner.
+ a #include_next directive and the BOOST_WAVE_SUPPORT_INCLUDE_NEXT preprocessing constant was defined to something != 0.

+

If the return value is true, the include directive is not + executed, i.e. the file to include is not loaded nor processed. The + overall directive is replaced by a single newline character. If the + return value is false, the directive is executed in a normal manner.

opened_include_file

-
    template <typename ContextT>
-    void opened_include_file(ContextT const& ctx, 
-        std::string const &rel_filename, std::string const &abs_filename, 
-        std::size_t include_depth, bool is_system_include);
+
    template <typename ContextT>
void opened_include_file(ContextT const& ctx,
std::string const &rel_filename, std::string const &abs_filename,
bool is_system_include);
-
+

The function opened_include_file is called whenever a file referred by an #include directive was successfully located and opened.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

-

The parameter rel_filename contains the (normalised) probably relative file system path of the opened file. The concrete format of this file name depends on the format of the include search path given to the library beforehand.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

+

The parameter rel_filename contains the (normalised) + probably relative file system path of the opened file. The concrete + format of this file name depends on the format of the include search + path given to the library beforehand.

The parameter abs_filename contains the (normalised) full file system path of the - opened file.

-

The include_depth parameter contains the current include file depth. -

+ opened file.

The is_system_include parameter denotes, if the given file was found as a result of a #include <...> directive.

returning_from_include_file

-
    template <typename ContextT>
-    void returning_from_include_file(ContextT const& ctx);
+
    template <typename ContextT>
void returning_from_include_file(ContextT const& ctx);
-
+

The function returning_from_include_file is called whenever an included file is about to be closed after it's processing is complete.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

Interpretation of #pragma's

interpret_pragma

-
    template <typename ContextT, typename ContextT, typename ContainerT>
-    bool interpret_pragma(ContextT const &ctx, ContainerT &pending, 
-        typename ContextT::token_type const &option, 
-        ContainerT const &values, 
-        typename ContextT::token_type const &pragma_token);
+
    template <typename ContextT, typename ContextT, typename ContainerT>
bool interpret_pragma(ContextT const &ctx, ContainerT &pending,
typename ContextT::token_type const &option,
ContainerT const &values,
typename ContextT::token_type const &pragma_token);
-
-

The function interpret_pragma is called whenever an unrecognized - #pragma wave ... or operator _Pragma("wave ...") - is found in the input stream.

+
+

The function interpret_pragma is called whenever an unrecognized #pragma wave ... or operator _Pragma("wave ...") is found in the input stream.

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user.

The pending parameter may be used to push tokens back into the input - stream which are to be used as the replacement text for the whole #pragma wave() - directive. If this sequence is left empty, no replacement takes place, i.e. + stream which are to be used as the replacement text for the whole #pragma wave() directive. If this sequence is left empty, no replacement takes place, i.e. the interpreted directive is removed from the generated token stream.

The option parameter contains the name of the interpreted pragma.

The values parameter holds the value of the parameter provided to @@ -350,92 +292,87 @@

Macro definition

defined_macro

-
    template <
-        typename ContextT, typename TokenT, typename ParametersT, 
-        typename DefinitionT
-    >
-    void defined_macro(ContextT const& ctx, 
-        TokenT const &name, bool is_functionlike,
-        ParametersT const &parameters, DefinitionT const &definition,
-        bool is_predefined);
+
    template <
typename ContextT, typename TokenT, typename ParametersT, + typename DefinitionT
>
void defined_macro(ContextT const& ctx,
TokenT const &name, bool is_functionlike,
ParametersT const &parameters, DefinitionT const &definition,
bool is_predefined);
-

The function defined_macro is called whenever a macro was defined successfully.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+
+

The function defined_macro is called whenever a macro was defined successfully.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter name is a reference to the token holding the macro name.

The parameter is_functionlike is set to true whenever the newly defined macro is defined as a function like macro.

The parameter parameters holds the parameter tokens for the macro - definition. If the macro has no parameters or if it is a object like - macro, then this container is empty.

+ definition. If the macro has no parameters or if it is a object like + macro, then this container is empty.

The parameter definition contains the token sequence given as the - replacement sequence (definition part) of the newly defined macro.

+ replacement sequence (definition part) of the newly defined macro.

The parameter is_predefined is set to true for all macros predefined - during the initialisation pahase of the library.
+ during the initialisation pahase of the library.

undefined_macro

-
    template <typename ContextT, typename TokenT>
-    void undefined_macro(ContextT const& ctx, TokenT const &name);
+
    template <typename ContextT, typename TokenT>
void undefined_macro(ContextT const& ctx, TokenT const &name);

The function undefined_macro is called whenever a macro definition was removed successfully.

-

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. Note, this parameter was added for the Boost V1.35.0 release.

+

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user. + Note, this parameter was added for the Boost V1.35.0 release.

The parameter name holds the token of the macro which definition was removed.

found_warning_drective

-
    template <typename ContextT, typename ContainerT>
-    bool found_warning_directive(ContextT const& ctx, 
-        ContainerT const &message);
+
    template <typename ContextT, typename ContainerT>
bool found_warning_directive(ContextT const& ctx,
ContainerT const &message);
-

The function found_warning_directive is called whenever a #warning directive has been encountered. Note, this function was added for the Boost V1.35.0 release. This function will be called only if the BOOST_WAVE_SUPPORT_WARNING_DIRECTIVE compile time constant was defined to something not equal to zero (see the Compile Time Configuration for more information).

+

The function found_warning_directive is called whenever a #warning directive + has been encountered. Note, this function was added for the Boost + V1.35.0 release. This function will be called only if the BOOST_WAVE_SUPPORT_WARNING_DIRECTIVE compile time constant was defined to something not equal to zero (see the Compile Time Configuration for more information).

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user.

The parameter message references the argument token sequence of the encountered #warning directive.

If the return value is false, the library throws a preprocessor - exception of the type warning_directive (normal execution continues), if the return value is true the execution continues as if no #warning directive has been found and the overall directive is replaced by a single newline.

+ exception of the type warning_directive (normal execution continues), if the return value is true the execution continues as if no #warning directive has been found and the overall directive is replaced by a single newline.

found_error_drective

-
    template <typename ContextT, typename ContainerT>
-    bool found_error_directive(ContextT const& ctx, 
-        ContainerT const &message);
+
    template <typename ContextT, typename ContainerT>
bool found_error_directive(ContextT const& ctx,
ContainerT const &message);

The function found_error_directive is called whenever a #error directive has been encountered. Note, this function was added for the Boost V1.35.0 release.

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user.

The parameter message references the argument token sequence of the encountered #error directive.

If the return value is false, the library throws a preprocessor - exception of the type error_directive (normal execution continues), if the return value is true the execution continues as if no #error directive has been found and the overall directive is replaced by a single newline.

+ exception of the type error_directive (normal execution continues), if the return value is true the execution continues as if no #error directive has been found and the overall directive is replaced by a single newline.

found_line_drective

-
    template <typename ContextT, typename ContainerT>
-    void found_line_drective(ContextT const& ctx, 
-        ContainerT const &arguments, unsigned int line,
-        std::string const& filename);
+
    template <typename ContextT, typename ContainerT>
void found_line_drective(ContextT const& ctx,
ContainerT const &arguments, unsigned int line,
std::string const& filename);

The function found_line_directive is called whenever a #line directive has been encountered. Note, this function was added for the Boost V1.35.0 release.

The ctx parameter provides a reference to the context_type used during instantiation of the preprocessing iterators by the user.

The parameter arguments references the argument token sequence of the encountered #line directive.

-

The parameter line contains the recognized line number from the #line directive.

-

The parameter filename references the recognized file name from the #line directive (if there was one given).
+

The parameter line contains the recognized line number from the #line directive.

+

The parameter filename references the recognized file name from the #line directive (if there was one given).

- - - - - - + + + + + + + +

- + Distributed under the Boost Software License, Version + 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt)

+ diff --git a/doc/class_reference_filepos.html b/doc/class_reference_filepos.html index 9a5c5c8..0cc14be 100644 --- a/doc/class_reference_filepos.html +++ b/doc/class_reference_filepos.html @@ -35,7 +35,7 @@

The file position template is used to represent a concrete token position inside the underlying input stream. This token position contains the corresponding filename, the line number and the column number, where the token was recognized.

-

Header wave/util/file_position.hpp +

Header wave/util/file_position.hpp synopsis

namespace boost {
 namespace wave {
@@ -113,7 +113,7 @@
   
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/class_reference_inptpolcy.html b/doc/class_reference_inptpolcy.html index 462d6fe..f913811 100644 --- a/doc/class_reference_inptpolcy.html +++ b/doc/class_reference_inptpolcy.html @@ -39,7 +39,7 @@ input sequence. If this template parameter is not given while instantiating the context object, it defaults to the iteration_context_policies::load_file_to_string type.

-

Header wave/iteration_context.hpp +

Header wave/iteration_context.hpp synopsis

The following code listing does not show the required interface only, but for brevity reasons the whole implementation of an input policy, which loads the @@ -126,7 +126,7 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/class_reference_lexer.html b/doc/class_reference_lexer.html index 1c11b5e..c73c311 100644 --- a/doc/class_reference_lexer.html +++ b/doc/class_reference_lexer.html @@ -34,7 +34,7 @@

Introduction

Every lexer, which should be used in conjunction with the Wave library, has to return tokens formed from the input stream. These tokens should conform to the synopsis described in the topic The Token Type. The lexer type should expose an interface which conforms at least to a forward_iterator (in the sense defined by the the C++ Standard) returning the token type. The code sample below does not show the definition of this forward iterator interface because this is highly implementation defined.

Wave lexer - synopsis (header: wave/cpplexer/cpp_lexer_interface.hpp)

+ synopsis (header: wave/cpplexer/cpp_lexer_interface.hpp)

    struct lex_iterator
     {
         typedef boost::wave::lex_token<> token_type;
@@ -53,7 +53,7 @@
     };
 
 
-

Please note, that the lex_iterator defined in the library header wave/cpplexer/cpp_lexer_interface.hpp actually is a template class taking the token type to use as its template parameter. This is omitted in the synopsis above because it is an implementation detail of the Re2C lexer provided as part of the Wave library.

+

Please note, that the lex_iterator defined in the library header wave/cpplexer/cpp_lexer_interface.hpp actually is a template class taking the token type to use as its template parameter. This is omitted in the synopsis above because it is an implementation detail of the Re2C lexer provided as part of the Wave library.

If you want to use Wave in conjunction with your own lexing component this will have to conform to the interface described above only.

Public Typedefs

Besides the typedefs mandated for a forward_iterator by the C++ standard every lexer to be used with the Wave library should define the following typedefs:

@@ -97,7 +97,7 @@
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/class_reference_tokentype.html b/doc/class_reference_tokentype.html index 2239eac..feaf02b 100644 --- a/doc/class_reference_tokentype.html +++ b/doc/class_reference_tokentype.html @@ -50,7 +50,7 @@ library, which is used in conjunction with the two predefined C++ lexers contained in the Wave library too. If you need to use your own token type, it is required to implement the interafce described below.

-

Header wave/cpplexer/cpp_lex_token.hpp +

Header wave/cpplexer/cpp_lex_token.hpp synopsis

namespace boost {
 namespace wave {
@@ -170,7 +170,7 @@
   Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)  

diff --git a/doc/compiletime_config.html b/doc/compiletime_config.html index 0710b16..221d843 100644 --- a/doc/compiletime_config.html +++ b/doc/compiletime_config.html @@ -149,7 +149,7 @@ even if these do not have the 'll' suffix.

Using a different token type or lexer type in conjunction with Wave

It is possible to use the Wave library while using your own token and/or lexer types. This may be achieved by providing your lexer type as the second template parameter while instantiating the boost::wave::context<> object. The token type used by the library is derived from the token_type typedef to be provided by the lexer type. If you want to provide your own token type only, you may use the boost::wave::lex_iterator<> type contained with the library. This type needs to be parametrized with the token type to use.

-

To show, how this may be done, the Wave library contains several samples illustrating this possibility. The cpp_tokens sample shows the usage of a custom lexer and a custom token types. The lexer type used is functionally fully compatible to the re2c [3] based lexer used by default. It is implemented based on the SLex [5] lexer example written by Dan Nuffer. The token type used therein is functionally equivalent to the default token type except for an additional operator<< used for dumping the information carried by the token.

+

The Wave library contains several samples illustrating these possibilities. The cpp_tokens sample shows the usage of a custom lexer and a custom token types. The lexer type used is functionally fully compatible to the re2c [3] based lexer used by default. It is implemented based on the SLex [5] lexer example written by Dan Nuffer. The token type used therein is functionally equivalent to the default token type except for an additional operator<< used for dumping the information carried by the token.

Separation and inclusion compilation models

The Wave C++ preprocessor iterator library is build almost @@ -219,8 +219,8 @@ even if these do not have the 'll' suffix.

template wave::grammars::expression_grammar_gen<TokenT>;
template wave::grammars::intlit_grammar_gen<TokenT>;
template wave::grammars::chlit_grammar_gen<TokenT>;
- template wave::grammars::cpp_grammar_gen<LexIteratorT>;
-
template
wave::grammars::predefined_macros_grammar_gen<LexIteratorT>;
+ template wave::grammars::cpp_grammar_gen<LexIteratorT>;
+ template wave::grammars::predefined_macros_grammar_gen<LexIteratorT>;
template wave::grammars::defined_grammar_gen<LexIteratorT>;

@@ -244,7 +244,7 @@ even if these do not have the 'll' suffix.

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/preface.html b/doc/preface.html index 94e9877..d407d4c 100644 --- a/doc/preface.html +++ b/doc/preface.html @@ -1,28 +1,55 @@ -Preface - - + + + Preface + + + - - - - + + + +

+ + + + + + - + + + + +
+

+
Preface
+
+ - + + + + + - + + + + + +
+

During the last time many new features have been developed as additions to the Spirit [4] parser construction framework and we felt more and more, that it would be very helpful, to have a 'real world' example, @@ -31,6 +58,7 @@ interest of developers to have a modern, open source C++ preprocessor library to play with.  So we had the idea to implement a C++ preprocessor to fit this needs - Wave was born.

+

The Wave C++ preprocessor library uses the Spirit[4] parser construction library to implement a C++ lexer with ISO/ANSI Standards conformant preprocessing @@ -38,22 +66,30 @@ token from the input stream. This preprocessed token is generated on the fly while iterating over the preprocessor iterator sequence (in the terminology of the STL these iterators are forward iterators).

+

The C++ preprocessor is a macro processor that under normal circumstances is used automatically by your C++ compiler to transform your program before actual compilation. It is called a macro processor because it allows to define macros, which are brief abbreviations for longer constructs. The C++ preprocessor provides four separate facilities that you can use as you see fit:

+
-

 Inclusion + +

 Inclusion of header files
-  Macro + +  Macro expansion
-  Conditional + +  Conditional compilation
-  Line + +  Line control

+
+

These features are greatly underestimated today, even more, the preprocessor has been frowned on for so long that its usage just hasn't been effectively pushed until the Boost preprocessor library [7] @@ -61,49 +97,87 @@ generative metaprogramming combined with template metaprogramming in C++ is by far one of the most powerful compile-time reflection/metaprogramming facilities that any language has ever supported.

-

The C++ Standard [2] was adopted back in 1998, but there is still no (known to me) commercial C++ compiler, which has a bugfree implementation of the rather simple preprocessor requirements mandated therein. This may be a result of the mentioned underestimation or even banning of the preprocessor from good programming style during the last few years or may stem from the somewhat awkward standardese dialect of English used to describe it. Two open source projects are exceptions of this: gcc and Clang (a subproject of LLVM), both providing preprocessors with very good standards conformance.

+ +

The C++ Standard [2] +was adopted back in 1998, but there is still no (known to me) +commercial C++ compiler, which has a bugfree implementation of the +rather simple preprocessor requirements mandated therein. This may be a +result of the mentioned underestimation or even banning of the +preprocessor from good programming style during the last few years or +may stem from the somewhat awkward standardese dialect of English used +to describe it. Two open source projects are exceptions of this: gcc +and Clang (a subproject of LLVM), both providing preprocessors with +very good standards conformance.

+

So the main goals for the Wave project are:

+
-

 full + +

 full conformance with the C++ standard (ISO/IEC 14882:1998) [1] and with the C99 standard (INCITS/ISO/IEC 9899:1999) [2]
-  usage of Spirit[4] + +  usage of Spirit[4] for the parsing parts of the game (certainly :-)
-  maximal usage + +  maximal usage of STL and/or Boost libraries (for compactness and maintainability)
-  straightforward + +  straightforward extendability for the implementation of additional features
-  building a + +  building a flexible library for different C++ lexing and preprocessing needs

+
-

At the first steps it is not planned to make a very high performance or very - small C++ preprocessor. If you are looking for these objectives you probably - have to look at other places. Although our C++ preprocessor iterator works as expected and is usable as a reference implementation, for instance - for testing of other preprocessor oriented libraries as the Boost Preprocessor - library [7] et.al. Nevertheless recent work has lead to surprising performance enhancements (if compared + +

At the first steps it is not planned to make a very high performance +or very small C++ preprocessor. If you are looking for these objectives +you probably have to look at other places. Although our C++ +preprocessor iterator works as expected and is usable as a reference +implementation, for instance for testing of other preprocessor oriented +libraries as the Boost Preprocessor library [7] et.al. Nevertheless recent work has lead to surprising performance enhancements (if compared with earlier versions). Wave is still somewhat slower as for instance EDG based preprocessors (Intel, Comeau) on simple input files, however, as complexity increases, time dilates expontentially on EDG. Preprocessing time dilates linearly under Wave, which causes it to easily outperform EDG based preprocessors when complexity increases.

+

As tests showed, the Wave library is very conformant to the C++ Standard, such that it compiles several strict conformant macro definitions, which are not even compilable with EDG based preprocessors (i.e. Comeau or Intel).

+ - + + + + + - + + + + + +
+
+ +Distributed under the Boost Software License, Version +1.0. (See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt)

+ + diff --git a/doc/quickstart.html b/doc/quickstart.html index b2b4215..8e304b7 100644 --- a/doc/quickstart.html +++ b/doc/quickstart.html @@ -71,13 +71,13 @@ The following code snippet is taken from the quick_start sample, which context_type; context_type ctx(input.begin(), input.end(), "input.cpp"); - - // At this point you may want to set the parameters of the + + // At this point you may want to set the parameters of the // preprocessing as include paths and/or predefined macros. ctx.add_include_path("..."); ctx.add_macro_definition(...); - - // Get the preprocessor iterators and use them to generate + + // Get the preprocessor iterators and use them to generate // the token sequence. context_type::iterator_type first = ctx.begin(); context_type::iterator_type last = ctx.end(); @@ -115,7 +115,7 @@ Note though, that this filename is used Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/wave_driver.html b/doc/wave_driver.html index 5b948ef..7374481 100644 --- a/doc/wave_driver.html +++ b/doc/wave_driver.html @@ -248,14 +248,14 @@ is now disabled by default because it may cause a potential security threat. The

There is a shorthand for specifying a configuration file on the command line: simply use the '@' character immediatly before the corresponding file name.

-

The options found in a configuration file are interpreted, as +

The options found in a configuration file are interpreted as if they were place instead of the configuration file option on the command line.

The Wave driver program at startup looks for a configuration file named 'wave.cfg' in every directory up the file system hierarchy starting from the directory where the input file is located. The first file found stops - the search. If a file exists, it is treated as a normal + the search. If a file exists it is treated as a normal configuration file and the specified herein options are interpreted as if they were given as the first options on the command line. This feature is very useful for defining a global environment for the Wave preprocessor driver.

@@ -273,7 +273,7 @@ is now disabled by default because it may cause a potential security threat. The Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/include/boost/wave/cpplexer/cpp_lex_iterator.hpp b/include/boost/wave/cpplexer/cpp_lex_iterator.hpp index 982f6d0..da19435 100644 --- a/include/boost/wave/cpplexer/cpp_lex_iterator.hpp +++ b/include/boost/wave/cpplexer/cpp_lex_iterator.hpp @@ -99,7 +99,7 @@ public: { return mp.shared->ftor->has_include_guards(guard_name); } -#endif +#endif }; /////////////////////////////////////////////////////////////////////////////// @@ -156,7 +156,7 @@ struct make_multi_pass typedef boost::spirit::multi_pass_policies::no_check check_policy; #endif typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy; - + typedef boost::spirit::multi_pass_policies::default_policy< ownership_policy, check_policy, input_policy, storage_policy> policy_type; @@ -169,20 +169,20 @@ class lex_iterator : public make_multi_pass >::type { typedef impl::lex_iterator_functor_shim input_policy_type; - + typedef typename make_multi_pass::type base_type; typedef typename make_multi_pass::functor_data_type functor_data_type; typedef typename input_policy_type::unique unique_functor_type; typedef typename input_policy_type::shared shared_functor_type; - + public: typedef TokenT token_type; - + lex_iterator() {} - + template lex_iterator(IteratorT const &first, IteratorT const &last, typename TokenT::position_type const &pos, @@ -199,7 +199,7 @@ public: void set_position(typename TokenT::position_type const &pos) { typedef typename TokenT::position_type position_type; - + // set the new position in the current token token_type& currtoken = this->base_type::dereference(*this); position_type currpos = currtoken.get_position(); @@ -207,7 +207,7 @@ public: currpos.set_file(pos.get_file()); currpos.set_line(pos.get_line()); currtoken.set_position(currpos); - + // set the new position for future tokens as well if (token_type::string_type::npos != currtoken.get_value().find_first_of('\n')) @@ -216,7 +216,7 @@ public: } unique_functor_type::set_position(*this, currpos); } - + #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 // return, whether the current file has include guards // this function returns meaningful results only if the file was scanned @@ -225,7 +225,7 @@ public: { return unique_functor_type::has_include_guards(*this, guard_name); } -#endif +#endif }; /////////////////////////////////////////////////////////////////////////////// diff --git a/index.html b/index.html index 74ec197..1f87fea 100644 --- a/index.html +++ b/index.html @@ -1,110 +1,106 @@ -Wave V1.2 +Wave V2.0 - - - - - - - + +

Wave - V1.3
+ + + + + + +
 Wave V2.0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Table of Contents
Preface
Introduction
Quick Start
Class - References
The Context - Object
The Input - Policy
The Context - Policy (new, upcoming interface)
The Context - Policy (current, but depreciated interface)
The Lexer Iterator Interface -
The Token - Type
The Token Identifiers
The File - Position
Predefined Macros
The Macro - Expansion Process
Compile Time Configuration
Samples
The Wave Driver Executable
The Wave Driver Command - Line
The Tracing Facility
Supported Pragma - Directives
Acknowledgments
References
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table of Contents
Preface
Introduction
Quick Start
Class References
The Context Object
The Input Policy
The Context Policy
The Lexer Iterator + Interface
The Token Type
The Token Identifiers
The File Position
Predefined Macros
The Macro Expansion + Process
Compile Time Configuration
Samples
The Wave Driver + Executable
The Wave Driver Command Line
The Tracing Facility
Supported Pragma + Directives
Acknowledgments
References


- + Distributed under the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt)

- + diff --git a/samples/cpp_tokens/slex/cpp_slex_lexer.hpp b/samples/cpp_tokens/slex/cpp_slex_lexer.hpp index 2c6b31c..556123d 100644 --- a/samples/cpp_tokens/slex/cpp_slex_lexer.hpp +++ b/samples/cpp_tokens/slex/cpp_slex_lexer.hpp @@ -670,7 +670,7 @@ public: } break; } - + result = token_type(id, token_val, pos); #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 return guards.detect_guard(result); @@ -678,13 +678,13 @@ public: return result; #endif } - + // skip the T_CONTLINE token } while (true); } return result = token_type(); // return T_EOI } - + void set_position(PositionT const &pos) { // set position has to change the file name and line number only diff --git a/samples/cpp_tokens/slex_iterator.hpp b/samples/cpp_tokens/slex_iterator.hpp index 43962a7..65a45de 100644 --- a/samples/cpp_tokens/slex_iterator.hpp +++ b/samples/cpp_tokens/slex_iterator.hpp @@ -64,7 +64,7 @@ public: typedef lex_input_interface* shared; BOOST_WAVE_EOF_PREFIX result_type const eof; - + template static result_type& get_next(MultiPass& mp, result_type& result) { @@ -84,14 +84,14 @@ public: { mp.shared->ftor->set_position(pos); } - + #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 template static bool has_include_guards(MultiPass& mp, std::string& guard_name) { return mp.shared->ftor->has_include_guards(guard_name); } -#endif +#endif private: boost::shared_ptr > functor_ptr; @@ -149,7 +149,7 @@ struct make_multi_pass typedef boost::spirit::multi_pass_policies::no_check check_policy; #endif typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy; - + typedef boost::spirit::multi_pass_policies::default_policy< ownership_policy, check_policy, input_policy, storage_policy> policy_type; @@ -169,13 +169,13 @@ class slex_iterator typedef typename input_policy_type::unique unique_functor_type; typedef typename input_policy_type::shared shared_functor_type; - + public: typedef TokenT token_type; - + slex_iterator() {} - + template slex_iterator(IteratorT const &first, IteratorT const &last, typename TokenT::position_type const &pos, @@ -192,22 +192,22 @@ public: void set_position(typename TokenT::position_type const &pos) { typedef typename token_type::position_type position_type; - + // set the new position in the current token - token_type const& currtoken = base_type::get_input(); + token_type& currtoken = this->base_type::dereference(*this); position_type currpos = currtoken.get_position(); - + currpos.set_file(pos.get_file()); currpos.set_line(pos.get_line()); - base_type::get_input().set_position(currpos); - + currtoken.set_position(currpos); + // set the new position for future tokens as well if (token_type::string_type::npos != currtoken.get_value().find_first_of('\n')) { currpos.set_line(pos.get_line() + 1); } - unique_functor_type::get_functor().set_position(currpos); + unique_functor_type::set_position(*this, currpos); } #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 @@ -216,9 +216,9 @@ public: // completely bool has_include_guards(std::string& guard_name) const { - return unique_functor_type::has_include_guards(guard_name); + return unique_functor_type::has_include_guards(*this, guard_name); } -#endif +#endif }; /////////////////////////////////////////////////////////////////////////////// diff --git a/samples/list_includes/lexertl/lexertl_lexer.hpp b/samples/list_includes/lexertl/lexertl_lexer.hpp index 0685124..c00e47c 100644 --- a/samples/list_includes/lexertl/lexertl_lexer.hpp +++ b/samples/list_includes/lexertl/lexertl_lexer.hpp @@ -602,9 +602,8 @@ public: ~lexertl_functor() {} // get the next token from the input stream - token_type get() + token_type& get(token_type& result) { - token_type token; if (lexer_.is_initialized() && !at_eof) { do { // generate and return the next token @@ -710,18 +709,19 @@ public: } break; } - + + result = token_type(id, token_val, pos); #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 - return guards.detect_guard(token_type(id, token_val, pos)); + return guards.detect_guard(result); #else - return token_type(id, token_val, pos); + return result; #endif } } while (true); // skip the T_CONTLINE token } - return token; // return T_EOI + return result = token_type(); // return T_EOI } - + void set_position(Position const &pos) { // set position has to change the file name and line number only diff --git a/samples/list_includes/lexertl_iterator.hpp b/samples/list_includes/lexertl_iterator.hpp index 0ae07cf..ba9c8c2 100644 --- a/samples/list_includes/lexertl_iterator.hpp +++ b/samples/list_includes/lexertl_iterator.hpp @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include @@ -47,14 +47,11 @@ namespace impl { template class iterator_functor_shim { + typedef typename TokenT::position_type position_type; + public: - template - iterator_functor_shim(IteratorT const &first, IteratorT const &last, - typename TokenT::position_type const &pos, - wave::language_support language) - : functor_ptr(lexertl_input_interface - ::new_lexer(first, last, pos, language)) -#if 0 != __DECCXX_VER || defined(__PGI) + iterator_functor_shim() +#if /*0 != __DECCXX_VER || */defined(__PGI) , eof() #endif // 0 != __DECCXX_VER {} @@ -62,27 +59,38 @@ public: // interface to the boost::spirit::classic::multi_pass_policies::functor_input // policy typedef TokenT result_type; + typedef iterator_functor_shim unique; + typedef lex_input_interface* shared; BOOST_WAVE_EOF_PREFIX result_type const eof; - - result_type operator()() + + template + static result_type& get_next(MultiPass& mp, result_type& result) { - BOOST_ASSERT(0 != functor_ptr.get()); - return functor_ptr->get(); + return mp.shared->ftor->get(result); } - void set_position(typename TokenT::position_type const &pos) + + // this will be called whenever the last reference to a multi_pass will + // be released + template + static void destroy(MultiPass& mp) + { + delete mp.shared->ftor; + } + + template + static void set_position(MultiPass& mp, position_type const &pos) { - BOOST_ASSERT(0 != functor_ptr.get()); - functor_ptr->set_position(pos); + mp.shared->ftor->set_position(pos); } - + #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 - bool has_include_guards(std::string& guard_name) const + template + static bool has_include_guards(MultiPass& mp, std::string& guard_name) { - BOOST_ASSERT(0 != functor_ptr.get()); - return functor_ptr->has_include_guards(guard_name); + return mp.shared->ftor->has_include_guards(guard_name); } -#endif +#endif private: boost::shared_ptr > functor_ptr; @@ -121,31 +129,62 @@ typename iterator_functor_shim::result_type const // /////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +// Divide the given functor type into its components (unique and shared) +// and build a std::pair from these parts +template +struct make_multi_pass +{ + typedef + std::pair + functor_data_type; + typedef typename FunctorData::result_type result_type; + + typedef boost::spirit::multi_pass_policies::split_functor_input input_policy; + typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy; +#if defined(BOOST_WAVE_DEBUG) + typedef boost::spirit::multi_pass_policies::buf_id_check check_policy; +#else + typedef boost::spirit::multi_pass_policies::no_check check_policy; +#endif + typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy; + + typedef boost::spirit::multi_pass_policies::default_policy< + ownership_policy, check_policy, input_policy, storage_policy> + policy_type; + typedef boost::spirit::multi_pass type; +}; + template class lex_iterator -: public boost::spirit::classic::multi_pass< - impl::iterator_functor_shim, - boost::wave::util::functor_input - > +: public make_multi_pass >::type { typedef impl::iterator_functor_shim input_policy_type; - typedef - boost::spirit::classic::multi_pass - base_type; - typedef lex_iterator self_type; - + + typedef typename make_multi_pass::type base_type; + typedef typename make_multi_pass::functor_data_type + functor_data_type; + + typedef typename input_policy_type::unique unique_functor_type; + typedef typename input_policy_type::shared shared_functor_type; + public: typedef TokenT token_type; - + lex_iterator() {} - + template lex_iterator(IteratorT const &first, IteratorT const &last, typename TokenT::position_type const &pos, boost::wave::language_support language) - : base_type(input_policy_type(first, last, pos, language)) + : base_type( + functor_data_type( + unique_functor_type(), + lexertl_input_interface + ::new_lexer(first, last, pos, language) + ) + ) {} void set_position(typename TokenT::position_type const &pos) @@ -153,7 +192,7 @@ public: typedef typename TokenT::position_type position_type; // set the new position in the current token - token_type& currtoken = base_type::get_input(); + token_type& currtoken = this->base_type::dereference(*this); position_type currpos = currtoken.get_position(); currpos.set_file(pos.get_file()); @@ -166,18 +205,18 @@ public: { currpos.set_line(pos.get_line() + 1); } - base_type::get_functor().set_position(currpos); + unique_functor_type::set_position(*this, currpos); } - + #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0 // Return, whether the current file has include guards. This function // returns meaningful results only if the file was scanned completely. // For now we always return false, but this can be fixed easily later on. bool has_include_guards(std::string& guard_name) const { - return base_type::get_functor().has_include_guards(guard_name); + return base_type::get_functor().has_include_guards(*this, guard_name); } -#endif +#endif }; /////////////////////////////////////////////////////////////////////////////// diff --git a/samples/preprocess_pragma_output/example.cpp b/samples/preprocess_pragma_output/example.cpp index a646c8e..fdd5f49 100644 --- a/samples/preprocess_pragma_output/example.cpp +++ b/samples/preprocess_pragma_output/example.cpp @@ -15,7 +15,7 @@ // provided in the preprocess_pragma_output_hooks policy class. This // #pragma preprocesses the provided arguments in the current context. #pragma wave pp ( \ - "#define A() \"some text\" and more\n" \ + "#define A() \"some text\" and more\n" \ "#define B() 1.0\n" \ ) \ /**/ diff --git a/samples/quick_start/quick_start.cpp b/samples/quick_start/quick_start.cpp index f2dbea6..f8d2d5e 100644 --- a/samples/quick_start/quick_start.cpp +++ b/samples/quick_start/quick_start.cpp @@ -65,13 +65,13 @@ boost::wave::util::file_position_type current_position; typedef boost::wave::context context_type; - // The preprocessor iterator shouldn't be constructed directly. It is - // to be generated through a wave::context<> object. This wave:context<> - // object is to be used additionally to initialize and define different - // parameters of the actual preprocessing (not done here). + // The preprocessor iterator shouldn't be constructed directly. It is + // to be generated through a wave::context<> object. This wave:context<> + // object is to be used additionally to initialize and define different + // parameters of the actual preprocessing (not done here). // - // The preprocessing of the input stream is done on the fly behind the - // scenes during iteration over the context_type::iterator_type stream. + // The preprocessing of the input stream is done on the fly behind the + // scenes during iteration over the context_type::iterator_type stream. context_type ctx (instring.begin(), instring.end(), argv[1]); // Get the preprocessor iterators and use them to generate diff --git a/samples/waveidl/idllexer/idl_re.cpp b/samples/waveidl/idllexer/idl_re.cpp index 4b9400f..b758b85 100644 --- a/samples/waveidl/idllexer/idl_re.cpp +++ b/samples/waveidl/idllexer/idl_re.cpp @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.1 on Wed Nov 21 11:51:27 2007 */ +/* Generated by re2c 0.13.2 on Thu Oct 09 21:18:08 2008 */ #line 1 "idl.re" /*============================================================================= Boost.Wave: A Standard compliant C++ preprocessor library @@ -435,9 +435,9 @@ scan(boost::wave::cpplexer::re2clex::Scanner *s) 68, 68, 68, 68, 68, 68, 68, 68, }; - if((YYLIMIT - YYCURSOR) < 12) YYFILL(12); + if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: goto yy69; case 0x09: case 0x0B: @@ -540,15 +540,15 @@ scan(boost::wave::cpplexer::re2clex::Scanner *s) } yy2: ++YYCURSOR; - if((yych = *YYCURSOR) == '*') goto yy356; - if(yych == '/') goto yy354; + if ((yych = *YYCURSOR) == '*') goto yy356; + if (yych == '/') goto yy354; #line 402 "idl.re" { BOOST_WAVE_RET(T_DIVIDE); } #line 548 "idl_re.cpp" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy350; + if (yych == 'R') goto yy350; goto yy202; yy5: #line 425 "idl.re" @@ -557,7 +557,7 @@ yy5: yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'A') goto yy345; + if (yych == 'A') goto yy345; goto yy202; yy7: ++YYCURSOR; @@ -582,34 +582,34 @@ yy13: yy15: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'e') { - if(yych <= '"') { - if(yych <= 0x09) { - if(yych >= 0x09) goto yy239; + if (yych <= 'e') { + if (yych <= '"') { + if (yych <= 0x09) { + if (yych >= 0x09) goto yy239; } else { - if(yych == ' ') goto yy239; + if (yych == ' ') goto yy239; } } else { - if(yych <= '.') { - if(yych <= '#') goto yy343; + if (yych <= '.') { + if (yych <= '#') goto yy343; } else { - if(yych <= '/') goto yy239; - if(yych >= 'd') goto yy239; + if (yych <= '/') goto yy239; + if (yych >= 'd') goto yy239; } } } else { - if(yych <= 'o') { - if(yych <= 'i') { - if(yych >= 'i') goto yy239; + if (yych <= 'o') { + if (yych <= 'i') { + if (yych >= 'i') goto yy239; } else { - if(yych == 'l') goto yy239; + if (yych == 'l') goto yy239; } } else { - if(yych <= 'u') { - if(yych <= 'p') goto yy239; - if(yych >= 'u') goto yy239; + if (yych <= 'u') { + if (yych <= 'p') goto yy239; + if (yych >= 'u') goto yy239; } else { - if(yych == 'w') goto yy239; + if (yych == 'w') goto yy239; } } } @@ -640,28 +640,28 @@ yy23: yy25: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if(yych == '?') goto yy341; + if (yych == '?') goto yy341; yy26: #line 397 "idl.re" { BOOST_WAVE_RET(T_QUESTION_MARK); } #line 648 "idl_re.cpp" yy27: ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy28; - if(yych <= '9') goto yy168; + if ((yych = *YYCURSOR) <= '/') goto yy28; + if (yych <= '9') goto yy168; yy28: #line 398 "idl.re" { BOOST_WAVE_RET(T_DOT); } #line 656 "idl_re.cpp" yy29: ++YYCURSOR; - if((yych = *YYCURSOR) == '+') goto yy339; + if ((yych = *YYCURSOR) == '+') goto yy339; #line 399 "idl.re" { BOOST_WAVE_RET(T_PLUS); } #line 662 "idl_re.cpp" yy31: ++YYCURSOR; - if((yych = *YYCURSOR) == '-') goto yy337; + if ((yych = *YYCURSOR) == '-') goto yy337; #line 400 "idl.re" { BOOST_WAVE_RET(T_MINUS); } #line 668 "idl_re.cpp" @@ -673,7 +673,7 @@ yy33: yy35: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy238; + if (yych == ':') goto yy238; yy36: #line 403 "idl.re" { BOOST_WAVE_RET(T_PERCENT); } @@ -685,13 +685,13 @@ yy37: #line 686 "idl_re.cpp" yy39: ++YYCURSOR; - if((yych = *YYCURSOR) == '&') goto yy236; + if ((yych = *YYCURSOR) == '&') goto yy236; #line 405 "idl.re" { BOOST_WAVE_RET(T_AND); } #line 692 "idl_re.cpp" yy41: ++YYCURSOR; - if((yych = *YYCURSOR) == '|') goto yy234; + if ((yych = *YYCURSOR) == '|') goto yy234; #line 406 "idl.re" { BOOST_WAVE_RET(T_OR); } #line 698 "idl_re.cpp" @@ -702,30 +702,30 @@ yy43: #line 703 "idl_re.cpp" yy45: ++YYCURSOR; - if((yych = *YYCURSOR) == '=') goto yy232; + if ((yych = *YYCURSOR) == '=') goto yy232; #line 408 "idl.re" { BOOST_WAVE_RET(T_NOT); } #line 709 "idl_re.cpp" yy47: ++YYCURSOR; - if((yych = *YYCURSOR) == '=') goto yy230; + if ((yych = *YYCURSOR) == '=') goto yy230; #line 409 "idl.re" { BOOST_WAVE_RET(T_ASSIGN); } #line 715 "idl_re.cpp" yy49: ++YYCURSOR; - if((yych = *YYCURSOR) <= ';') goto yy50; - if(yych <= '<') goto yy228; - if(yych <= '=') goto yy226; + if ((yych = *YYCURSOR) <= ';') goto yy50; + if (yych <= '<') goto yy228; + if (yych <= '=') goto yy226; yy50: #line 410 "idl.re" { BOOST_WAVE_RET(T_LESS); } #line 724 "idl_re.cpp" yy51: ++YYCURSOR; - if((yych = *YYCURSOR) <= '<') goto yy52; - if(yych <= '=') goto yy222; - if(yych <= '>') goto yy224; + if ((yych = *YYCURSOR) <= '<') goto yy52; + if (yych <= '=') goto yy222; + if (yych <= '>') goto yy224; yy52: #line 411 "idl.re" { BOOST_WAVE_RET(T_GREATER); } @@ -742,27 +742,27 @@ yy55: yy56: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 2) { + if (yybm[0+yych] & 2) { goto yy201; } - if(yych <= '\'') { - if(yych == '"') goto yy75; - if(yych <= '&') goto yy5; + if (yych <= '\'') { + if (yych == '"') goto yy75; + if (yych <= '&') goto yy5; goto yy221; } else { - if(yych <= '?') { - if(yych <= '>') goto yy5; + if (yych <= '?') { + if (yych <= '>') goto yy5; goto yy204; } else { - if(yych == '\\') goto yy203; + if (yych == '\\') goto yy203; goto yy5; } } yy57: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy193; - if(yych == 'u') goto yy192; + if (yych == 'U') goto yy193; + if (yych == 'u') goto yy192; yy58: #line 492 "idl.re" { @@ -772,40 +772,40 @@ yy58: yy59: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 1) { + if (yybm[0+yych] & 1) { goto yy185; } - if(yych <= 'U') { - if(yych <= 'C') { - if(yych <= '.') { - if(yych >= '.') goto yy168; + if (yych <= 'U') { + if (yych <= 'C') { + if (yych <= '.') { + if (yych >= '.') goto yy168; } else { - if(yych <= '/') goto yy60; - if(yych <= '9') goto yy187; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy187; } } else { - if(yych <= 'K') { - if(yych <= 'D') goto yy164; - if(yych <= 'E') goto yy171; + if (yych <= 'K') { + if (yych <= 'D') goto yy164; + if (yych <= 'E') goto yy171; } else { - if(yych <= 'L') goto yy173; - if(yych >= 'U') goto yy172; + if (yych <= 'L') goto yy173; + if (yych >= 'U') goto yy172; } } } else { - if(yych <= 'k') { - if(yych <= 'c') { - if(yych == 'X') goto yy189; + if (yych <= 'k') { + if (yych <= 'c') { + if (yych == 'X') goto yy189; } else { - if(yych <= 'd') goto yy164; - if(yych <= 'e') goto yy171; + if (yych <= 'd') goto yy164; + if (yych <= 'e') goto yy171; } } else { - if(yych <= 'u') { - if(yych <= 'l') goto yy173; - if(yych >= 'u') goto yy172; + if (yych <= 'u') { + if (yych <= 'l') goto yy173; + if (yych >= 'u') goto yy172; } else { - if(yych == 'x') goto yy189; + if (yych == 'x') goto yy189; } } } @@ -816,31 +816,31 @@ yy60: yy61: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if(yybm[256+yych] & 128) { + if (yybm[256+yych] & 128) { goto yy166; } - if(yych <= 'T') { - if(yych <= 'D') { - if(yych == '.') goto yy168; - if(yych <= 'C') goto yy60; + if (yych <= 'T') { + if (yych <= 'D') { + if (yych == '.') goto yy168; + if (yych <= 'C') goto yy60; goto yy164; } else { - if(yych <= 'E') goto yy171; - if(yych == 'L') goto yy173; + if (yych <= 'E') goto yy171; + if (yych == 'L') goto yy173; goto yy60; } } else { - if(yych <= 'e') { - if(yych <= 'U') goto yy172; - if(yych <= 'c') goto yy60; - if(yych <= 'd') goto yy164; + if (yych <= 'e') { + if (yych <= 'U') goto yy172; + if (yych <= 'c') goto yy60; + if (yych <= 'd') goto yy164; goto yy171; } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy60; + if (yych <= 'l') { + if (yych <= 'k') goto yy60; goto yy173; } else { - if(yych == 'u') goto yy172; + if (yych == 'u') goto yy172; goto yy60; } } @@ -848,24 +848,24 @@ yy61: yy62: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 0x0C) { - if(yych == 0x09) goto yy121; - if(yych <= 0x0A) goto yy58; + if (yych <= 0x0C) { + if (yych == 0x09) goto yy121; + if (yych <= 0x0A) goto yy58; goto yy121; } else { - if(yych <= 0x1F) goto yy58; - if(yych == '\'') goto yy58; + if (yych <= 0x1F) goto yy58; + if (yych == '\'') goto yy58; goto yy121; } yy63: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 0x0A) { - if(yych == 0x09) goto yy76; + if (yych <= 0x0A) { + if (yych == 0x09) goto yy76; goto yy58; } else { - if(yych <= 0x0C) goto yy76; - if(yych <= 0x1F) goto yy58; + if (yych <= 0x0C) goto yy76; + if (yych <= 0x1F) goto yy58; goto yy76; } yy64: @@ -887,7 +887,7 @@ yy67: #line 888 "idl_re.cpp" yy68: yych = *++YYCURSOR; - if(yych == 0x0A) goto yy72; + if (yych == 0x0A) goto yy72; goto yy67; yy69: ++YYCURSOR; @@ -915,45 +915,45 @@ yy72: goto yy67; yy73: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy74: - if(yybm[256+yych] & 2) { + if (yybm[256+yych] & 2) { goto yy73; } goto yy65; yy75: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy76: - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy78; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy78; goto yy79; yy77: YYCURSOR = YYMARKER; - if(yyaccept <= 6) { - if(yyaccept <= 3) { - if(yyaccept <= 1) { - if(yyaccept <= 0) { + if (yyaccept <= 6) { + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept <= 0) { goto yy5; } else { goto yy16; } } else { - if(yyaccept <= 2) { + if (yyaccept <= 2) { goto yy26; } else { goto yy36; } } } else { - if(yyaccept <= 5) { - if(yyaccept <= 4) { + if (yyaccept <= 5) { + if (yyaccept <= 4) { goto yy58; } else { goto yy60; @@ -963,9 +963,9 @@ yy77: } } } else { - if(yyaccept <= 9) { - if(yyaccept <= 8) { - if(yyaccept <= 7) { + if (yyaccept <= 9) { + if (yyaccept <= 8) { + if (yyaccept <= 7) { goto yy131; } else { goto yy170; @@ -974,8 +974,8 @@ yy77: goto yy294; } } else { - if(yyaccept <= 11) { - if(yyaccept <= 10) { + if (yyaccept <= 11) { + if (yyaccept <= 10) { goto yy302; } else { goto yy349; @@ -987,57 +987,57 @@ yy77: } yy78: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy91; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy91; yy79: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '`') { - if(yych <= '7') { - if(yych <= '&') { - if(yych == '"') goto yy75; + if (yych <= '`') { + if (yych <= '7') { + if (yych <= '&') { + if (yych == '"') goto yy75; goto yy77; } else { - if(yych <= '\'') goto yy75; - if(yych <= '/') goto yy77; + if (yych <= '\'') goto yy75; + if (yych <= '/') goto yy77; goto yy86; } } else { - if(yych <= 'T') { - if(yych == '?') goto yy84; + if (yych <= 'T') { + if (yych == '?') goto yy84; goto yy77; } else { - if(yych <= 'U') goto yy83; - if(yych == '\\') goto yy75; + if (yych <= 'U') goto yy83; + if (yych == '\\') goto yy75; goto yy77; } } } else { - if(yych <= 'r') { - if(yych <= 'f') { - if(yych <= 'b') goto yy75; - if(yych <= 'e') goto yy77; + if (yych <= 'r') { + if (yych <= 'f') { + if (yych <= 'b') goto yy75; + if (yych <= 'e') goto yy77; goto yy75; } else { - if(yych == 'n') goto yy75; - if(yych <= 'q') goto yy77; + if (yych == 'n') goto yy75; + if (yych <= 'q') goto yy77; goto yy75; } } else { - if(yych <= 'u') { - if(yych <= 's') goto yy77; - if(yych <= 't') goto yy75; + if (yych <= 'u') { + if (yych <= 's') goto yy77; + if (yych <= 't') goto yy75; goto yy82; } else { - if(yych <= 'v') goto yy75; - if(yych == 'x') goto yy85; + if (yych <= 'v') goto yy75; + if (yych == 'x') goto yy85; goto yy77; } } @@ -1050,247 +1050,247 @@ yy81: #line 1051 "idl_re.cpp" yy82: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy117; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy117; goto yy77; } else { - if(yych <= 'F') goto yy117; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy117; + if (yych <= 'F') goto yy117; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy117; goto yy77; } yy83: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy110; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy110; goto yy77; } else { - if(yych <= 'F') goto yy110; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy110; + if (yych <= 'F') goto yy110; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy110; goto yy77; } yy84: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy90; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy90; goto yy79; yy85: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 8) { + if (yybm[256+yych] & 8) { goto yy88; } goto yy77; yy86: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '"') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy75; + if (yych <= '"') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy75; goto yy77; } else { - if(yych <= 0x0C) goto yy75; - if(yych <= 0x1F) goto yy77; - if(yych <= '!') goto yy75; + if (yych <= 0x0C) goto yy75; + if (yych <= 0x1F) goto yy77; + if (yych <= '!') goto yy75; goto yy80; } } else { - if(yych <= '>') { - if(yych <= '/') goto yy75; - if(yych >= '8') goto yy75; + if (yych <= '>') { + if (yych <= '/') goto yy75; + if (yych >= '8') goto yy75; } else { - if(yych <= '?') goto yy78; - if(yych == '\\') goto yy79; + if (yych <= '?') goto yy78; + if (yych == '\\') goto yy79; goto yy75; } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy78; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy78; goto yy79; yy88: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 8) { + if (yybm[256+yych] & 8) { goto yy88; } - if(yych <= '!') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy75; + if (yych <= '!') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy75; goto yy77; } else { - if(yych <= 0x0C) goto yy75; - if(yych <= 0x1F) goto yy77; + if (yych <= 0x0C) goto yy75; + if (yych <= 0x1F) goto yy77; goto yy75; } } else { - if(yych <= '?') { - if(yych <= '"') goto yy80; - if(yych <= '>') goto yy75; + if (yych <= '?') { + if (yych <= '"') goto yy80; + if (yych <= '>') goto yy75; goto yy78; } else { - if(yych == '\\') goto yy79; + if (yych == '\\') goto yy79; goto yy75; } } yy90: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych >= '\\') goto yy79; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych >= '\\') goto yy79; yy91: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 16) { + if (yybm[256+yych] & 16) { goto yy91; } - if(yych <= '!') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy75; + if (yych <= '!') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy75; goto yy77; } else { - if(yych <= 0x0C) goto yy75; - if(yych <= 0x1F) goto yy77; + if (yych <= 0x0C) goto yy75; + if (yych <= 0x1F) goto yy77; goto yy75; } } else { - if(yych <= '/') { - if(yych <= '"') goto yy80; - if(yych <= '.') goto yy75; + if (yych <= '/') { + if (yych <= '"') goto yy80; + if (yych <= '.') goto yy75; } else { - if(yych == '\\') goto yy79; + if (yych == '\\') goto yy79; goto yy75; } } yy93: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 32) { + if (yybm[256+yych] & 32) { goto yy93; } - if(yych <= '7') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '7') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy97; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy97; + if (yych <= '/') goto yy75; goto yy86; } } } else { - if(yych <= 'U') { - if(yych == '?') goto yy98; - if(yych <= 'T') goto yy75; + if (yych <= 'U') { + if (yych == '?') goto yy98; + if (yych <= 'T') goto yy75; goto yy96; } else { - if(yych <= 'u') { - if(yych <= 't') goto yy75; + if (yych <= 'u') { + if (yych <= 't') goto yy75; } else { - if(yych == 'x') goto yy88; + if (yych == 'x') goto yy88; goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; goto yy107; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; goto yy107; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych <= 'f') goto yy107; + if (yych <= '`') goto yy75; + if (yych <= 'f') goto yy107; goto yy75; } } } yy96: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; goto yy100; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; goto yy100; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych <= 'f') goto yy100; + if (yych <= '`') goto yy75; + if (yych <= 'f') goto yy100; goto yy75; } } @@ -1298,596 +1298,596 @@ yy96: yy97: yyaccept = 6; YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy81; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy78; + if (yych <= '!') goto yy81; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy78; goto yy79; yy98: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych >= '\\') goto yy79; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych >= '\\') goto yy79; ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 16) { + if (yybm[256+yych] & 16) { goto yy91; } - if(yych <= '!') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy75; + if (yych <= '!') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy75; goto yy77; } else { - if(yych <= 0x0C) goto yy75; - if(yych <= 0x1F) goto yy77; + if (yych <= 0x0C) goto yy75; + if (yych <= 0x1F) goto yy77; goto yy75; } } else { - if(yych <= '/') { - if(yych <= '"') goto yy80; - if(yych <= '.') goto yy75; + if (yych <= '/') { + if (yych <= '"') goto yy80; + if (yych <= '.') goto yy75; goto yy93; } else { - if(yych == '\\') goto yy79; + if (yych == '\\') goto yy79; goto yy75; } } yy100: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy78; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy78; goto yy79; yy107: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy75; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy75; + if (yych <= 0x0A) goto yy77; goto yy75; } else { - if(yych <= '!') { - if(yych <= 0x1F) goto yy77; + if (yych <= '!') { + if (yych <= 0x1F) goto yy77; goto yy75; } else { - if(yych <= '"') goto yy80; - if(yych <= '/') goto yy75; + if (yych <= '"') goto yy80; + if (yych <= '/') goto yy75; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy78; - if(yych <= '@') goto yy75; + if (yych <= 'F') { + if (yych == '?') goto yy78; + if (yych <= '@') goto yy75; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy75; + if (yych <= '\\') { + if (yych <= '[') goto yy75; goto yy79; } else { - if(yych <= '`') goto yy75; - if(yych >= 'g') goto yy75; + if (yych <= '`') goto yy75; + if (yych >= 'g') goto yy75; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 4) { + if (yybm[256+yych] & 4) { goto yy75; } - if(yych <= '!') goto yy77; - if(yych <= '"') goto yy80; - if(yych <= '[') goto yy78; + if (yych <= '!') goto yy77; + if (yych <= '"') goto yy80; + if (yych <= '[') goto yy78; goto yy79; yy110: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy111; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy111; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy111: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy112; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy112; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy112: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy113; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy113; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy113: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy114; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy114; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy114: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy115; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy115; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy115: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy116; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy116; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy116: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy75; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy75; goto yy77; } else { - if(yych <= 'F') goto yy75; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy75; + if (yych <= 'F') goto yy75; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy75; goto yy77; } yy117: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy118; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy118; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy118: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy119; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy119; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy119: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy75; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy75; goto yy77; } else { - if(yych <= 'F') goto yy75; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy75; + if (yych <= 'F') goto yy75; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy75; goto yy77; } yy120: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy121: - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych >= '\\') goto yy123; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych >= '\\') goto yy123; yy122: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy135; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy135; yy123: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '`') { - if(yych <= '7') { - if(yych <= '&') { - if(yych == '"') goto yy120; + if (yych <= '`') { + if (yych <= '7') { + if (yych <= '&') { + if (yych == '"') goto yy120; goto yy77; } else { - if(yych <= '\'') goto yy120; - if(yych <= '/') goto yy77; + if (yych <= '\'') goto yy120; + if (yych <= '/') goto yy77; goto yy128; } } else { - if(yych <= 'T') { - if(yych == '?') goto yy126; + if (yych <= 'T') { + if (yych == '?') goto yy126; goto yy77; } else { - if(yych <= 'U') goto yy125; - if(yych == '\\') goto yy120; + if (yych <= 'U') goto yy125; + if (yych == '\\') goto yy120; goto yy77; } } } else { - if(yych <= 'r') { - if(yych <= 'f') { - if(yych <= 'b') goto yy120; - if(yych <= 'e') goto yy77; + if (yych <= 'r') { + if (yych <= 'f') { + if (yych <= 'b') goto yy120; + if (yych <= 'e') goto yy77; goto yy120; } else { - if(yych == 'n') goto yy120; - if(yych <= 'q') goto yy77; + if (yych == 'n') goto yy120; + if (yych <= 'q') goto yy77; goto yy120; } } else { - if(yych <= 'u') { - if(yych <= 's') goto yy77; - if(yych <= 't') goto yy120; + if (yych <= 'u') { + if (yych <= 's') goto yy77; + if (yych <= 't') goto yy120; } else { - if(yych <= 'v') goto yy120; - if(yych == 'x') goto yy127; + if (yych <= 'v') goto yy120; + if (yych == 'x') goto yy127; goto yy77; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy161; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy161; goto yy77; } else { - if(yych <= 'F') goto yy161; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy161; + if (yych <= 'F') goto yy161; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy161; goto yy77; } yy125: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy154; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy154; goto yy77; } else { - if(yych <= 'F') goto yy154; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy154; + if (yych <= 'F') goto yy154; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy154; goto yy77; } yy126: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy134; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy134; goto yy123; yy127: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy132; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy132; goto yy77; } else { - if(yych <= 'F') goto yy132; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy132; + if (yych <= 'F') goto yy132; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy132; goto yy77; } yy128: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '\'') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy120; + if (yych <= '\'') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy120; goto yy77; } else { - if(yych <= 0x0C) goto yy120; - if(yych <= 0x1F) goto yy77; - if(yych <= '&') goto yy120; + if (yych <= 0x0C) goto yy120; + if (yych <= 0x1F) goto yy77; + if (yych <= '&') goto yy120; goto yy130; } } else { - if(yych <= '>') { - if(yych <= '/') goto yy120; - if(yych >= '8') goto yy120; + if (yych <= '>') { + if (yych <= '/') goto yy120; + if (yych >= '8') goto yy120; } else { - if(yych <= '?') goto yy122; - if(yych == '\\') goto yy123; + if (yych <= '?') goto yy122; + if (yych == '\\') goto yy123; goto yy120; } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy122; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy122; goto yy123; yy130: ++YYCURSOR; @@ -1897,180 +1897,180 @@ yy131: #line 1898 "idl_re.cpp" yy132: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; goto yy132; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; goto yy132; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych <= 'f') goto yy132; + if (yych <= '`') goto yy120; + if (yych <= 'f') goto yy132; goto yy120; } } } yy134: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych >= '\\') goto yy123; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych >= '\\') goto yy123; yy135: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '\'') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy120; + if (yych <= '\'') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy120; goto yy77; } else { - if(yych <= 0x0C) goto yy120; - if(yych <= 0x1F) goto yy77; - if(yych <= '&') goto yy120; + if (yych <= 0x0C) goto yy120; + if (yych <= 0x1F) goto yy77; + if (yych <= '&') goto yy120; goto yy130; } } else { - if(yych <= '>') { - if(yych != '/') goto yy120; + if (yych <= '>') { + if (yych != '/') goto yy120; } else { - if(yych <= '?') goto yy135; - if(yych == '\\') goto yy123; + if (yych <= '?') goto yy135; + if (yych == '\\') goto yy123; goto yy120; } } yy137: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '>') { - if(yych <= 0x1F) { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy77; + if (yych <= '>') { + if (yych <= 0x1F) { + if (yych <= 0x09) { + if (yych <= 0x08) goto yy77; goto yy120; } else { - if(yych <= 0x0A) goto yy77; - if(yych <= 0x0C) goto yy120; + if (yych <= 0x0A) goto yy77; + if (yych <= 0x0C) goto yy120; goto yy77; } } else { - if(yych <= '\'') { - if(yych <= '&') goto yy120; + if (yych <= '\'') { + if (yych <= '&') goto yy120; goto yy141; } else { - if(yych <= '/') goto yy120; - if(yych <= '7') goto yy128; + if (yych <= '/') goto yy120; + if (yych <= '7') goto yy128; goto yy120; } } } else { - if(yych <= '\\') { - if(yych <= 'T') { - if(yych <= '?') goto yy142; + if (yych <= '\\') { + if (yych <= 'T') { + if (yych <= '?') goto yy142; goto yy120; } else { - if(yych <= 'U') goto yy140; - if(yych <= '[') goto yy120; + if (yych <= 'U') goto yy140; + if (yych <= '[') goto yy120; goto yy137; } } else { - if(yych <= 'u') { - if(yych <= 't') goto yy120; + if (yych <= 'u') { + if (yych <= 't') goto yy120; } else { - if(yych == 'x') goto yy132; + if (yych == 'x') goto yy132; goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; goto yy151; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; goto yy151; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych <= 'f') goto yy151; + if (yych <= '`') goto yy120; + if (yych <= 'f') goto yy151; goto yy120; } } } yy140: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; goto yy144; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; goto yy144; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych <= 'f') goto yy144; + if (yych <= '`') goto yy120; + if (yych <= 'f') goto yy144; goto yy120; } } @@ -2078,440 +2078,440 @@ yy140: yy141: yyaccept = 7; YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy131; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy122; + if (yych <= '&') goto yy131; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy122; goto yy123; yy142: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych >= '\\') goto yy123; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych >= '\\') goto yy123; ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '\'') { - if(yych <= 0x0A) { - if(yych == 0x09) goto yy120; + if (yych <= '\'') { + if (yych <= 0x0A) { + if (yych == 0x09) goto yy120; goto yy77; } else { - if(yych <= 0x0C) goto yy120; - if(yych <= 0x1F) goto yy77; - if(yych <= '&') goto yy120; + if (yych <= 0x0C) goto yy120; + if (yych <= 0x1F) goto yy77; + if (yych <= '&') goto yy120; goto yy130; } } else { - if(yych <= '>') { - if(yych == '/') goto yy137; + if (yych <= '>') { + if (yych == '/') goto yy137; goto yy120; } else { - if(yych <= '?') goto yy135; - if(yych == '\\') goto yy123; + if (yych <= '?') goto yy135; + if (yych == '\\') goto yy123; goto yy120; } } yy144: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy122; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy122; goto yy123; yy151: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '9') { - if(yych <= 0x0C) { - if(yych == 0x09) goto yy120; - if(yych <= 0x0A) goto yy77; + if (yych <= '9') { + if (yych <= 0x0C) { + if (yych == 0x09) goto yy120; + if (yych <= 0x0A) goto yy77; goto yy120; } else { - if(yych <= '&') { - if(yych <= 0x1F) goto yy77; + if (yych <= '&') { + if (yych <= 0x1F) goto yy77; goto yy120; } else { - if(yych <= '\'') goto yy130; - if(yych <= '/') goto yy120; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy120; } } } else { - if(yych <= 'F') { - if(yych == '?') goto yy122; - if(yych <= '@') goto yy120; + if (yych <= 'F') { + if (yych == '?') goto yy122; + if (yych <= '@') goto yy120; } else { - if(yych <= '\\') { - if(yych <= '[') goto yy120; + if (yych <= '\\') { + if (yych <= '[') goto yy120; goto yy123; } else { - if(yych <= '`') goto yy120; - if(yych >= 'g') goto yy120; + if (yych <= '`') goto yy120; + if (yych >= 'g') goto yy120; } } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[256+yych] & 64) { + if (yybm[256+yych] & 64) { goto yy120; } - if(yych <= '&') goto yy77; - if(yych <= '\'') goto yy130; - if(yych <= '[') goto yy122; + if (yych <= '&') goto yy77; + if (yych <= '\'') goto yy130; + if (yych <= '[') goto yy122; goto yy123; yy154: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy155; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy155; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy155: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy156; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy156; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy156: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy157; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy157; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy157: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy158; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy158; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy158: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy159; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy159; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy159: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy160; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy160; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy160: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy120; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy120; goto yy77; } else { - if(yych <= 'F') goto yy120; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy120; + if (yych <= 'F') goto yy120; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy120; goto yy77; } yy161: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy162; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy162; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy162: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy163; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy163; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy163: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy120; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy120; goto yy77; } else { - if(yych <= 'F') goto yy120; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy120; + if (yych <= 'F') goto yy120; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy120; goto yy77; } yy164: @@ -2522,33 +2522,33 @@ yy164: yy166: yyaccept = 5; YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yybm[256+yych] & 128) { + if (yybm[256+yych] & 128) { goto yy166; } - if(yych <= 'T') { - if(yych <= 'D') { - if(yych == '.') goto yy168; - if(yych <= 'C') goto yy60; + if (yych <= 'T') { + if (yych <= 'D') { + if (yych == '.') goto yy168; + if (yych <= 'C') goto yy60; goto yy164; } else { - if(yych <= 'E') goto yy171; - if(yych == 'L') goto yy173; + if (yych <= 'E') goto yy171; + if (yych == 'L') goto yy173; goto yy60; } } else { - if(yych <= 'e') { - if(yych <= 'U') goto yy172; - if(yych <= 'c') goto yy60; - if(yych <= 'd') goto yy164; + if (yych <= 'e') { + if (yych <= 'U') goto yy172; + if (yych <= 'c') goto yy60; + if (yych <= 'd') goto yy164; goto yy171; } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy60; + if (yych <= 'l') { + if (yych <= 'k') goto yy60; goto yy173; } else { - if(yych == 'u') goto yy172; + if (yych == 'u') goto yy172; goto yy60; } } @@ -2556,26 +2556,26 @@ yy166: yy168: yyaccept = 8; YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yych <= 'K') { - if(yych <= 'C') { - if(yych <= '/') goto yy170; - if(yych <= '9') goto yy168; + if (yych <= 'K') { + if (yych <= 'C') { + if (yych <= '/') goto yy170; + if (yych <= '9') goto yy168; } else { - if(yych <= 'D') goto yy164; - if(yych <= 'E') goto yy181; - if(yych <= 'F') goto yy178; + if (yych <= 'D') goto yy164; + if (yych <= 'E') goto yy181; + if (yych <= 'F') goto yy178; } } else { - if(yych <= 'e') { - if(yych <= 'L') goto yy179; - if(yych <= 'c') goto yy170; - if(yych <= 'd') goto yy164; + if (yych <= 'e') { + if (yych <= 'L') goto yy179; + if (yych <= 'c') goto yy170; + if (yych <= 'd') goto yy164; goto yy181; } else { - if(yych <= 'f') goto yy178; - if(yych == 'l') goto yy179; + if (yych <= 'f') goto yy178; + if (yych == 'l') goto yy179; } } yy170: @@ -2584,506 +2584,506 @@ yy170: #line 2585 "idl_re.cpp" yy171: yych = *++YYCURSOR; - if(yych <= ',') { - if(yych == '+') goto yy175; + if (yych <= ',') { + if (yych == '+') goto yy175; goto yy77; } else { - if(yych <= '-') goto yy175; - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy176; + if (yych <= '-') goto yy175; + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy176; goto yy77; } yy172: yych = *++YYCURSOR; - if(yych == 'L') goto yy174; - if(yych == 'l') goto yy174; + if (yych == 'L') goto yy174; + if (yych == 'l') goto yy174; goto yy60; yy173: yych = *++YYCURSOR; - if(yych == 'U') goto yy174; - if(yych != 'u') goto yy60; + if (yych == 'U') goto yy174; + if (yych != 'u') goto yy60; yy174: yych = *++YYCURSOR; goto yy60; yy175: yych = *++YYCURSOR; - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; yy176: ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= 'K') { - if(yych <= '9') { - if(yych <= '/') goto yy170; + if (yych <= 'K') { + if (yych <= '9') { + if (yych <= '/') goto yy170; goto yy176; } else { - if(yych != 'F') goto yy170; + if (yych != 'F') goto yy170; } } else { - if(yych <= 'f') { - if(yych <= 'L') goto yy179; - if(yych <= 'e') goto yy170; + if (yych <= 'f') { + if (yych <= 'L') goto yy179; + if (yych <= 'e') goto yy170; } else { - if(yych == 'l') goto yy179; + if (yych == 'l') goto yy179; goto yy170; } } yy178: yych = *++YYCURSOR; - if(yych == 'L') goto yy180; - if(yych == 'l') goto yy180; + if (yych == 'L') goto yy180; + if (yych == 'l') goto yy180; goto yy170; yy179: yych = *++YYCURSOR; - if(yych == 'F') goto yy180; - if(yych != 'f') goto yy170; + if (yych == 'F') goto yy180; + if (yych != 'f') goto yy170; yy180: yych = *++YYCURSOR; goto yy170; yy181: yych = *++YYCURSOR; - if(yych <= ',') { - if(yych != '+') goto yy77; + if (yych <= ',') { + if (yych != '+') goto yy77; } else { - if(yych <= '-') goto yy182; - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy183; + if (yych <= '-') goto yy182; + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy183; goto yy77; } yy182: yych = *++YYCURSOR; - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; yy183: ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= 'K') { - if(yych <= '9') { - if(yych <= '/') goto yy170; + if (yych <= 'K') { + if (yych <= '9') { + if (yych <= '/') goto yy170; goto yy183; } else { - if(yych == 'F') goto yy178; + if (yych == 'F') goto yy178; goto yy170; } } else { - if(yych <= 'f') { - if(yych <= 'L') goto yy179; - if(yych <= 'e') goto yy170; + if (yych <= 'f') { + if (yych <= 'L') goto yy179; + if (yych <= 'e') goto yy170; goto yy178; } else { - if(yych == 'l') goto yy179; + if (yych == 'l') goto yy179; goto yy170; } } yy185: yyaccept = 5; YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yybm[0+yych] & 1) { + if (yybm[0+yych] & 1) { goto yy185; } - if(yych <= 'L') { - if(yych <= '9') { - if(yych == '.') goto yy168; - if(yych <= '/') goto yy60; + if (yych <= 'L') { + if (yych <= '9') { + if (yych == '.') goto yy168; + if (yych <= '/') goto yy60; } else { - if(yych <= 'D') { - if(yych <= 'C') goto yy60; + if (yych <= 'D') { + if (yych <= 'C') goto yy60; goto yy164; } else { - if(yych <= 'E') goto yy171; - if(yych <= 'K') goto yy60; + if (yych <= 'E') goto yy171; + if (yych <= 'K') goto yy60; goto yy173; } } } else { - if(yych <= 'e') { - if(yych <= 'U') { - if(yych <= 'T') goto yy60; + if (yych <= 'e') { + if (yych <= 'U') { + if (yych <= 'T') goto yy60; goto yy172; } else { - if(yych <= 'c') goto yy60; - if(yych <= 'd') goto yy164; + if (yych <= 'c') goto yy60; + if (yych <= 'd') goto yy164; goto yy171; } } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy60; + if (yych <= 'l') { + if (yych <= 'k') goto yy60; goto yy173; } else { - if(yych == 'u') goto yy172; + if (yych == 'u') goto yy172; goto yy60; } } } yy187: ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yych <= 'C') { - if(yych <= '.') { - if(yych <= '-') goto yy77; + if (yych <= 'C') { + if (yych <= '.') { + if (yych <= '-') goto yy77; goto yy168; } else { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy187; + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy187; goto yy77; } } else { - if(yych <= 'c') { - if(yych <= 'D') goto yy164; - if(yych <= 'E') goto yy171; + if (yych <= 'c') { + if (yych <= 'D') goto yy164; + if (yych <= 'E') goto yy171; goto yy77; } else { - if(yych <= 'd') goto yy164; - if(yych <= 'e') goto yy171; + if (yych <= 'd') goto yy164; + if (yych <= 'e') goto yy171; goto yy77; } } yy189: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy190; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy190; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy190: ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= 'T') { - if(yych <= '@') { - if(yych <= '/') goto yy60; - if(yych <= '9') goto yy190; + if (yych <= 'T') { + if (yych <= '@') { + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy190; goto yy60; } else { - if(yych <= 'F') goto yy190; - if(yych == 'L') goto yy173; + if (yych <= 'F') goto yy190; + if (yych == 'L') goto yy173; goto yy60; } } else { - if(yych <= 'k') { - if(yych <= 'U') goto yy172; - if(yych <= '`') goto yy60; - if(yych <= 'f') goto yy190; + if (yych <= 'k') { + if (yych <= 'U') goto yy172; + if (yych <= '`') goto yy60; + if (yych <= 'f') goto yy190; goto yy60; } else { - if(yych <= 'l') goto yy173; - if(yych == 'u') goto yy172; + if (yych <= 'l') goto yy173; + if (yych == 'u') goto yy172; goto yy60; } } yy192: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy218; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy218; goto yy77; } else { - if(yych <= 'F') goto yy218; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy218; + if (yych <= 'F') goto yy218; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy218; goto yy77; } yy193: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy194; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy194; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy194: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy195; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy195; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy195: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy196; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy196; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy196: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy197; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy197; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy197: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy198; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy198; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy198: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy199; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy199; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy199: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy200; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy200; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy200: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy201; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy201; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy201: yyaccept = 0; YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy202: - if(yybm[0+yych] & 2) { + if (yybm[0+yych] & 2) { goto yy201; } - if(yych == '?') goto yy204; - if(yych != '\\') goto yy5; + if (yych == '?') goto yy204; + if (yych != '\\') goto yy5; yy203: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == 'U') goto yy207; - if(yych == 'u') goto yy206; + if (yych == 'U') goto yy207; + if (yych == 'u') goto yy206; goto yy77; yy204: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych != '?') goto yy77; + if (yych != '?') goto yy77; ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '/') goto yy203; + if (yych == '/') goto yy203; goto yy77; yy206: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy215; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy215; goto yy77; } else { - if(yych <= 'F') goto yy215; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy215; + if (yych <= 'F') goto yy215; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy215; goto yy77; } yy207: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy208; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy208; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy208: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy209; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy209; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy209: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy210; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy210; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy210: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy211; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy211; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy211: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy212; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy212; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy212: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy213; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy213; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy213: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy214; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy214; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy214: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy201; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy201; goto yy77; } else { - if(yych <= 'F') goto yy201; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy201; + if (yych <= 'F') goto yy201; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy201; goto yy77; } yy215: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy216; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy216; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy216: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy217; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy217; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy217: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy201; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy201; goto yy77; } else { - if(yych <= 'F') goto yy201; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy201; + if (yych <= 'F') goto yy201; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy201; goto yy77; } yy218: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy219; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy219; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy219: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych >= ':') goto yy77; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych >= ':') goto yy77; } else { - if(yych <= 'F') goto yy220; - if(yych <= '`') goto yy77; - if(yych >= 'g') goto yy77; + if (yych <= 'F') goto yy220; + if (yych <= '`') goto yy77; + if (yych >= 'g') goto yy77; } yy220: yych = *++YYCURSOR; - if(yych <= '@') { - if(yych <= '/') goto yy77; - if(yych <= '9') goto yy201; + if (yych <= '@') { + if (yych <= '/') goto yy77; + if (yych <= '9') goto yy201; goto yy77; } else { - if(yych <= 'F') goto yy201; - if(yych <= '`') goto yy77; - if(yych <= 'f') goto yy201; + if (yych <= 'F') goto yy201; + if (yych <= '`') goto yy77; + if (yych <= 'f') goto yy201; goto yy77; } yy221: yych = *++YYCURSOR; - if(yych == '\'') goto yy77; + if (yych == '\'') goto yy77; goto yy121; yy222: ++YYCURSOR; @@ -3127,151 +3127,151 @@ yy236: #line 3128 "idl_re.cpp" yy238: ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 7) YYFILL(7); + if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; yy239: - if(yybm[0+yych] & 4) { + if (yybm[0+yych] & 4) { goto yy238; } - if(yych <= 'k') { - if(yych <= 'd') { - if(yych == '/') goto yy240; - if(yych <= 'c') goto yy77; + if (yych <= 'k') { + if (yych <= 'd') { + if (yych == '/') goto yy240; + if (yych <= 'c') goto yy77; goto yy243; } else { - if(yych <= 'e') goto yy242; - if(yych == 'i') goto yy241; + if (yych <= 'e') goto yy242; + if (yych == 'i') goto yy241; goto yy77; } } else { - if(yych <= 't') { - if(yych <= 'l') goto yy245; - if(yych == 'p') goto yy246; + if (yych <= 't') { + if (yych <= 'l') goto yy245; + if (yych == 'p') goto yy246; goto yy77; } else { - if(yych <= 'u') goto yy244; - if(yych == 'w') goto yy247; + if (yych <= 'u') goto yy244; + if (yych == 'w') goto yy247; goto yy77; } } yy240: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '*') goto yy330; + if (yych == '*') goto yy330; goto yy77; yy241: yych = *++YYCURSOR; - if(yych == 'f') goto yy293; - if(yych == 'n') goto yy295; + if (yych == 'f') goto yy293; + if (yych == 'n') goto yy295; goto yy77; yy242: yych = *++YYCURSOR; - if(yych <= 'm') { - if(yych == 'l') goto yy278; + if (yych <= 'm') { + if (yych == 'l') goto yy278; goto yy77; } else { - if(yych <= 'n') goto yy277; - if(yych == 'r') goto yy276; + if (yych <= 'n') goto yy277; + if (yych == 'r') goto yy276; goto yy77; } yy243: yych = *++YYCURSOR; - if(yych == 'e') goto yy270; + if (yych == 'e') goto yy270; goto yy77; yy244: yych = *++YYCURSOR; - if(yych == 'n') goto yy265; + if (yych == 'n') goto yy265; goto yy77; yy245: yych = *++YYCURSOR; - if(yych == 'i') goto yy261; + if (yych == 'i') goto yy261; goto yy77; yy246: yych = *++YYCURSOR; - if(yych == 'r') goto yy255; + if (yych == 'r') goto yy255; goto yy77; yy247: yych = *++YYCURSOR; - if(yych != 'a') goto yy77; + if (yych != 'a') goto yy77; yych = *++YYCURSOR; - if(yych != 'r') goto yy77; + if (yych != 'r') goto yy77; yych = *++YYCURSOR; - if(yych != 'n') goto yy77; + if (yych != 'n') goto yy77; yych = *++YYCURSOR; - if(yych != 'i') goto yy77; + if (yych != 'i') goto yy77; yych = *++YYCURSOR; - if(yych != 'n') goto yy77; + if (yych != 'n') goto yy77; yych = *++YYCURSOR; - if(yych != 'g') goto yy77; + if (yych != 'g') goto yy77; ++YYCURSOR; #line 464 "idl.re" { BOOST_WAVE_RET(T_PP_WARNING); } #line 3211 "idl_re.cpp" yy255: yych = *++YYCURSOR; - if(yych != 'a') goto yy77; + if (yych != 'a') goto yy77; yych = *++YYCURSOR; - if(yych != 'g') goto yy77; + if (yych != 'g') goto yy77; yych = *++YYCURSOR; - if(yych != 'm') goto yy77; + if (yych != 'm') goto yy77; yych = *++YYCURSOR; - if(yych != 'a') goto yy77; + if (yych != 'a') goto yy77; ++YYCURSOR; #line 462 "idl.re" { BOOST_WAVE_RET(T_PP_PRAGMA); } #line 3224 "idl_re.cpp" yy261: yych = *++YYCURSOR; - if(yych != 'n') goto yy77; + if (yych != 'n') goto yy77; yych = *++YYCURSOR; - if(yych != 'e') goto yy77; + if (yych != 'e') goto yy77; ++YYCURSOR; #line 460 "idl.re" { BOOST_WAVE_RET(T_PP_LINE); } #line 3233 "idl_re.cpp" yy265: yych = *++YYCURSOR; - if(yych != 'd') goto yy77; + if (yych != 'd') goto yy77; yych = *++YYCURSOR; - if(yych != 'e') goto yy77; + if (yych != 'e') goto yy77; yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; ++YYCURSOR; #line 459 "idl.re" { BOOST_WAVE_RET(T_PP_UNDEF); } #line 3244 "idl_re.cpp" yy270: yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; yych = *++YYCURSOR; - if(yych != 'i') goto yy77; + if (yych != 'i') goto yy77; yych = *++YYCURSOR; - if(yych != 'n') goto yy77; + if (yych != 'n') goto yy77; yych = *++YYCURSOR; - if(yych != 'e') goto yy77; + if (yych != 'e') goto yy77; ++YYCURSOR; #line 458 "idl.re" { BOOST_WAVE_RET(T_PP_DEFINE); } #line 3257 "idl_re.cpp" yy276: yych = *++YYCURSOR; - if(yych == 'r') goto yy289; + if (yych == 'r') goto yy289; goto yy77; yy277: yych = *++YYCURSOR; - if(yych == 'd') goto yy285; + if (yych == 'd') goto yy285; goto yy77; yy278: yych = *++YYCURSOR; - if(yych == 'i') goto yy280; - if(yych != 's') goto yy77; + if (yych == 'i') goto yy280; + if (yych != 's') goto yy77; yych = *++YYCURSOR; - if(yych == 'e') goto yy283; + if (yych == 'e') goto yy283; goto yy77; yy280: yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; ++YYCURSOR; #line 456 "idl.re" { BOOST_WAVE_RET(T_PP_ELIF); } @@ -3283,18 +3283,18 @@ yy283: #line 3284 "idl_re.cpp" yy285: yych = *++YYCURSOR; - if(yych != 'i') goto yy77; + if (yych != 'i') goto yy77; yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; ++YYCURSOR; #line 457 "idl.re" { BOOST_WAVE_RET(T_PP_ENDIF); } #line 3293 "idl_re.cpp" yy289: yych = *++YYCURSOR; - if(yych != 'o') goto yy77; + if (yych != 'o') goto yy77; yych = *++YYCURSOR; - if(yych != 'r') goto yy77; + if (yych != 'r') goto yy77; ++YYCURSOR; #line 461 "idl.re" { BOOST_WAVE_RET(T_PP_ERROR); } @@ -3302,40 +3302,40 @@ yy289: yy293: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'd') goto yy321; - if(yych == 'n') goto yy322; + if (yych == 'd') goto yy321; + if (yych == 'n') goto yy322; yy294: #line 452 "idl.re" { BOOST_WAVE_RET(T_PP_IF); } #line 3311 "idl_re.cpp" yy295: yych = *++YYCURSOR; - if(yych != 'c') goto yy77; + if (yych != 'c') goto yy77; yych = *++YYCURSOR; - if(yych != 'l') goto yy77; + if (yych != 'l') goto yy77; yych = *++YYCURSOR; - if(yych != 'u') goto yy77; + if (yych != 'u') goto yy77; yych = *++YYCURSOR; - if(yych != 'd') goto yy77; + if (yych != 'd') goto yy77; yych = *++YYCURSOR; - if(yych != 'e') goto yy77; + if (yych != 'e') goto yy77; yy300: yyaccept = 10; YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '!') { - if(yych <= 0x09) { - if(yych >= 0x09) goto yy300; + if (yych <= '!') { + if (yych <= 0x09) { + if (yych >= 0x09) goto yy300; } else { - if(yych == ' ') goto yy300; + if (yych == ' ') goto yy300; } } else { - if(yych <= '/') { - if(yych <= '"') goto yy304; - if(yych >= '/') goto yy303; + if (yych <= '/') { + if (yych <= '"') goto yy304; + if (yych >= '/') goto yy303; } else { - if(yych == '<') goto yy305; + if (yych == '<') goto yy305; } } yy302: @@ -3344,160 +3344,160 @@ yy302: #line 3345 "idl_re.cpp" yy303: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '*') goto yy314; + if (yych == '*') goto yy314; goto yy77; yy304: yych = *++YYCURSOR; - if(yych == '"') goto yy77; + if (yych == '"') goto yy77; goto yy311; yy305: yych = *++YYCURSOR; - if(yych == '>') goto yy77; + if (yych == '>') goto yy77; goto yy307; yy306: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy307: - if(yybm[0+yych] & 8) { + if (yybm[0+yych] & 8) { goto yy306; } - if(yych <= '=') goto yy77; + if (yych <= '=') goto yy77; ++YYCURSOR; #line 444 "idl.re" { BOOST_WAVE_RET(T_PP_HHEADER); } #line 3372 "idl_re.cpp" yy310: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy311: - if(yybm[0+yych] & 16) { + if (yybm[0+yych] & 16) { goto yy310; } - if(yych <= '!') goto yy77; + if (yych <= '!') goto yy77; ++YYCURSOR; #line 447 "idl.re" { BOOST_WAVE_RET(T_PP_QHEADER); } #line 3385 "idl_re.cpp" yy314: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[0+yych] & 32) { + if (yybm[0+yych] & 32) { goto yy314; } - if(yych == 0x0D) goto yy316; - if(yych <= ')') goto yy77; + if (yych == 0x0D) goto yy316; + if (yych <= ')') goto yy77; goto yy318; yy316: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[0+yych] & 32) { + if (yybm[0+yych] & 32) { goto yy314; } - if(yych == 0x0D) goto yy316; - if(yych <= ')') goto yy77; + if (yych == 0x0D) goto yy316; + if (yych <= ')') goto yy77; yy318: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[0+yych] & 128) { + if (yybm[0+yych] & 128) { goto yy318; } - if(yych <= 0x0D) { - if(yych <= 0x08) goto yy77; - if(yych <= 0x0C) goto yy314; + if (yych <= 0x0D) { + if (yych <= 0x08) goto yy77; + if (yych <= 0x0C) goto yy314; } else { - if(yych <= 0x1F) goto yy77; - if(yych == '/') goto yy300; + if (yych <= 0x1F) goto yy77; + if (yych == '/') goto yy300; goto yy314; } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yybm[0+yych] & 32) { + if (yybm[0+yych] & 32) { goto yy314; } - if(yych == 0x0D) goto yy316; - if(yych <= ')') goto yy77; + if (yych == 0x0D) goto yy316; + if (yych <= ')') goto yy77; goto yy318; yy321: yych = *++YYCURSOR; - if(yych == 'e') goto yy327; + if (yych == 'e') goto yy327; goto yy77; yy322: yych = *++YYCURSOR; - if(yych != 'd') goto yy77; + if (yych != 'd') goto yy77; yych = *++YYCURSOR; - if(yych != 'e') goto yy77; + if (yych != 'e') goto yy77; yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; ++YYCURSOR; #line 454 "idl.re" { BOOST_WAVE_RET(T_PP_IFNDEF); } #line 3443 "idl_re.cpp" yy327: yych = *++YYCURSOR; - if(yych != 'f') goto yy77; + if (yych != 'f') goto yy77; ++YYCURSOR; #line 453 "idl.re" { BOOST_WAVE_RET(T_PP_IFDEF); } #line 3450 "idl_re.cpp" yy330: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= 0x0D) { - if(yych <= 0x08) goto yy77; - if(yych <= 0x0C) goto yy330; + if (yych <= 0x0D) { + if (yych <= 0x08) goto yy77; + if (yych <= 0x0C) goto yy330; } else { - if(yych <= 0x1F) goto yy77; - if(yych == '*') goto yy334; + if (yych <= 0x1F) goto yy77; + if (yych == '*') goto yy334; goto yy330; } yy332: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= 0x0D) { - if(yych <= 0x08) goto yy77; - if(yych <= 0x0C) goto yy330; + if (yych <= 0x0D) { + if (yych <= 0x08) goto yy77; + if (yych <= 0x0C) goto yy330; goto yy332; } else { - if(yych <= 0x1F) goto yy77; - if(yych != '*') goto yy330; + if (yych <= 0x1F) goto yy77; + if (yych != '*') goto yy330; } yy334: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x08) goto yy77; - if(yych <= 0x0C) goto yy330; - if(yych >= 0x0E) goto yy77; + if (yych <= 0x1F) { + if (yych <= 0x08) goto yy77; + if (yych <= 0x0C) goto yy330; + if (yych >= 0x0E) goto yy77; } else { - if(yych <= '*') { - if(yych <= ')') goto yy330; + if (yych <= '*') { + if (yych <= ')') goto yy330; goto yy334; } else { - if(yych == '/') goto yy238; + if (yych == '/') goto yy238; goto yy330; } } ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= 0x0D) { - if(yych <= 0x08) goto yy77; - if(yych <= 0x0C) goto yy330; + if (yych <= 0x0D) { + if (yych <= 0x08) goto yy77; + if (yych <= 0x0C) goto yy330; goto yy332; } else { - if(yych <= 0x1F) goto yy77; - if(yych == '*') goto yy334; + if (yych <= 0x1F) goto yy77; + if (yych == '*') goto yy334; goto yy330; } yy337: @@ -3512,13 +3512,13 @@ yy339: #line 3513 "idl_re.cpp" yy341: yych = *++YYCURSOR; - if(yych == '/') goto yy342; - if(yych == '=') goto yy238; + if (yych == '/') goto yy342; + if (yych == '=') goto yy238; goto yy77; yy342: yych = *++YYCURSOR; - if(yych == 'U') goto yy193; - if(yych == 'u') goto yy192; + if (yych == 'U') goto yy193; + if (yych == 'u') goto yy192; goto yy77; yy343: ++YYCURSOR; @@ -3528,20 +3528,20 @@ yy343: yy345: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych != 'L') goto yy202; + if (yych != 'L') goto yy202; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych != 'S') goto yy202; + if (yych != 'S') goto yy202; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych != 'E') goto yy202; + if (yych != 'E') goto yy202; yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 2) { + if (yybm[0+yych] & 2) { goto yy201; } - if(yych == '?') goto yy204; - if(yych == '\\') goto yy203; + if (yych == '?') goto yy204; + if (yych == '\\') goto yy203; yy349: #line 385 "idl.re" { BOOST_WAVE_RET(T_FALSE); } @@ -3549,17 +3549,17 @@ yy349: yy350: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych != 'U') goto yy202; + if (yych != 'U') goto yy202; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych != 'E') goto yy202; + if (yych != 'E') goto yy202; yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 2) { + if (yybm[0+yych] & 2) { goto yy201; } - if(yych == '?') goto yy204; - if(yych == '\\') goto yy203; + if (yych == '?') goto yy204; + if (yych == '\\') goto yy203; yy353: #line 384 "idl.re" { BOOST_WAVE_RET(T_TRUE); } @@ -3583,26 +3583,26 @@ ccomment: #line 3584 "idl_re.cpp" { YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= 0x0C) { - if(yych <= 0x08) { - if(yych <= 0x00) goto yy366; + if (yych <= 0x0C) { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy366; goto yy368; } else { - if(yych == 0x0A) goto yy362; + if (yych == 0x0A) goto yy362; goto yy365; } } else { - if(yych <= 0x1F) { - if(yych <= 0x0D) goto yy364; + if (yych <= 0x1F) { + if (yych <= 0x0D) goto yy364; goto yy368; } else { - if(yych != '*') goto yy365; + if (yych != '*') goto yy365; } } ++YYCURSOR; - if((yych = *YYCURSOR) == '/') goto yy371; + if ((yych = *YYCURSOR) == '/') goto yy371; yy361: #line 508 "idl.re" { goto ccomment; } @@ -3620,7 +3620,7 @@ yy363: #line 3621 "idl_re.cpp" yy364: yych = *++YYCURSOR; - if(yych == 0x0A) goto yy370; + if (yych == 0x0A) goto yy370; goto yy363; yy365: yych = *++YYCURSOR; @@ -3683,17 +3683,17 @@ cppcomment: #line 3684 "idl_re.cpp" { YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= 0x0A) { - if(yych <= 0x00) goto yy381; - if(yych <= 0x08) goto yy375; - if(yych <= 0x09) goto yy379; + if (yych <= 0x0A) { + if (yych <= 0x00) goto yy381; + if (yych <= 0x08) goto yy375; + if (yych <= 0x09) goto yy379; goto yy376; } else { - if(yych <= 0x0C) goto yy379; - if(yych <= 0x0D) goto yy378; - if(yych >= ' ') goto yy379; + if (yych <= 0x0C) goto yy379; + if (yych <= 0x0D) goto yy378; + if (yych >= ' ') goto yy379; } yy375: yy376: @@ -3709,7 +3709,7 @@ yy377: #line 3710 "idl_re.cpp" yy378: yych = *++YYCURSOR; - if(yych == 0x0A) goto yy383; + if (yych == 0x0A) goto yy383; goto yy377; yy379: ++YYCURSOR; diff --git a/tool/build/Jamfile.v2 b/tool/build/Jamfile.v2 index 52cf149..263dcd2 100644 --- a/tool/build/Jamfile.v2 +++ b/tool/build/Jamfile.v2 @@ -9,8 +9,9 @@ # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) project - : - requirements + : requirements + msvc:_SCL_SECURE_NO_DEPRECATE + msvc:_CRT_SECURE_NO_DEPRECATE ; exe wave