Skip to content

Commit 5aa7031

Browse files
committed
function_objects.hpp
1 parent 5dc6081 commit 5aa7031

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

include/jsoncons/typed_array.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class slice
207207
}
208208
};
209209

210-
enum class typed_array_layout_kind {row_major, column_major};
210+
enum class mdarray_order {row_major, column_major};
211211

212212
struct row_major_layout
213213
{
@@ -341,7 +341,7 @@ class mdarray_iterator : public typed_array_iterator
341341
bool done_{false};
342342
public:
343343
template <typename Layout= jsoncons::row_major_layout>
344-
mdarray_iterator(jsoncons::span<ValueType> data, const std::vector<std::size_t>& extents,
344+
mdarray_iterator(jsoncons::span<ValueType> data, jsoncons::span<const std::size_t> extents,
345345
Layout layout = Layout())
346346
: data_{data}, dimensions_(extents.size(), mdarray_dimension<ValueType>{})
347347
{

include/jsoncons_ext/cbor/cbor_parser.hpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ class basic_cbor_parser : public ser_context
142142
byte_string_type bytes_buffer_;
143143
std::vector<parse_state,parse_state_allocator_type> state_stack_;
144144
bool is_typed_array_{false};
145+
bool is_multi_dim_{false};
146+
mdarray_order order_{};
145147
std::unique_ptr<typed_array_iterator> typed_array_iter_;
146148
typed_array_element_types element_type_{};
147149
semantic_tag typed_array_tag_{};
@@ -232,6 +234,21 @@ class basic_cbor_parser : public ser_context
232234
return is_typed_array_;
233235
}
234236

237+
bool is_multi_dim() const
238+
{
239+
return is_multi_dim_;
240+
}
241+
242+
mdarray_order order() const
243+
{
244+
return order_;
245+
}
246+
247+
jsoncons::span<const std::size_t> extents() const
248+
{
249+
return jsoncons::span<const std::size_t>(extents_.data(), extents_.size());
250+
}
251+
235252
template <typename Sourceable>
236253
void reset(Sourceable&& source)
237254
{
@@ -297,6 +314,8 @@ class basic_cbor_parser : public ser_context
297314
void to_end_array()
298315
{
299316
is_typed_array_ = false;
317+
is_multi_dim_ = false;
318+
order_ = mdarray_order{};
300319
state_stack_.pop_back();
301320
}
302321

@@ -672,9 +691,11 @@ class basic_cbor_parser : public ser_context
672691
more_ = !cursor_mode_;
673692
break;
674693
case 40: // row major storage
694+
order_ = mdarray_order::row_major;
675695
produce_begin_multi_dim(visitor, semantic_tag::multi_dim_row_major, ec);
676696
break;
677697
case 1040: // column major storage
698+
order_ = mdarray_order::column_major;
678699
produce_begin_multi_dim(visitor, semantic_tag::multi_dim_column_major, ec);
679700
break;
680701
default:

0 commit comments

Comments
 (0)