/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ // Copyright 2004-present Facebook. All Rights Reserved. // -*- c++ -*- #include "AutoTune_c.h" #include #include #include "macros_impl.h" using faiss::Index; using faiss::ParameterRange; using faiss::ParameterSpace; const char* faiss_ParameterRange_name(const FaissParameterRange* range) { return reinterpret_cast(range)->name.c_str(); } void faiss_ParameterRange_values( FaissParameterRange* range, double** p_values, size_t* p_size) { auto& values = reinterpret_cast(range)->values; *p_values = values.data(); *p_size = values.size(); } int faiss_ParameterSpace_new(FaissParameterSpace** space) { try { auto new_space = new ParameterSpace(); *space = reinterpret_cast(new_space); } CATCH_AND_HANDLE } DEFINE_DESTRUCTOR(ParameterSpace) size_t faiss_ParameterSpace_n_combinations(const FaissParameterSpace* space) { return reinterpret_cast(space)->n_combinations(); } int faiss_ParameterSpace_combination_name( const FaissParameterSpace* space, size_t cno, char* char_buffer, size_t size) { try { auto rep = reinterpret_cast(space) ->combination_name(cno); strncpy(char_buffer, rep.c_str(), size); } CATCH_AND_HANDLE } int faiss_ParameterSpace_set_index_parameters( const FaissParameterSpace* space, FaissIndex* cindex, const char* param_string) { try { auto index = reinterpret_cast(cindex); reinterpret_cast(space)->set_index_parameters( index, param_string); } CATCH_AND_HANDLE } /// set a combination of parameters on an index int faiss_ParameterSpace_set_index_parameters_cno( const FaissParameterSpace* space, FaissIndex* cindex, size_t cno) { try { auto index = reinterpret_cast(cindex); reinterpret_cast(space)->set_index_parameters( index, cno); } CATCH_AND_HANDLE } int faiss_ParameterSpace_set_index_parameter( const FaissParameterSpace* space, FaissIndex* cindex, const char* name, double value) { try { auto index = reinterpret_cast(cindex); reinterpret_cast(space)->set_index_parameter( index, name, value); } CATCH_AND_HANDLE } void faiss_ParameterSpace_display(const FaissParameterSpace* space) { reinterpret_cast(space)->display(); } int faiss_ParameterSpace_add_range( FaissParameterSpace* space, const char* name, FaissParameterRange** p_range) { try { ParameterRange& range = reinterpret_cast(space)->add_range(name); if (p_range) { *p_range = reinterpret_cast(&range); } } CATCH_AND_HANDLE }