// file : bbot/variable -*- C++ -*- // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BBOT_VARIABLE #define BBOT_VARIABLE #include #include #include // uint64_t #include // invalid_argument #include namespace bbot { //@@ invalid_argument // class LIBBBOT_EXPORT invalid_variable: public std::invalid_argument { public: invalid_variable (std::uint64_t p, const std::string& d) : invalid_argument (d), pos (p) {} std::uint64_t pos; // Zero-based. }; // String in the name=value format. Can contain single or double quoted // substrings. No escaping is supported. The name must not contain spaces. // Throw variable_error if the string doesn't conform to these rules. // struct LIBBBOT_EXPORT variable: std::string { variable (std::string); // Remove a single level of quotes. Don't validate the format or the // correctness of the quotation. Note that the variable can potentially be // modified through the std::string interface in a way that breaks // format/quoting. // std::string unquoted () const; }; using variables = std::vector; } #endif // BBOT_VARIABLE