#include "index.h" #include "abstract_graph_store.h" #include "in_mem_graph_store.h" namespace diskann { class IndexFactory { public: DISKANN_DLLEXPORT explicit IndexFactory(const IndexConfig &config); DISKANN_DLLEXPORT std::unique_ptr create_instance(); private: void check_config(); template std::unique_ptr> construct_datastore(DataStoreStrategy stratagy, size_t num_points, size_t dimension); std::unique_ptr construct_graphstore(GraphStoreStrategy stratagy, size_t size); template std::unique_ptr create_instance(); std::unique_ptr create_instance(const std::string &data_type, const std::string &tag_type, const std::string &label_type); template std::unique_ptr create_instance(const std::string &tag_type, const std::string &label_type); template std::unique_ptr create_instance(const std::string &label_type); std::unique_ptr _config; }; } // namespace diskann