2222
2323namespace knncolle_annoy {
2424
25+ /* *
26+ * Name of the Annoy algorithm when registering a loading function to `knncolle::load_prebuilt_registry()`.
27+ */
28+ inline static constexpr const char * annoy_prebuilt_save_name = " knncolle_annoy::Annoy" ;
29+
2530/* *
2631 * @brief Options for `AnnoyBuilder()`.
2732 */
@@ -323,18 +328,18 @@ class AnnoyPrebuilt final : public knncolle::Prebuilt<Index_, Data_, Distance_>
323328
324329public:
325330 void save (const std::string& prefix) const {
326- knncolle::quick_save (prefix + " ALGORITHM" , save_name , std::strlen (save_name ));
327- knncolle::quick_save (prefix + " num_obs " , &my_obs, 1 );
328- knncolle::quick_save (prefix + " num_dim " , &my_dim, 1 );
329- knncolle::quick_save (prefix + " search_mult " , &my_search_mult, 1 );
331+ knncolle::quick_save (prefix + " ALGORITHM" , annoy_prebuilt_save_name , std::strlen (annoy_prebuilt_save_name ));
332+ knncolle::quick_save (prefix + " NUM_OBS " , &my_obs, 1 );
333+ knncolle::quick_save (prefix + " NUM_DIM " , &my_dim, 1 );
334+ knncolle::quick_save (prefix + " SEARCH_MULT " , &my_search_mult, 1 );
330335
331336 knncolle::NumericType types[2 ];
332337 types[0 ] = knncolle::get_numeric_type<AnnoyIndex_>();
333338 types[1 ] = knncolle::get_numeric_type<AnnoyData_>();
334- knncolle::quick_save (prefix + " types " , types, 2 );
339+ knncolle::quick_save (prefix + " TYPES " , types, 2 );
335340
336341 const auto dname = get_distance_name<AnnoyDistance_>();
337- knncolle::quick_save (prefix + " distance " , dname, std::strlen (dname));
342+ knncolle::quick_save (prefix + " DISTANCE " , dname, std::strlen (dname));
338343
339344 // Handling custom Annoy types.
340345 auto & icust = custom_save_for_annoy_index<AnnoyIndex_>();
@@ -357,15 +362,15 @@ class AnnoyPrebuilt final : public knncolle::Prebuilt<Index_, Data_, Distance_>
357362
358363 // For reasons unknown to us, AnnoyIndex::save() is not const, so we have to do it manually.
359364 // Hopefully this will be fixed in the future.
360- const auto idxpath = prefix + " index " ;
365+ const auto idxpath = prefix + " INDEX " ;
361366 knncolle::quick_save (idxpath, reinterpret_cast <char *>(my_index.get_nodes ()), sanisizer::product<std::streamsize>(my_index.get_s (), my_index.get_n_nodes ()));
362367 }
363368
364369 AnnoyPrebuilt (const std::string prefix, std::size_t ndim) : my_dim(ndim), my_index(ndim) {
365- knncolle::quick_load (prefix + " num_obs " , &my_obs, 1 );
366- knncolle::quick_load (prefix + " search_mult " , &my_search_mult, 1 );
370+ knncolle::quick_load (prefix + " NUM_OBS " , &my_obs, 1 );
371+ knncolle::quick_load (prefix + " SEARCH_MULT " , &my_search_mult, 1 );
367372
368- const auto idxpath = prefix + " index " ;
373+ const auto idxpath = prefix + " INDEX " ;
369374 char * errbuf = NULL ;
370375 if (!my_index.load (idxpath.c_str (), true , &errbuf)) {
371376 std::runtime_error ex (errbuf);
0 commit comments