22 Expects(
d !=
nullptr);
29 Expects(
d !=
nullptr);
30 Expects(
res !=
nullptr);
31 *
res = gsl::narrow<size_t>(
d->d.dimensionality);
37 Expects(
d !=
nullptr);
38 d->d.dimensionality = gsl::narrow<ioda::Dimensions_t>(N);
39 d->d.dimsCur.resize(N, 0);
40 d->d.dimsMax.resize(N, 0);
41 d->d.numElements = gsl::narrow<size_t>(std::accumulate(
d->d.dimsCur.begin(),
d->d.dimsCur.end(),
42 (ioda::Dimensions_t)1,
43 std::multiplies<ioda::Dimensions_t>()));
49 Expects(
d !=
nullptr);
50 Expects(
res !=
nullptr);
51 *
res = gsl::narrow<size_t>(
d->d.numElements);
57 Expects(
d !=
nullptr);
58 Expects(
d->d.dimsCur.size() > n);
59 Expects(
res !=
nullptr);
60 *
res = gsl::narrow<ptrdiff_t>(
d->d.dimsCur.at(n));
66 Expects(
d !=
nullptr);
67 Expects(
d->d.dimsCur.size() > n);
68 d->d.dimsCur[n] = gsl::narrow<ioda::Dimensions_t>(sz);
74 Expects(
d !=
nullptr);
75 Expects(
d->d.dimsMax.size() > n);
76 Expects(
res !=
nullptr);
77 *
res = gsl::narrow<ptrdiff_t>(
d->d.dimsMax.at(n));
83 Expects(
d !=
nullptr);
84 Expects(
d->d.dimsMax.size() > n);
85 d->d.dimsMax[n] = gsl::narrow<ioda::Dimensions_t>(sz);
C bindings for ioda::Dimensions
#define C_CATCH_AND_RETURN(retval_on_success, retval_on_error)
This macro catches C++ exceptions.
#define C_CATCH_AND_TERMINATE
Catch C++ exceptions before they go across code boundaries.
#define C_TRY
Goes with C_CATCH_AND_TERMINATE.
bool ioda_dimensions_get_num_elements(const ioda_dimensions *d, size_t *res)
bool ioda_dimensions_get_dim_cur(const ioda_dimensions *d, size_t n, ptrdiff_t *res)
IODA_DL bool ioda_dimensions_set_dimensionality(struct ioda_dimensions *d, size_t N)
Set dimensionality of the dimensions container.
bool ioda_dimensions_get_dimensionality(const ioda_dimensions *d, size_t *res)
IODA_DL bool ioda_dimensions_set_dim_max(struct ioda_dimensions *d, size_t n, ptrdiff_t sz)
Set the maximum size of the n-th dimension.
IODA_DL bool ioda_dimensions_set_dim_cur(struct ioda_dimensions *d, size_t n, ptrdiff_t sz)
Set the current size of the n-th dimension.
bool ioda_dimensions_get_dim_max(const ioda_dimensions *d, size_t n, ptrdiff_t *res)
IODA_DL void ioda_dimensions_destruct(struct ioda_dimensions *d)
Deallocates a dimensions container.
C wrappers for ioda classes and structures. Private header. Can have C++!