X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=parse.h;fp=parse.h;h=83c5d2a8998dff2832b879b78db04c4467608696;hp=0000000000000000000000000000000000000000;hb=17d773d2d45d495704e974b9246eccb21faa8635;hpb=1a6917f77ba35d5397e887a554354a3e49458eb9 diff --git a/parse.h b/parse.h new file mode 100644 index 0000000..83c5d2a --- /dev/null +++ b/parse.h @@ -0,0 +1,28 @@ +#ifndef _PARSE_H +#define _PARSE_H + +// Various routines that deal with parsing; both configuration files and HTTP requests. + +#include +#include +#include + +struct ConfigLine { + std::string keyword; + std::vector arguments; + std::map parameters; +}; + +// Split a line on whitespace, e.g. "foo bar baz" -> {"foo", "bar", "baz"}. +std::vector split_tokens(const std::string &line); + +// Split a string on \n or \r\n, e.g. "foo\nbar\r\n\nbaz\r\n\r\n" -> {"foo", "bar", "baz"}. +std::vector split_lines(const std::string &str); + +// Parse the configuration file. +std::vector parse_config(const std::string &filename); + +// Note: Limits are inclusive. +int fetch_config_int(const std::vector &config, const std::string &keyword, int min_limit, int max_limit); + +#endif // !defined(_PARSE_H)