src/storage/trie/supergenius_trie/supergenius_trie.hpp
Namespaces
Classes
Source code
#ifndef SUPERGENIUS_STORAGE_TRIE_SUPERGENIUS_TRIE_HPP
#define SUPERGENIUS_STORAGE_TRIE_SUPERGENIUS_TRIE_HPP
#include <list>
#include "storage/face/generic_maps.hpp"
#include "storage/trie/supergenius_trie/supergenius_node.hpp"
namespace sgns::storage::trie {
class SuperGeniusTrie : public face::GenericMap<base::Buffer, base::Buffer> {
public:
using NodePtr = std::shared_ptr<SuperGeniusNode>;
using BranchPtr = std::shared_ptr<BranchNode>;
virtual outcome::result<void> clearPrefix(const base::Buffer &prefix) = 0;
virtual NodePtr getRoot() const = 0;
virtual outcome::result<NodePtr> retrieveChild(BranchPtr parent,
uint8_t idx) const = 0;
// TODO(Harrm) Make key nibbles type distinguishable with just key
virtual outcome::result<NodePtr> getNode(
NodePtr parent, const KeyNibbles &key_nibbles) const = 0;
virtual outcome::result<std::list<std::pair<BranchPtr, uint8_t>>> getPath(
NodePtr parent, const KeyNibbles &key_nibbles) const = 0;
};
} // namespace sgns::storage::trie
#endif // SUPERGENIUS_STORAGE_TRIE_SUPERGENIUS_TRIE_HPP
Updated on 2026-03-04 at 13:10:45 -0800