diff --git a/c_api/impl/AuxIndexStructures_c.cpp b/c_api/impl/AuxIndexStructures_c.cpp index 534d5a0769..a7d4f4d5f5 100644 --- a/c_api/impl/AuxIndexStructures_c.cpp +++ b/c_api/impl/AuxIndexStructures_c.cpp @@ -19,6 +19,7 @@ using faiss::DistanceComputer; using faiss::IDSelector; using faiss::IDSelectorAnd; using faiss::IDSelectorBatch; +using faiss::IDSelectorBitmap; using faiss::IDSelectorNot; using faiss::IDSelectorOr; using faiss::IDSelectorRange; @@ -119,6 +120,23 @@ int faiss_IDSelectorBatch_new( CATCH_AND_HANDLE } +DEFINE_DESTRUCTOR(IDSelectorBitmap) + +DEFINE_GETTER(IDSelectorBitmap, size_t, n) +DEFINE_GETTER(IDSelectorBitmap, const uint8_t*, bitmap) + +int faiss_IDSelectorBitmap_new( + FaissIDSelectorBitmap** p_sel, + size_t n, + const uint8_t* bitmap) { + try { + *p_sel = reinterpret_cast( + new IDSelectorBitmap(n, bitmap)); + return 0; + } + CATCH_AND_HANDLE +} + int faiss_IDSelectorNot_new( FaissIDSelectorNot** p_sel, const FaissIDSelector* sel) { diff --git a/c_api/impl/AuxIndexStructures_c.h b/c_api/impl/AuxIndexStructures_c.h index 86b017a432..c4be6318bc 100644 --- a/c_api/impl/AuxIndexStructures_c.h +++ b/c_api/impl/AuxIndexStructures_c.h @@ -81,6 +81,17 @@ int faiss_IDSelectorBatch_new( size_t n, const idx_t* indices); +FAISS_DECLARE_CLASS(IDSelectorBitmap) +FAISS_DECLARE_DESTRUCTOR(IDSelectorBitmap) + +FAISS_DECLARE_GETTER(IDSelectorBitmap, size_t, n) +FAISS_DECLARE_GETTER(IDSelectorBitmap, const uint8_t*, bitmap) + +int faiss_IDSelectorBitmap_new( + FaissIDSelectorBitmap** p_sel, + size_t n, + const uint8_t* bitmap); + FAISS_DECLARE_CLASS(IDSelectorNot) int faiss_IDSelectorNot_new( FaissIDSelectorNot** p_sel,