IDS peak ICV v1.3.0
Loading...
Searching...
No Matches
peak_icv_archive.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <memory>
14#include <string>
15#include <vector>
16
19#include <peak_common_c/detail/peak_common_defines.h>
20
22#include <peak_icv_c/serialization/peak_icv_archive.h>
23
24namespace peak
25{
26namespace icv
27{
69 , public detail::IBackendAccessible<Archive>
70{
71public:
79 Archive();
80
88 ~Archive() override;
89
95 Archive(const Archive&) = delete;
96
102 Archive& operator=(const Archive&) = delete;
103
111 Archive(Archive&& other) noexcept;
112
122 Archive& operator=(Archive&& other) noexcept;
123
134 PEAK_COMMON_NO_DISCARD std::shared_ptr<IArchive> CreateArchive() const override;
135
145 PEAK_COMMON_NO_DISCARD bool HasKey(const std::string& key) const override;
146
156 PEAK_COMMON_NO_DISCARD ValueType GetValueType(const std::string& key) const override;
157
165 PEAK_COMMON_NO_DISCARD std::vector<std::string> GetKeys() const override;
166
178 PEAK_COMMON_NO_DISCARD size_t GetArrayCount(const std::string& key) const override;
179
188 void SetBool(const std::string& key, bool value) override;
189
198 void SetInt(const std::string& key, int64_t value) override;
199
208 void SetDouble(const std::string& key, double value) override;
209
218 void SetString(const std::string& key, const std::string& value) override;
219
228 void SetArchive(const std::string& key, const std::shared_ptr<IArchive>& value) override;
229
238 void SetBoolArray(const std::string& key, const std::vector<bool>& value) override;
239
248 void SetIntArray(const std::string& key, const std::vector<int64_t>& value) override;
249
258 void SetDoubleArray(const std::string& key, const std::vector<double>& value) override;
259
268 void SetStringArray(const std::string& key, const std::vector<std::string>& value) override;
269
278 void SetArchiveArray(const std::string& key, const std::vector<std::shared_ptr<IArchive>>& value) override;
279
280 // Getter methods for single values
281
291 PEAK_COMMON_NO_DISCARD bool GetBool(const std::string& key) const override;
292
302 PEAK_COMMON_NO_DISCARD int64_t GetInt(const std::string& key) const override;
303
313 PEAK_COMMON_NO_DISCARD double GetDouble(const std::string& key) const override;
314
324 PEAK_COMMON_NO_DISCARD std::string GetString(const std::string& key) const override;
325
335 PEAK_COMMON_NO_DISCARD std::shared_ptr<IArchive> GetArchive(const std::string& key) const override;
336
346 PEAK_COMMON_NO_DISCARD std::vector<bool> GetBoolArray(const std::string& key) const override;
347
357 PEAK_COMMON_NO_DISCARD std::vector<int64_t> GetIntArray(const std::string& key) const override;
358
368 PEAK_COMMON_NO_DISCARD std::vector<double> GetDoubleArray(const std::string& key) const override;
369
379 PEAK_COMMON_NO_DISCARD std::vector<std::string> GetStringArray(const std::string& key) const override;
380
390 PEAK_COMMON_NO_DISCARD std::vector<std::shared_ptr<IArchive>> GetArchiveArray(const std::string& key) const override;
391
392private:
393 friend peak::common::detail::BackendAccessor<Archive>;
394
395 explicit Archive(peak_icv_archive_handle handle);
396
397 PEAK_COMMON_NO_DISCARD peak_icv_archive_handle GetHandle() const override
398 {
399 return m_handle;
400 }
401
402 peak_icv_archive_handle m_handle{};
403};
404} /* namespace icv */
405} /* namespace peak */
406
Interface for a hierarchical key-value archive system.
ValueType
Enumerates supported value types that can be stored or queried in the archive.
A key-value store that implements the IArchive interface.
std::vector< int64_t > GetIntArray(const std::string &key) const override
Returns the array of integer values.
std::vector< std::shared_ptr< IArchive > > GetArchiveArray(const std::string &key) const override
Returns the array of nested archives.
void SetBoolArray(const std::string &key, const std::vector< bool > &value) override
Sets an array of boolean values.
double GetDouble(const std::string &key) const override
Returns the double precision floating point value.
void SetDouble(const std::string &key, double value) override
Sets a double precision floating point value.
Archive(const Archive &)=delete
Archive instances cannot be copied.
std::string GetString(const std::string &key) const override
Returns the string value.
void SetInt(const std::string &key, int64_t value) override
Sets an integer value.
std::shared_ptr< IArchive > GetArchive(const std::string &key) const override
Returns the nested archive.
std::vector< std::string > GetStringArray(const std::string &key) const override
Returns the array of string values.
std::vector< double > GetDoubleArray(const std::string &key) const override
Returns the array of double precision floating point values.
void SetString(const std::string &key, const std::string &value) override
Sets a string value.
void SetIntArray(const std::string &key, const std::vector< int64_t > &value) override
Sets an array of integer values.
Archive & operator=(const Archive &)=delete
Archive instances cannot be copy-assigned.
void SetArchive(const std::string &key, const std::shared_ptr< IArchive > &value) override
Sets a nested archive.
int64_t GetInt(const std::string &key) const override
Returns the integer value.
bool GetBool(const std::string &key) const override
Returns the boolean value.
size_t GetArrayCount(const std::string &key) const override
Retruns the number of elements in an array value.
ValueType GetValueType(const std::string &key) const override
Returns the type of value stored under a key.
void SetStringArray(const std::string &key, const std::vector< std::string > &value) override
Sets an array of string values.
~Archive() override
Virtual destructor.
std::shared_ptr< IArchive > CreateArchive() const override
Creates a new archive instance.
std::vector< std::string > GetKeys() const override
Returns all keys stored in the archive.
std::vector< bool > GetBoolArray(const std::string &key) const override
Returns the array of boolean values.
Archive()
Constructs an empty Archive instance.
bool HasKey(const std::string &key) const override
Checks whether a key exists in the archive.
void SetBool(const std::string &key, bool value) override
Sets a boolean value.
void SetDoubleArray(const std::string &key, const std::vector< double > &value) override
Sets an array of double precision floating point values.
void SetArchiveArray(const std::string &key, const std::vector< std::shared_ptr< IArchive > > &value) override
Sets an array of nested archives.