12#ifndef __cxz_h5_table_cc_h__
13#define __cxz_h5_table_cc_h__
25 auto ri = std::make_shared<CIndex>(mRecords);
32 template <
typename...
Ts>
40 template <
typename...
Ts>
44 constexpr SizeT N =
sizeof...(Ts);
56 "wrong size for field " <<
i <<
": " <<
sizeof(
tget<i>(x))
60 "wrong type for field " <<
i
66 template <
typename...
Ts>
74 template <
typename...
Ts>
77 constexpr SizeT N =
sizeof...(Ts);
79 "tried to initialize an existing table");
82 for(
SizeT i = 0;
i != fields.size(); ++
i){
95 ( [&](
auto i) {
return sizeof(
tget<i>(x)); },
104 template <
typename...
Ts>
108 if(mRecords ==
nullptr){
109 initTable(1, &
t,
sizeof(
t),
sizeof(
t));
117 template <
typename...
Ts>
120 CXZ_ASSERT(isOpen(),
"attempt to read table that has not been opened");
122 H5TBread_table(mParent->id(), mName.c_str(), mTypesize, mOffsets.data(),
123 mSizes.data(),
out.data());
#define CXZ_ERROR(errmsg)
#define CXZ_ASSERT(statement, errmsg)
virtual const T * data() const override
STable(const String &name, const ContentBase *_parent)
MArray< Tuple< Ts... > > read() const
STable & appendRecord(const Tuple< Ts... > &t)
STable & initFields(const Arr< String, sizeof...(Ts)> &fnames)
Table & appendRecords(SizeT n, const void *data)
decltype(auto) iterRecords(F &&f) const
TypeId template declaration.
SizeT getTupleOffset(const Tuple< Ts... > &t, CSizeT< N > i)
Sptr< RangeBase > RangePtr
std::vector< T, Allocator< T > > Vector
decltype(auto) xpr(const Sptr< I > &i)
Sptr< Range > rangeCast(const RangePtr r)
constexpr decltype(auto) operation(F &&f, const Ops &... ops)