regex_comparison.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 149 行
HPP
149 行
/* * * Copyright (c) 2002 * John Maddock * * Use, modification and distribution are subject to 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) * */#ifndef REGEX_COMPARISON_HPP#define REGEX_COMPARISON_HPP#include <string>#include <list>#include <boost/limits.hpp>//// globals://extern bool time_boost;extern bool time_localised_boost;extern bool time_greta;extern bool time_safe_greta;extern bool time_posix;extern bool time_pcre;extern bool time_xpressive;extern bool test_matches;extern bool test_short_twain;extern bool test_long_twain;extern bool test_code;extern bool test_html;extern std::string html_template_file;extern std::string html_out_file;extern std::string html_contents;int handle_argument(const std::string& what);int show_usage();void load_file(std::string& text, const char* file);void output_html_results(bool show_description, const std::string& tagname);void output_final_html();struct results{ double boost_time; double localised_boost_time; double greta_time; double safe_greta_time; double posix_time; double pcre_time; double xpressive_time; double factor; std::string expression; std::string description; results(const std::string& ex, const std::string& desc) : boost_time(-1), localised_boost_time(-1), greta_time(-1), safe_greta_time(-1), posix_time(-1), pcre_time(-1), xpressive_time(-1), factor((std::numeric_limits<double>::max)()), expression(ex), description(desc) {} void finalise() { if((boost_time >= 0) && (boost_time < factor)) factor = boost_time; if((localised_boost_time >= 0) && (localised_boost_time < factor)) factor = localised_boost_time; if((greta_time >= 0) && (greta_time < factor)) factor = greta_time; if((safe_greta_time >= 0) && (safe_greta_time < factor)) factor = safe_greta_time; if((posix_time >= 0) && (posix_time < factor)) factor = posix_time; if((pcre_time >= 0) && (pcre_time < factor)) factor = pcre_time; if((xpressive_time >= 0) && (xpressive_time < factor)) factor = xpressive_time; }};extern std::list<results> result_list;namespace b {// boost tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace bl {// localised boost tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace pcr {// pcre tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace g {// greta tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace gs {// safe greta tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace posix {// safe greta tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}namespace dxpr {// xpressive tests:double time_match(const std::string& re, const std::string& text, bool icase);double time_find_all(const std::string& re, const std::string& text, bool icase);}void test_match(const std::string& re, const std::string& text, const std::string& description, bool icase = false);void test_find_all(const std::string& re, const std::string& text, const std::string& description, bool icase = false);inline void test_match(const std::string& re, const std::string& text, bool icase = false){ test_match(re, text, text, icase); }inline void test_find_all(const std::string& re, const std::string& text, bool icase = false){ test_find_all(re, text, "", icase); }#define REPEAT_COUNT 10#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?