⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testwave_app.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/*=============================================================================    Boost.Wave: A Standard compliant C++ preprocessor library    http://www.boost.org/    Copyright (c) 2001-2008 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)=============================================================================*/#if !defined(BOOST_WAVE_LIBS_WAVE_TEST_TESTWAVE_APP_HPP)#define BOOST_WAVE_LIBS_WAVE_TEST_TESTWAVE_APP_HPP#include <string>#include <vector>// include boost#include <boost/config.hpp>#include "cmd_line_utils.hpp"///////////////////////////////////////////////////////////////////////////////class testwave_app{public:    testwave_app(boost::program_options::variables_map const& vm);        //  Test the given file (i.e. preprocess the file and compare the result     //  against the embedded 'R' comments, if an error occurs compare the error    //  message against the given 'E' comments).    bool test_a_file(std::string filename);        //  print the current version of this program    int print_version();        //  print the copyright statement    int print_copyright();    // access the common options used for the command line and the config    // options inside the test files    boost::program_options::options_description const& common_options() const    {         return desc_options;     }        void set_debuglevel(int debuglevel_)    {        debuglevel = debuglevel_;    }    int get_debuglevel() const    {        return debuglevel;    }    protected:    //  Read the given file into a string    bool read_file(std::string const& filename, std::string& instr);    //  Extract special information from comments marked with the given letter    bool extract_special_information(std::string const& filename,         std::string const& instr, char flag, std::string& content);    //  Extract the expected output and expected hooks information from the     //  given input data.    //  The expected output has to be provided inside of special comments which    //  start with a capital 'R' ('H' for the hooks information). All such     //  comments are concatenated and returned through the parameter 'expected'    //  ('expectedhooks' for hooks information).    bool extract_expected_output(std::string const& filename,         std::string const& instr, std::string& expected,         std::string& expectedhooks);            //  Extracts the required preprocessing options from the given input data     //  and initializes the given Wave context object accordingly.     //  We allow the same (applicable) options to be used as are valid for the     //  wave driver executable.    template <typename Context>    bool extract_options(std::string const& filename,         std::string const& instr, Context& ctx, bool single_line);    //  transfers the options collected in the vm parameter into the given     //  context    template <typename Context>    bool initialise_options(Context& ctx,         boost::program_options::variables_map const& vm, bool single_line);    //  Preprocess the given input data and return the generated output through     //  the parameter 'result'.    bool preprocess_file(std::string filename, std::string const& instr,         std::string& result, std::string& error, std::string& hooks,         bool single_line = false);    //  Add special predefined macros to the context object    template <typename Context>    bool add_predefined_macros(Context& ctx);    //  This function compares the real result and the expected one but first     //  replaces all occurrences in the expected result of     //      $E: to the result of preprocessing the given expression    //      $F: to the passed full filepath     //      $P: to the full path    //      $V: to the current Boost version number    bool got_expected_result(std::string const& filename,         std::string const& result, std::string& expected);    //  construct a SIZEOF macro definition string and predefine this macro    template <typename Context>    bool add_sizeof_definition(Context& ctx, char const *name, int value);        //  construct a MIN macro definition string and predefine this macro    template <typename T, typename Context>    bool add_min_definition(Context& ctx, char const *name);        //  construct a MAX macro definition string and predefine this macro    template <typename T, typename Context>    bool add_max_definition(Context& ctx, char const *name);    //  Predefine __TESTWAVE_HAS_STRICT_LEXER__    template <typename Context>    bool add_strict_lexer_definition(Context& ctx);private:    int debuglevel;    boost::program_options::options_description desc_options;    boost::program_options::variables_map const& global_vm;};#endif // !defined(BOOST_WAVE_LIBS_WAVE_TEST_TESTWAVE_APP_HPP)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -