diff --git a/include/ircd/lexical.h b/include/ircd/lexical.h index dc93b879c..edd91bddd 100644 --- a/include/ircd/lexical.h +++ b/include/ircd/lexical.h @@ -304,66 +304,6 @@ ircd::chomp(const string_view &str, return pos != string_view::npos? string_view{str.substr(0, pos + 1)} : str; } -inline -ircd::params::params(const string_view &in, - const char *const &sep, - const std::initializer_list &names) -:in{in} -,sep{sep} -,names{names} -{ -} - -template -T -ircd::params::at(const size_t &i, - const T &def) -const try -{ - return tokens_count(in, sep) > i? at(i) : def; -} -catch(const bad_lex_cast &e) -{ - throw invalid("parameter #%zu <%s>", i, name(i)); -} - -template -T -ircd::params::at(const size_t &i) -const try -{ - return lex_cast(at(i)); -} -catch(const bad_lex_cast &e) -{ - throw invalid("parameter #%zu <%s>", i, name(i)); -} - -inline ircd::string_view -ircd::params::at(const size_t &i) -const try -{ - return token(in, sep, i); -} -catch(const std::out_of_range &e) -{ - throw missing("required parameter #%zu <%s>", i, name(i)); -} - -inline ircd::string_view -ircd::params::operator[](const size_t &i) -const -{ - return tokens_count(in, sep) > i? token(in, sep, i) : string_view{}; -} - -inline const char * -ircd::params::name(const size_t &i) -const -{ - return names.size() > i? *std::next(begin(names), i) : ""; -} - template size_t ircd::tokens(const string_view &str, diff --git a/include/ircd/stdinc.h b/include/ircd/stdinc.h index 333775468..87a8fac70 100644 --- a/include/ircd/stdinc.h +++ b/include/ircd/stdinc.h @@ -165,6 +165,7 @@ struct line {}; #include "exception.h" #include "color.h" #include "lexical.h" +#include "params.h" #include "buffer.h" #include "parse.h" #include "rfc1459.h"