@@ -55,28 +55,25 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
5555 ~DynamicVamanaIndexManagerBase () override = default ;
5656
5757 Status add (size_t n, const size_t * labels, const float * x) noexcept override {
58- SVS_RUNTIME_TRY_BEGIN
59- svs::data::ConstSimpleDataView<float > data{x, n, impl_->dimensions ()};
60- std::span<const size_t > lbls (labels, n);
61- impl_->add (data, lbls);
62- return Status_Ok;
63- SVS_RUNTIME_TRY_END
58+ return runtime_error_wrapper ([&] {
59+ svs::data::ConstSimpleDataView<float > data{x, n, impl_->dimensions ()};
60+ std::span<const size_t > lbls (labels, n);
61+ impl_->add (data, lbls);
62+ });
6463 }
6564
6665 Status
6766 remove_selected (size_t * num_removed, const IDFilter& selector) noexcept override {
68- SVS_RUNTIME_TRY_BEGIN
69- *num_removed = impl_->remove_selected (selector);
70- return Status_Ok;
71- SVS_RUNTIME_TRY_END
67+ return runtime_error_wrapper ([&] {
68+ *num_removed = impl_->remove_selected (selector);
69+ });
7270 }
7371
7472 Status remove (size_t n, const size_t * labels) noexcept override {
75- SVS_RUNTIME_TRY_BEGIN
76- std::span<const size_t > lbls (labels, n);
77- impl_->remove (lbls);
78- return Status_Ok;
79- SVS_RUNTIME_TRY_END
73+ return runtime_error_wrapper ([&] {
74+ std::span<const size_t > lbls (labels, n);
75+ impl_->remove (lbls);
76+ });
8077 }
8178
8279 Status search (
@@ -88,12 +85,11 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
8885 const SearchParams* params = nullptr ,
8986 IDFilter* filter = nullptr
9087 ) const noexcept override {
91- SVS_RUNTIME_TRY_BEGIN
92- // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
93- // here
94- impl_->search (n, x, k, distances, labels, params, filter);
95- return Status_Ok;
96- SVS_RUNTIME_TRY_END
88+ return runtime_error_wrapper ([&] {
89+ // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
90+ // here
91+ impl_->search (n, x, k, distances, labels, params, filter);
92+ });
9793 }
9894
9995 Status range_search (
@@ -104,26 +100,19 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
104100 const SearchParams* params = nullptr ,
105101 IDFilter* filter = nullptr
106102 ) const noexcept override {
107- SVS_RUNTIME_TRY_BEGIN
108- // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
109- // here
110- impl_->range_search (n, x, radius, results, params, filter);
111- return Status_Ok;
112- SVS_RUNTIME_TRY_END
103+ return runtime_error_wrapper ([&] {
104+ // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
105+ // here
106+ impl_->range_search (n, x, radius, results, params, filter);
107+ });
113108 }
114109
115110 Status reset () noexcept override {
116- SVS_RUNTIME_TRY_BEGIN
117- impl_->reset ();
118- return Status_Ok;
119- SVS_RUNTIME_TRY_END
111+ return runtime_error_wrapper ([&] { impl_->reset (); });
120112 }
121113
122114 Status save (std::ostream& out) const noexcept override {
123- SVS_RUNTIME_TRY_BEGIN
124- impl_->save (out);
125- return Status_Ok;
126- SVS_RUNTIME_TRY_END
115+ return runtime_error_wrapper ([&] { impl_->save (out); });
127116 }
128117};
129118
@@ -146,20 +135,16 @@ Status DynamicVamanaIndex::build(
146135 const DynamicVamanaIndex::SearchParams& default_search_params
147136) noexcept {
148137 *index = nullptr ;
149- SVS_RUNTIME_TRY_BEGIN
150- auto impl = std::make_unique<DynamicVamanaIndexImpl>(
151- dim, metric, storage_kind, params, default_search_params
152- );
153- *index = new DynamicVamanaIndexManager{std::move (impl)};
154- return Status_Ok;
155- SVS_RUNTIME_TRY_END
138+ return runtime_error_wrapper ([&] {
139+ auto impl = std::make_unique<DynamicVamanaIndexImpl>(
140+ dim, metric, storage_kind, params, default_search_params
141+ );
142+ *index = new DynamicVamanaIndexManager{std::move (impl)};
143+ });
156144}
157145
158146Status DynamicVamanaIndex::destroy (DynamicVamanaIndex* index) noexcept {
159- SVS_RUNTIME_TRY_BEGIN
160- delete index;
161- return Status_Ok;
162- SVS_RUNTIME_TRY_END
147+ return runtime_error_wrapper ([&] { delete index; });
163148}
164149
165150Status DynamicVamanaIndex::load (
@@ -169,12 +154,11 @@ Status DynamicVamanaIndex::load(
169154 StorageKind storage_kind
170155) noexcept {
171156 *index = nullptr ;
172- SVS_RUNTIME_TRY_BEGIN
173- std::unique_ptr<DynamicVamanaIndexImpl> impl{
174- DynamicVamanaIndexImpl::load (in, metric, storage_kind)};
175- *index = new DynamicVamanaIndexManager{std::move (impl)};
176- return Status_Ok;
177- SVS_RUNTIME_TRY_END
157+ return runtime_error_wrapper ([&] {
158+ std::unique_ptr<DynamicVamanaIndexImpl> impl{
159+ DynamicVamanaIndexImpl::load (in, metric, storage_kind)};
160+ *index = new DynamicVamanaIndexManager{std::move (impl)};
161+ });
178162}
179163
180164// Specialization to build LeanVec-based Vamana index with specified leanvec dims
@@ -188,13 +172,12 @@ Status DynamicVamanaIndexLeanVec::build(
188172 const DynamicVamanaIndex::SearchParams& default_search_params
189173) noexcept {
190174 *index = nullptr ;
191- SVS_RUNTIME_TRY_BEGIN
192- auto impl = std::make_unique<DynamicVamanaIndexLeanVecImpl>(
193- dim, metric, storage_kind, leanvec_dims, params, default_search_params
194- );
195- *index = new DynamicVamanaIndexLeanVecImplManager{std::move (impl)};
196- return Status_Ok;
197- SVS_RUNTIME_TRY_END
175+ return runtime_error_wrapper ([&] {
176+ auto impl = std::make_unique<DynamicVamanaIndexLeanVecImpl>(
177+ dim, metric, storage_kind, leanvec_dims, params, default_search_params
178+ );
179+ *index = new DynamicVamanaIndexLeanVecImplManager{std::move (impl)};
180+ });
198181}
199182
200183// Specialization to build LeanVec-based Vamana index with provided training data
@@ -208,15 +191,14 @@ Status DynamicVamanaIndexLeanVec::build(
208191 const DynamicVamanaIndex::SearchParams& default_search_params
209192) noexcept {
210193 *index = nullptr ;
211- SVS_RUNTIME_TRY_BEGIN
212- auto training_data_impl =
213- static_cast <const LeanVecTrainingDataManager*>(training_data)->impl_ ;
214- auto impl = std::make_unique<DynamicVamanaIndexLeanVecImpl>(
215- dim, metric, storage_kind, training_data_impl, params, default_search_params
216- );
217- *index = new DynamicVamanaIndexLeanVecImplManager{std::move (impl)};
218- return Status_Ok;
219- SVS_RUNTIME_TRY_END
194+ return runtime_error_wrapper ([&] {
195+ auto training_data_impl =
196+ static_cast <const LeanVecTrainingDataManager*>(training_data)->impl_ ;
197+ auto impl = std::make_unique<DynamicVamanaIndexLeanVecImpl>(
198+ dim, metric, storage_kind, training_data_impl, params, default_search_params
199+ );
200+ *index = new DynamicVamanaIndexLeanVecImplManager{std::move (impl)};
201+ });
220202}
221203
222204} // namespace runtime
0 commit comments