.. _program_listing_file_src_util_parser.hpp: Program Listing for File parser.hpp =================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src_util/parser.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef parser_h #define parser_h #include #include #include #include #include #include #include #include #include "types.hpp" #define SHORT_DISPLAY 7 #define NORMAL_DISPLAY 9 #define LONG_DISPLAY 14 using namespace std; namespace parser{ extern bool no_rewind; inline void next_line(std::istream &flux){flux.ignore(numeric_limits::max(), '\n');}; istream & find_next(istream &flux, const char* search); } //----------------------------------------------------------------------------- // Templates template T from_string(const string &s){ istringstream sin(s); T x; sin >> x; if(sin.fail()){ cerr << "Fatal error in 'from_string()', string '" << s << "' cannot be interpreted as type requested\n"; exit(1); } return x; } template string to_string(const T &x){ ostringstream sout; sout << x; return sout.str(); } //----------------------------------------------------------------------------- // Declarations int cluster_index_from_string(string& S); istream & operator==(istream &input, const char* search); istream & operator==(istream &input, const string &search); istream & operator>>(istream &input, const char* search); istream & operator>>(istream &input, const string &search); vector split_string(const string &s, char delim); vector read_strings(istream &s); void banner(const char c, const char s[128], std::ostream &fout = std::cout); void banner(const char c, const string &s, ostream &fout = std::cout); void check_name(const string& S); void check_signals(); struct qcm_error : public std::runtime_error { explicit qcm_error(const std::string& msg) : std::runtime_error(msg) {} }; #define QCM_ASSERT(cond) \ do { if (!(cond)) qcm_throw(std::string("Assertion failed: " #cond \ " in " __FILE__ ":") + std::to_string(__LINE__)); } while(0) void qcm_catch(const std::exception& e); void qcm_ED_catch(const std::exception& e); void qcm_ED_throw(const std::string& s); void qcm_throw(const std::string& s); void qcm_warning(const std::string& s); //----------------------------------------------------------------------------- // Declarations and code inline double chop(double x, double c=1e-6){return (fabs(x)