summaryrefslogtreecommitdiff
path: root/include/erebos
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2020-01-27 21:56:06 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2020-02-05 21:02:08 +0100
commit495d2cb6b47b309070b31e0ef83fa5731a150a6d (patch)
treedddf94ae3513409d2e80801b085686cf88c760a5 /include/erebos
parentab86a1f0c3b86050e65fc5b7ac1e88a00f0d228c (diff)
Storage: handle record items with unknown type
Diffstat (limited to 'include/erebos')
-rw-r--r--include/erebos/storage.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/erebos/storage.h b/include/erebos/storage.h
index d855460..d23022f 100644
--- a/include/erebos/storage.h
+++ b/include/erebos/storage.h
@@ -160,12 +160,19 @@ class RecordT
public:
class Item {
public:
+ struct UnknownType
+ {
+ std::string type;
+ std::string value;
+ };
+
typedef std::variant<
std::monostate,
int,
std::string,
std::vector<uint8_t>,
- typename S::Ref> Variant;
+ typename S::Ref,
+ UnknownType> Variant;
Item(const std::string & name):
Item(name, std::monostate()) {}
@@ -184,6 +191,7 @@ public:
std::optional<std::string> asText() const;
std::optional<std::vector<uint8_t>> asBinary() const;
std::optional<typename S::Ref> asRef() const;
+ std::optional<UnknownType> asUnknown() const;
template<typename T> std::optional<Stored<T>> as() const;