Lines Matching defs:array

19 #include <array>
31 namespace array {
34 inline std::array<T, N1+N2> concat(
35 std::array<T, N1>&& a1,
36 std::array<T, N2>&& a2,
43 inline std::array<T, N1+N2> concat(std::array<T, N1>&& a1, std::array<T, N2>&& a2) {
49 static std::array<T, N> as(msgpack::object const& o) {
50 msgpack::object* p = o.via.array.ptr + N - 1;
51 return concat(as_impl<T, N-1>::as(o), std::array<T, 1>{{p->as<T>()}});
57 static std::array<T, 1> as(msgpack::object const& o) {
58 msgpack::object* p = o.via.array.ptr;
59 return std::array<T, 1>{{p->as<T>()}};
65 static std::array<T, 0> as(msgpack::object const&) {
66 return std::array<T, 0>();
70 } // namespace array
75 struct as<std::array<T, N>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
76 std::array<T, N> operator()(msgpack::object const& o) const {
78 if(o.via.array.size != N) { throw msgpack::type_error(); }
79 return detail::array::as_impl<T, N>::as(o);
84 struct convert<std::array<T, N>> {
85 msgpack::object const& operator()(msgpack::object const& o, std::array<T, N>& v) const {
87 if(o.via.array.size != N) { throw msgpack::type_error(); }
88 if(o.via.array.size > 0) {
89 msgpack::object* p = o.via.array.ptr;
90 msgpack::object* const pend = o.via.array.ptr + o.via.array.size;
103 struct pack<std::array<T, N>> {
105 msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::array<T, N>& v) const {
114 struct object_with_zone<std::array<T, N>> {
115 void operator()(msgpack::object::with_zone& o, const std::array<T, N>& v) const {
118 o.via.array.ptr = nullptr;
119 o.via.array.size = 0;
123 o.via.array.size = size;
124 o.via.array.ptr = p;