diff options
Diffstat (limited to 'include/erebos')
| -rw-r--r-- | include/erebos/message.h | 6 | ||||
| -rw-r--r-- | include/erebos/storage.h | 16 | 
2 files changed, 12 insertions, 10 deletions
| diff --git a/include/erebos/message.h b/include/erebos/message.h index 0b5e257..c94e8c3 100644 --- a/include/erebos/message.h +++ b/include/erebos/message.h @@ -14,9 +14,9 @@ class Identity;  class DirectMessage  {  public: -	const Identity & from() const; -	const struct ZonedTime & time() const; -	const std::string & text() const; +	const std::optional<Identity> & from() const; +	const std::optional<struct ZonedTime> & time() const; +	std::string text() const;  private:  	friend class DirectMessageThread; diff --git a/include/erebos/storage.h b/include/erebos/storage.h index d5ae45a..d46c056 100644 --- a/include/erebos/storage.h +++ b/include/erebos/storage.h @@ -72,6 +72,7 @@ public:  	PartialStorage derivePartialStorage() const;  	std::optional<Ref> ref(const Digest &) const; +	Ref zref() const;  	std::optional<Object> loadObject(const Digest &) const;  	Ref storeObject(const Object &) const; @@ -103,6 +104,7 @@ public:  	explicit Digest(std::array<uint8_t, size> value): value(value) {}  	explicit Digest(const std::string &);  	explicit operator std::string() const; +	bool isZero() const;  	const std::array<uint8_t, size> & arr() const { return value; } @@ -151,6 +153,7 @@ public:  	Ref & operator=(Ref &&) = default;  	static std::optional<Ref> create(Storage, const Digest &); +	static Ref zcreate(Storage);  	constexpr operator bool() const { return true; }  	const Object operator*() const; @@ -265,7 +268,8 @@ class ObjectT  public:  	typedef std::variant<  		RecordT<S>, -		Blob> Variants; +		Blob, +		std::monostate> Variants;  	ObjectT(const ObjectT<S> &) = default;  	ObjectT(Variants content): content(content) {} @@ -282,7 +286,7 @@ public:  			std::vector<uint8_t>::const_iterator);  	static std::vector<ObjectT<S>> decodeMany(const S &, const std::vector<uint8_t> &);  	std::vector<uint8_t> encode() const; -	static std::optional<ObjectT<S>> load(const typename S::Ref &); +	static ObjectT<S> load(const typename S::Ref &);  	std::optional<RecordT<S>> asRecord() const;  	std::optional<Blob> asBlob() const; @@ -317,7 +321,7 @@ public:  	Stored & operator=(const Stored &) = default;  	Stored & operator=(Stored &&) = default; -	static std::optional<Stored<T>> load(const Ref &); +	static Stored<T> load(const Ref &);  	Ref store(const Storage &) const;  	bool operator==(const Stored<T> & other) const @@ -354,11 +358,9 @@ Stored<T> Storage::store(const T & val) const  }  template<typename T> -std::optional<Stored<T>> Stored<T>::load(const Ref & ref) +Stored<T> Stored<T>::load(const Ref & ref)  { -	if (auto val = T::load(ref)) -		return Stored(ref, std::make_shared<T>(val.value())); -	return std::nullopt; +	return Stored(ref, std::make_shared<T>(T::load(ref)));  }  template<typename T> |