22template <
typename IStreamT>
23 requires(std::is_base_of_v<std::istream, IStreamT>)
25 std::unordered_map<std::string, circ_variable> root;
32 class circ_safe_proxy {
46 circ_safe_proxy
operator[](
const std::string& key) {
47 return circ_safe_proxy(var[key]);
55 return circ_safe_proxy(var[std::string(key)]);
64 return std::get<T>(var.
value);
72 return std::get<T>(var.
value);
77 using circ_object = std::unordered_map<std::string, circ_variable>;
91 std::vector<circus::tokens__> tokens =
circus::lexer__{}(std::move(source));
92 std::unordered_map<std::string, circ_variable> rt =
circus::parser__{}(std::move(tokens));
99 return circ_safe_proxy(root[k]);
Parses structured circus-formatted input and exposes access to the parsed data.
Definition deserializer.hpp:24
circ_safe_proxy operator[](const std::string &k)
Destructor (default).
Definition deserializer.hpp:98
deserializer(IStreamT &is)
Constructs a deserializer from an input stream.
Definition deserializer.hpp:89
Utility class to read contents from input streams into a string.
Definition reader.hpp:17
Lexer for tokenizing input strings into Circus tokens.
Definition lexer.hpp:30
Parser for Circus token streams producing nested Circus variables.
Definition parser.hpp:57
Lexer class for tokenizing Circus input strings.
Represents a variable in Circus serialization.
Definition parser.hpp:18
circ_type_var_t value
The value stored in this variable.
Definition parser.hpp:34