/*============================================================================= Boost.Wave: A Standard compliant C++ preprocessor library Sample: IDL lexer http://www.boost.org/ Copyright (c) 2001-2010 Hartmut Kaiser. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #include #if defined(BOOST_HAS_UNISTD_H) #include #else #include #endif #include #include // reuse the token ids and re2c helper functions from the default C++ lexer #include #include #include #include #include "idl_re.hpp" #if defined(_MSC_VER) && !defined(__COMO__) #pragma warning (disable: 4101) // 'foo' : unreferenced local variable #pragma warning (disable: 4102) // 'foo' : unreferenced label #endif #define YYCTYPE uchar #define YYCURSOR cursor #define YYLIMIT s->lim #define YYMARKER s->ptr #define YYFILL(n) {cursor = fill(s, cursor);} //#define BOOST_WAVE_RET(i) {s->cur = cursor; return (i);} #define BOOST_WAVE_RET(i) \ { \ s->line += count_backslash_newlines(s, cursor); \ s->cur = cursor; \ return (i); \ } \ /**/ /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace wave { namespace idllexer { namespace re2clex { bool is_backslash( boost::wave::cpplexer::re2clex::uchar *p, boost::wave::cpplexer::re2clex::uchar *end, int &len) { if (*p == '\\') { len = 1; return true; } else if (*p == '?' && *(p+1) == '?' && (p+2 < end && *(p+2) == '/')) { len = 3; return true; } return false; } /////////////////////////////////////////////////////////////////////////////// } // namespace re2clex } // namespace idllexer } // namespace wave } // namespace boost