From 03f70c88aedc03ab229e48ffce3a479d89cbda60 Mon Sep 17 00:00:00 2001 From: FuexFollets Date: Tue, 30 Jan 2024 09:04:52 -0500 Subject: [PATCH] Implemented cereal serialization bindings for AnnoyIndex --- src/lexocraft/cereal_annoy_index.hpp | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/lexocraft/cereal_annoy_index.hpp diff --git a/src/lexocraft/cereal_annoy_index.hpp b/src/lexocraft/cereal_annoy_index.hpp new file mode 100644 index 0000000..1ac53b7 --- /dev/null +++ b/src/lexocraft/cereal_annoy_index.hpp @@ -0,0 +1,32 @@ +#ifndef LEXOCRAFT_CEREAL_ANNOY_HPP +#define LEXOCRAFT_CEREAL_ANNOY_HPP + +#include +#include +#include +#include + +namespace cereal { + template + inline void + save(Archive& archive, + const Annoy::AnnoyIndex annoy_index) { + archive(annoy_index.serialize()); + } + + template + inline void load(Archive& archive, + Annoy::AnnoyIndex& annoy_index) { + std::string serialized_index; + archive(serialized_index); + + const std::vector bytes(serialized_index.begin(), + serialized_index.end()); + + annoy_index.deserialize(bytes.data()); + } +} // namespace cereal + +#endif