5 #ifndef FLUTTER_IMPELLER_ARCHIVIST_ARCHIVE_H_
6 #define FLUTTER_IMPELLER_ARCHIVIST_ARCHIVE_H_
12 #include <type_traits>
18 class ArchiveLocation;
19 class ArchiveDatabase;
23 explicit Archive(
const std::string& path);
30 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
31 [[nodiscard]]
bool Write(
const T& archivable) {
33 return ArchiveInstance(def, archivable).has_value();
37 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
40 return UnarchiveInstance(def, name, archivable);
46 class = std::enable_if_t<std::is_base_of<Archivable, T>::value>>
49 return UnarchiveInstances(def, stepper);
53 std::unique_ptr<ArchiveDatabase> database_;
54 int64_t transaction_count_ = 0;
58 std::optional<int64_t > ArchiveInstance(
62 bool UnarchiveInstance(
const ArchiveDef& definition,
66 size_t UnarchiveInstances(
const ArchiveDef& definition,
77 #endif // FLUTTER_IMPELLER_ARCHIVIST_ARCHIVE_H_