tetengo 1.8.2
A multipurpose library set
Loading...
Searching...
No Matches
storage.hpp
Go to the documentation of this file.
1
7#if !defined(TETENGO_TRIE_STORAGE_HPP)
8#define TETENGO_TRIE_STORAGE_HPP
9
10#include <any>
11#include <cstddef> // IWYU pragma: keep
12#include <cstdint>
13#include <istream>
14#include <memory>
15
16#include <boost/core/noncopyable.hpp>
17
18
19namespace tetengo::trie
20{
21 class value_serializer;
22
23
27 class storage : private boost::noncopyable
28 {
29 public:
30 // constructors and destructor
31
36
40 virtual ~storage();
41
42
43 // functions
44
50 [[nodiscard]] std::size_t base_check_size() const;
51
59 [[nodiscard]] std::int32_t base_at(std::size_t base_check_index) const;
60
67 void set_base_at(std::size_t base_check_index, std::int32_t base);
68
76 [[nodiscard]] std::uint8_t check_at(std::size_t base_check_index) const;
77
84 void set_check_at(std::size_t base_check_index, std::uint8_t check);
85
91 [[nodiscard]] std::size_t value_count() const;
92
100 [[nodiscard]] const std::any* value_at(std::size_t value_index) const;
101
108 void add_value_at(std::size_t value_index, std::any value);
109
115 [[nodiscard]] double filling_rate() const;
116
123 void serialize(std::ostream& output_stream, const value_serializer& value_serializer_) const;
124
130 [[nodiscard]] std::unique_ptr<storage> clone() const;
131
132
133 private:
134 // virtual functions
135
136 virtual std::size_t base_check_size_impl() const = 0;
137
138 virtual std::int32_t base_at_impl(std::size_t base_check_index) const = 0;
139
140 virtual void set_base_at_impl(std::size_t base_check_index, std::int32_t base) = 0;
141
142 virtual std::uint8_t check_at_impl(std::size_t base_check_index) const = 0;
143
144 virtual void set_check_at_impl(std::size_t base_check_index, std::uint8_t check) = 0;
145
146 virtual std::size_t value_count_impl() const = 0;
147
148 virtual const std::any* value_at_impl(std::size_t value_index) const = 0;
149
150 virtual void add_value_at_impl(std::size_t value_index, std::any value) = 0;
151
152 virtual double filling_rate_impl() const = 0;
153
154 virtual void serialize_impl(std::ostream& output_stream, const value_serializer& value_serializer_) const = 0;
155
156 virtual std::unique_ptr<storage> clone_impl() const = 0;
157 };
158
159
160}
161
162
163#endif
A storage.
Definition storage.hpp:28
void set_base_at(std::size_t base_check_index, std::int32_t base)
Sets a base value.
double filling_rate() const
Returns the filling rate.
std::uint8_t check_at(std::size_t base_check_index) const
Returns the check value.
storage()
Creates a storage.
void serialize(std::ostream &output_stream, const value_serializer &value_serializer_) const
Serializes this storage.
void add_value_at(std::size_t value_index, std::any value)
Adds a value object.
std::size_t value_count() const
Returns the value count.
const std::any * value_at(std::size_t value_index) const
Returns the value object.
virtual ~storage()
Destroys the storage.
void set_check_at(std::size_t base_check_index, std::uint8_t check)
Sets a check value.
std::unique_ptr< storage > clone() const
Clones this storage.
std::int32_t base_at(std::size_t base_check_index) const
Returns the base value.
std::size_t base_check_size() const
Returns the base-check size.
A value serializer.
Definition value_serializer.hpp:22
A trie library.