11 #include <type_traits>
14 #include "flutter/fml/macros.h"
19 class ArchiveLocation;
20 class ArchiveDatabase;
24 Archive(
const std::string& path);
31 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
32 [[nodiscard]]
bool Write(
const T& archivable) {
34 return ArchiveInstance(def, archivable).has_value();
38 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
41 return UnarchiveInstance(def, name, archivable);
47 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
50 return UnarchiveInstances(def, stepper);
54 std::unique_ptr<ArchiveDatabase> database_;
55 int64_t transaction_count_ = 0;
59 std::optional<int64_t > ArchiveInstance(
63 bool UnarchiveInstance(
const ArchiveDef& definition,
67 size_t UnarchiveInstances(
const ArchiveDef& definition,
71 FML_DISALLOW_COPY_AND_ASSIGN(
Archive);