@@ -128,7 +128,10 @@ void create_empty_for_matrix(
128128 size_t cols,
129129 size_t row_extent,
130130 size_t col_extent,
131- std::optional<tiledb_filter_type_t > filter = std::nullopt ) {
131+ tiledb_filter_type_t filter) {
132+ tiledb::FilterList filter_list (ctx);
133+ filter_list.add_filter ({ctx, filter});
134+
132135 tiledb::Domain domain (ctx);
133136 domain
134137 .add_dimensions (tiledb::Dimension::create<int >(
@@ -137,18 +140,13 @@ void create_empty_for_matrix(
137140 ctx, " cols" , {{0 , std::max (0 , (int )cols - 1 )}}, col_extent));
138141
139142 tiledb::ArraySchema schema (ctx, TILEDB_DENSE);
140-
141143 auto order = std::is_same_v<LayoutPolicy, stdx::layout_right> ?
142144 TILEDB_ROW_MAJOR :
143145 TILEDB_COL_MAJOR;
144146 schema.set_domain (domain).set_order ({{order, order}});
145- schema.add_attribute (tiledb::Attribute::create<T>(ctx, " values" ));
146-
147- if (filter) {
148- tiledb::FilterList fl (ctx);
149- fl.add_filter (tiledb::Filter (ctx, *filter));
150- schema.set_coords_filter_list (fl);
151- }
147+ schema.add_attribute (
148+ tiledb::Attribute::create<T>(ctx, " values" , filter_list));
149+ schema.set_coords_filter_list (filter_list);
152150
153151 tiledb::Array::create (uri, schema);
154152}
@@ -161,7 +159,7 @@ void create_matrix(
161159 const tiledb::Context& ctx,
162160 const Matrix<T, LayoutPolicy, I>& A,
163161 const std::string& uri,
164- std::optional< tiledb_filter_type_t > filter = std:: nullopt ) {
162+ tiledb_filter_type_t filter) {
165163 // @todo: make this a parameter
166164 size_t num_parts = 10 ;
167165
@@ -201,7 +199,7 @@ void write_matrix(
201199 scoped_timer _{tdb_func__ + " " + std::string{uri}};
202200
203201 if (create) {
204- create_matrix<T, LayoutPolicy, I>(ctx, A, uri);
202+ create_matrix<T, LayoutPolicy, I>(ctx, A, uri, TILEDB_FILTER_NONE );
205203 }
206204
207205 if (A.num_rows () == 0 || A.num_cols () == 0 ) {
@@ -252,17 +250,20 @@ void create_empty_for_vector(
252250 const tiledb::Context& ctx,
253251 const std::string& uri,
254252 size_t rows,
255- size_t row_extent,
256- std::optional<tiledb_filter_type_t > filter = std::nullopt ) {
253+ int32_t row_extent,
254+ tiledb_filter_type_t filter) {
255+ tiledb::FilterList filter_list (ctx);
256+ filter_list.add_filter ({ctx, filter});
257+
257258 tiledb::Domain domain (ctx);
258- domain.add_dimensions (tiledb::Dimension::create<int >(
259+ domain.add_dimensions (tiledb::Dimension::create<int32_t >(
259260 ctx, " rows" , {{0 , std::max (0 , (int )rows - 1 )}}, row_extent));
260261
261- // The array will be dense.
262262 tiledb::ArraySchema schema (ctx, TILEDB_DENSE);
263263 schema.set_domain (domain).set_order ({{TILEDB_COL_MAJOR, TILEDB_COL_MAJOR}});
264-
265- schema.add_attribute (tiledb::Attribute::create<feature_type>(ctx, " values" ));
264+ schema.add_attribute (
265+ tiledb::Attribute::create<feature_type>(ctx, " values" , filter_list));
266+ schema.set_coords_filter_list (filter_list);
266267
267268 tiledb::Array::create (uri, schema);
268269}
@@ -279,7 +280,7 @@ void create_vector(
279280 const tiledb::Context& ctx,
280281 const V& v,
281282 const std::string& uri,
282- std::optional< tiledb_filter_type_t > filter = std:: nullopt ) {
283+ tiledb_filter_type_t filter) {
283284 using value_type = std::ranges::range_value_t <V>;
284285
285286 size_t num_parts = 10 ;
@@ -313,7 +314,7 @@ void write_vector(
313314 using value_type = std::remove_const_t <std::ranges::range_value_t <V>>;
314315
315316 if (create) {
316- create_vector (ctx, v, uri);
317+ create_vector (ctx, v, uri, TILEDB_FILTER_NONE );
317318 }
318319
319320 if (size (v) == 0 ) {
0 commit comments