From 97f120757af0b7ee0faba5e8a5789d294ef68f70 Mon Sep 17 00:00:00 2001 From: Aalekh Patel Date: Sun, 24 Mar 2024 12:13:50 -0500 Subject: [PATCH 1/4] Add support for cloning binary indexes. Signed-off-by: Aalekh Patel --- c_api/clone_index_c.cpp | 10 ++++++++++ c_api/clone_index_c.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/c_api/clone_index_c.cpp b/c_api/clone_index_c.cpp index 8211156aaa..6ca495b27f 100644 --- a/c_api/clone_index_c.cpp +++ b/c_api/clone_index_c.cpp @@ -14,6 +14,7 @@ #include "macros_impl.h" using faiss::Index; +using faiss::IndexBinary; int faiss_clone_index(const FaissIndex* idx, FaissIndex** p_out) { try { @@ -22,3 +23,12 @@ int faiss_clone_index(const FaissIndex* idx, FaissIndex** p_out) { } CATCH_AND_HANDLE } + + +int faiss_clone_index_binary(const FaissIndexBinary* idx, FaissIndexBinary** p_out) { + try { + auto out = faiss::clone_binary_index(reinterpret_cast(idx)); + *p_out = reinterpret_cast(out); + } + CATCH_AND_HANDLE +} \ No newline at end of file diff --git a/c_api/clone_index_c.h b/c_api/clone_index_c.h index 3d0bd6745f..98d9690d28 100644 --- a/c_api/clone_index_c.h +++ b/c_api/clone_index_c.h @@ -14,6 +14,7 @@ #include #include "Index_c.h" +#include "IndexBinary_c.h" #include "faiss_c.h" #ifdef __cplusplus @@ -25,6 +26,9 @@ extern "C" { /** Clone an index. This is equivalent to `faiss::clone_index` */ int faiss_clone_index(const FaissIndex*, FaissIndex** p_out); +/** Clone a binary index. This is equivalent to `faiss::clone_index_binary` */ +int faiss_clone_index_binary(const FaissIndexBinary*, FaissIndexBinary** p_out); + #ifdef __cplusplus } #endif From ccf72b3eb670de690d56431b2bba9459487b607f Mon Sep 17 00:00:00 2001 From: Aalekh Patel Date: Sun, 24 Mar 2024 12:59:42 -0500 Subject: [PATCH 2/4] Add support for creating binary indexes. Signed-off-by: Aalekh Patel --- c_api/index_factory_c.cpp | 17 ++++++++++++++++- c_api/index_factory_c.h | 11 ++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/c_api/index_factory_c.cpp b/c_api/index_factory_c.cpp index e9abf141f8..dd1a37b1a6 100644 --- a/c_api/index_factory_c.cpp +++ b/c_api/index_factory_c.cpp @@ -15,7 +15,7 @@ using faiss::Index; -/** Build and index with the sequence of processing steps described in +/** Build an index with the sequence of processing steps described in * the string. */ int faiss_index_factory( @@ -29,3 +29,18 @@ int faiss_index_factory( } CATCH_AND_HANDLE } + + +/** Build an index with the sequence of processing steps described in + * the string. + */ +int faiss_index_binary_factory( + FaissIndexBinary** p_index, + int d, + const char* description) { + try { + *p_index = reinterpret_cast(faiss::index_binary_factory( + d, description)); + } + CATCH_AND_HANDLE +} \ No newline at end of file diff --git a/c_api/index_factory_c.h b/c_api/index_factory_c.h index 11fb0faa16..d883fb2b57 100644 --- a/c_api/index_factory_c.h +++ b/c_api/index_factory_c.h @@ -12,13 +12,14 @@ #define FAISS_INDEX_FACTORY_C_H #include "Index_c.h" +#include "IndexBinary_c.h" #include "faiss_c.h" #ifdef __cplusplus extern "C" { #endif -/** Build and index with the sequence of processing steps described in +/** Build an index with the sequence of processing steps described in * the string. */ int faiss_index_factory( @@ -27,6 +28,14 @@ int faiss_index_factory( const char* description, FaissMetricType metric); +/** Build a binary index with the sequence of processing steps described in + * the string. + */ +int faiss_index_binary_factory( + FaissIndexBinary** p_index, + int d, + const char* description); + #ifdef __cplusplus } #endif From 1ce16ab8bbe541285a3e2e99f8f666acddec3e86 Mon Sep 17 00:00:00 2001 From: Aalekh Patel Date: Mon, 25 Mar 2024 09:49:42 -0500 Subject: [PATCH 3/4] Tidy the files using clang-format --- c_api/clone_index_c.cpp | 8 +++++--- c_api/clone_index_c.h | 2 +- c_api/index_factory_c.cpp | 5 ++--- c_api/index_factory_c.h | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/c_api/clone_index_c.cpp b/c_api/clone_index_c.cpp index 6ca495b27f..606e5f9b0a 100644 --- a/c_api/clone_index_c.cpp +++ b/c_api/clone_index_c.cpp @@ -24,10 +24,12 @@ int faiss_clone_index(const FaissIndex* idx, FaissIndex** p_out) { CATCH_AND_HANDLE } - -int faiss_clone_index_binary(const FaissIndexBinary* idx, FaissIndexBinary** p_out) { +int faiss_clone_index_binary( + const FaissIndexBinary* idx, + FaissIndexBinary** p_out) { try { - auto out = faiss::clone_binary_index(reinterpret_cast(idx)); + auto out = faiss::clone_binary_index( + reinterpret_cast(idx)); *p_out = reinterpret_cast(out); } CATCH_AND_HANDLE diff --git a/c_api/clone_index_c.h b/c_api/clone_index_c.h index 98d9690d28..d2da35b82f 100644 --- a/c_api/clone_index_c.h +++ b/c_api/clone_index_c.h @@ -13,8 +13,8 @@ #define FAISS_CLONE_INDEX_C_H #include -#include "Index_c.h" #include "IndexBinary_c.h" +#include "Index_c.h" #include "faiss_c.h" #ifdef __cplusplus diff --git a/c_api/index_factory_c.cpp b/c_api/index_factory_c.cpp index dd1a37b1a6..3a1ab9bab9 100644 --- a/c_api/index_factory_c.cpp +++ b/c_api/index_factory_c.cpp @@ -30,7 +30,6 @@ int faiss_index_factory( CATCH_AND_HANDLE } - /** Build an index with the sequence of processing steps described in * the string. */ @@ -39,8 +38,8 @@ int faiss_index_binary_factory( int d, const char* description) { try { - *p_index = reinterpret_cast(faiss::index_binary_factory( - d, description)); + *p_index = reinterpret_cast( + faiss::index_binary_factory(d, description)); } CATCH_AND_HANDLE } \ No newline at end of file diff --git a/c_api/index_factory_c.h b/c_api/index_factory_c.h index d883fb2b57..ccd58ac778 100644 --- a/c_api/index_factory_c.h +++ b/c_api/index_factory_c.h @@ -11,8 +11,8 @@ #ifndef FAISS_INDEX_FACTORY_C_H #define FAISS_INDEX_FACTORY_C_H -#include "Index_c.h" #include "IndexBinary_c.h" +#include "Index_c.h" #include "faiss_c.h" #ifdef __cplusplus From 3d2dde17ac167e2fb1719b43c98c66d5f46b12e2 Mon Sep 17 00:00:00 2001 From: Aalekh Patel Date: Thu, 28 Mar 2024 11:52:21 -0500 Subject: [PATCH 4/4] Add line breaks. --- c_api/clone_index_c.cpp | 2 +- c_api/index_factory_c.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/c_api/clone_index_c.cpp b/c_api/clone_index_c.cpp index 606e5f9b0a..93d3c8288e 100644 --- a/c_api/clone_index_c.cpp +++ b/c_api/clone_index_c.cpp @@ -33,4 +33,4 @@ int faiss_clone_index_binary( *p_out = reinterpret_cast(out); } CATCH_AND_HANDLE -} \ No newline at end of file +} diff --git a/c_api/index_factory_c.cpp b/c_api/index_factory_c.cpp index 3a1ab9bab9..6a1b100d66 100644 --- a/c_api/index_factory_c.cpp +++ b/c_api/index_factory_c.cpp @@ -42,4 +42,4 @@ int faiss_index_binary_factory( faiss::index_binary_factory(d, description)); } CATCH_AND_HANDLE -} \ No newline at end of file +}