From dd973d03bf5f3f439dcdacbb22470105e66e698a Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 29 Mar 2017 00:45:30 +0300 Subject: Implement manifests and build_config --- bbot/variable | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 bbot/variable (limited to 'bbot/variable') diff --git a/bbot/variable b/bbot/variable new file mode 100644 index 0000000..c210dc0 --- /dev/null +++ b/bbot/variable @@ -0,0 +1,49 @@ +// 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 with the above + // constraints. + // + 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 -- cgit v1.1