LCOV - code coverage report
Current view: top level - usr/include/boost/wave - language_support.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 14 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*=============================================================================
       2             :     Boost.Wave: A Standard compliant C++ preprocessor library
       3             :     Definition of the various language support constants
       4             : 
       5             :     http://www.boost.org/
       6             : 
       7             :     Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
       8             :     Software License, Version 1.0. (See accompanying file
       9             :     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
      10             : =============================================================================*/
      11             : #if !defined(LANGUAGE_SUPPORT_HPP_93EDD057_2DEF_44BC_BC9F_FDABB9F51AFA_INCLUDED)
      12             : #define LANGUAGE_SUPPORT_HPP_93EDD057_2DEF_44BC_BC9F_FDABB9F51AFA_INCLUDED
      13             : 
      14             : #include <boost/wave/wave_config.hpp>
      15             : 
      16             : // this must occur after all of the includes and before any code appears
      17             : #ifdef BOOST_HAS_ABI_HEADERS
      18             : #include BOOST_ABI_PREFIX
      19             : #endif
      20             : 
      21             : ///////////////////////////////////////////////////////////////////////////////
      22             : namespace boost {
      23             : namespace wave {
      24             : 
      25             : enum language_support {
      26             : //  support flags for C++98
      27             :     support_normal = 0x01,
      28             :     support_cpp = support_normal,
      29             : 
      30             :     support_option_long_long = 0x02,
      31             : 
      32             : #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
      33             : //  support flags for C99
      34             :     support_option_variadics = 0x04,
      35             :     support_c99 = support_option_variadics | support_option_long_long | 0x08,
      36             : #endif
      37             : #if BOOST_WAVE_SUPPORT_CPP0X != 0
      38             :     support_option_no_newline_at_end_of_file = 0x20,
      39             : 
      40             :     support_cpp0x = support_option_variadics | support_option_long_long |
      41             :         support_option_no_newline_at_end_of_file | 0x10,
      42             :     support_cpp11 = support_cpp0x,
      43             : #endif
      44             : 
      45             :     support_option_mask = 0xFFC0,
      46             :     support_option_emit_contnewlines = 0x0040,
      47             :     support_option_insert_whitespace = 0x0080,
      48             :     support_option_preserve_comments = 0x0100,
      49             :     support_option_no_character_validation = 0x0200,
      50             :     support_option_convert_trigraphs = 0x0400,
      51             :     support_option_single_line = 0x0800,
      52             :     support_option_prefer_pp_numbers = 0x1000,
      53             :     support_option_emit_line_directives = 0x2000,
      54             :     support_option_include_guard_detection = 0x4000,
      55             :     support_option_emit_pragma_directives = 0x8000
      56             : };
      57             : 
      58             : ///////////////////////////////////////////////////////////////////////////////
      59             : //
      60             : //  need_cpp
      61             : //
      62             : //      Extract, if the language to support is C++98
      63             : //
      64             : ///////////////////////////////////////////////////////////////////////////////
      65             : inline bool
      66             : need_cpp(language_support language)
      67             : {
      68             :     return (language & ~support_option_mask) == support_cpp;
      69             : }
      70             : 
      71             : ///////////////////////////////////////////////////////////////////////////////
      72             : //
      73             : //  need_cpp0x
      74             : //
      75             : //      Extract, if the language to support is C++11
      76             : //
      77             : ///////////////////////////////////////////////////////////////////////////////
      78             : #if BOOST_WAVE_SUPPORT_CPP0X != 0
      79             : 
      80             : inline bool
      81           0 : need_cpp0x(language_support language)
      82             : {
      83           0 :     return (language & ~support_option_mask) == support_cpp0x;
      84             : }
      85             : 
      86             : #else
      87             : 
      88             : inline bool
      89             : need_cpp0x(language_support language)
      90             : {
      91             :     return false;
      92             : }
      93             : 
      94             : #endif
      95             : 
      96             : #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
      97             : ///////////////////////////////////////////////////////////////////////////////
      98             : //
      99             : //  need_c99
     100             : //
     101             : //      Extract, if the language to support is C99
     102             : //
     103             : ///////////////////////////////////////////////////////////////////////////////
     104             : inline bool
     105           0 : need_c99(language_support language)
     106             : {
     107           0 :     return (language & ~support_option_mask) == support_c99;
     108             : }
     109             : 
     110             : #else  // BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
     111             : 
     112             : ///////////////////////////////////////////////////////////////////////////////
     113             : inline bool
     114             : need_variadics(language_support language)
     115             : {
     116             :     return false;
     117             : }
     118             : 
     119             : ///////////////////////////////////////////////////////////////////////////////
     120             : inline language_support
     121             : enable_variadics(language_support language, bool enable = true)
     122             : {
     123             :     return language;
     124             : }
     125             : 
     126             : //////////////////////////////////////////////////////////////////////////////
     127             : inline bool
     128             : need_c99(language_support language)
     129             : {
     130             :     return false;
     131             : }
     132             : 
     133             : #endif // BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
     134             : 
     135             : ///////////////////////////////////////////////////////////////////////////////
     136             : //
     137             : //  get_support_options
     138             : //
     139             : //      Set preserve comments support in the language to support
     140             : //
     141             : ///////////////////////////////////////////////////////////////////////////////
     142             : inline language_support
     143             : get_support_options(language_support language)
     144             : {
     145             :     return static_cast<language_support>(language & support_option_mask);
     146             : }
     147             : 
     148             : ///////////////////////////////////////////////////////////////////////////////
     149             : //
     150             : //  set_support_options
     151             : //
     152             : //      Set language option (for fine tuning of lexer behavior)
     153             : //
     154             : ///////////////////////////////////////////////////////////////////////////////
     155             : inline language_support
     156             : set_support_options(language_support language, language_support option)
     157             : {
     158             :     return static_cast<language_support>(
     159             :         (language & ~support_option_mask) | (option & support_option_mask));
     160             : }
     161             : 
     162             : ///////////////////////////////////////////////////////////////////////////////
     163             : //  Get and set different language options
     164             : #define BOOST_WAVE_NEED_OPTION(option)                                        \
     165             :     inline bool need_ ## option(language_support language)                    \
     166             :     {                                                                         \
     167             :         return (language & support_option_ ## option) ? true : false;         \
     168             :     }                                                                         \
     169             :     /**/
     170             : 
     171             : #define BOOST_WAVE_ENABLE_OPTION(option)                                      \
     172             :     inline language_support                                                   \
     173             :     enable_ ## option(language_support language, bool enable = true)          \
     174             :     {                                                                         \
     175             :         if (enable)                                                           \
     176             :             return static_cast<language_support>(language | support_option_ ## option); \
     177             :         return static_cast<language_support>(language & ~support_option_ ## option);    \
     178             :     }                                                                         \
     179             :     /**/
     180             : 
     181             : #define BOOST_WAVE_OPTION(option)                                             \
     182             :     BOOST_WAVE_NEED_OPTION(option)                                            \
     183             :     BOOST_WAVE_ENABLE_OPTION(option)                                          \
     184             :     /**/
     185             : 
     186             : ///////////////////////////////////////////////////////////////////////////////
     187           0 : BOOST_WAVE_OPTION(long_long)                 // support_option_long_long
     188             : BOOST_WAVE_OPTION(no_character_validation)   // support_option_no_character_validation
     189           0 : BOOST_WAVE_OPTION(preserve_comments)         // support_option_preserve_comments
     190           0 : BOOST_WAVE_OPTION(prefer_pp_numbers)         // support_option_prefer_pp_numbers
     191           0 : BOOST_WAVE_OPTION(emit_line_directives)      // support_option_emit_line_directives
     192           0 : BOOST_WAVE_OPTION(single_line)               // support_option_single_line
     193             : BOOST_WAVE_OPTION(convert_trigraphs)         // support_option_convert_trigraphs
     194             : #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
     195           0 : BOOST_WAVE_OPTION(include_guard_detection)   // support_option_include_guard_detection
     196             : #endif
     197             : #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
     198           0 : BOOST_WAVE_OPTION(variadics)                 // support_option_variadics
     199             : #endif
     200             : #if BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES != 0
     201           0 : BOOST_WAVE_OPTION(emit_pragma_directives)    // support_option_emit_pragma_directives
     202             : #endif
     203           0 : BOOST_WAVE_OPTION(insert_whitespace)         // support_option_insert_whitespace
     204             : BOOST_WAVE_OPTION(emit_contnewlines)         // support_option_emit_contnewlines
     205             : #if BOOST_WAVE_SUPPORT_CPP0X != 0
     206           0 : BOOST_WAVE_OPTION(no_newline_at_end_of_file) // support_no_newline_at_end_of_file
     207             : #endif
     208             : 
     209             : #undef BOOST_WAVE_NEED_OPTION
     210             : #undef BOOST_WAVE_ENABLE_OPTION
     211             : #undef BOOST_WAVE_OPTION
     212             : 
     213             : ///////////////////////////////////////////////////////////////////////////////
     214             : }   // namespace wave
     215             : }   // namespace boost
     216             : 
     217             : // the suffix header occurs after all of the code
     218             : #ifdef BOOST_HAS_ABI_HEADERS
     219             : #include BOOST_ABI_SUFFIX
     220             : #endif
     221             : 
     222             : #endif // !defined(LANGUAGE_SUPPORT_HPP_93EDD057_2DEF_44BC_BC9F_FDABB9F51AFA_INCLUDED)

Generated by: LCOV version 1.14