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) */
  }
}
Exemple #2
0
/* 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);
}