struct sidl_double__array* impl_csdms_model_Sedflux2d_get_grid_values( /* in */ csdms_model_Sedflux2d self, /* in */ const char* long_var_name, /* out */ sidl_BaseInterface *_ex) { *_ex = 0; { /* DO-NOT-DELETE splicer.begin(csdms.model.Sedflux2d.get_grid_values) */ struct sidl_double__array* vals = NULL; GET_PRIVATE_DATA(this); if (this && this->state) { int rank; double *data = NULL; int n_vals = 0; int status = 0; CALL_BMI(Get_var_point_count, this->state, long_var_name, &n_vals); rank = PRIVATE_METHOD(get_grid_rank)(self, long_var_name, _ex); data = (double*)malloc(sizeof(double) * n_vals); CALL_BMI(Get_double, this->state, long_var_name, data); if (data) { /* Create an array that borrows these values. */ int i; int * lower = (int*)malloc(sizeof(int) * rank); int * upper = (int*)malloc(sizeof(int) * rank); int * stride = (int*)malloc(sizeof(int) * rank); { const int _n_dims = 1; const int _lower[1] = {0}; const int _upper[1] = {n_vals - 1}; const int _stride[1] = {1}; vals = sidl_double__array_borrow(data, _n_dims, _lower, _upper, _stride); } free(stride); free(upper); free(lower); } } return vals; EXIT: return NULL; /* DO-NOT-DELETE splicer.end(csdms.model.Sedflux2d.get_grid_values) */ } }
/* same as sidl_double__array_borrow_f, but the first argument is a pointer that gets dereferenced */ void SIDLFortran77Symbol(sidl_double__array_borrow_deref_f, sidl_DOUBLE__ARRAY_BORROW_DEREF_F, sidl_double__array_borrow_deref_f) (double **firstElement, int32_t *dimen, int32_t lower[], int32_t upper[], int32_t stride[], int64_t *result) { *result = (ptrdiff_t) sidl_double__array_borrow(*firstElement, *dimen, lower, upper, stride); }