1/*********************************************************************
2 *   Copyright 2009, University Corporation for Atmospheric Research
3 *   See netcdf/README file for copying and redistribution conditions.
4 *   "$Id $"
5 *********************************************************************/
6
7#ifndef _NCITER_
8#define _NCITER_
9
10#include <netcdf.h>
11
12#if defined(__cplusplus)
13extern "C" {
14#endif
15
16/*
17 * The opaque structure to hold per-variable state of iteration
18 */
19typedef struct {
20    int first;      /* false after associated next function invoked */
21    int right_dim;   /* rightmost dimension for start of variable pieces */
22    size_t rows;     /* how many subpiece rows in bufsiz */
23    size_t numrows;  /* how many row pieces in right_dim dimension */
24    size_t cur;      /* current "row" in loop over row pieces */
25    size_t leftover; /* how many rows left over after partitioning
26       * bufsiz into subpiece blocks */
27    int more;      /* whether there is more data still to get */
28    size_t to_get;   /* number of values to get on this access */
29    int rank;      /* number of dimensions */
30    size_t inc;      /* increment for right_dim element of start vector */
31    size_t dimsizes[NC_MAX_VAR_DIMS];
32nciter_t;
33
34/*
35 * The Interface
36 */
37
38/* Get iterator for a variable. */
39extern int
40nc_get_iter(Symbol*, size_t bufsizenciter_t *iterp);
41
42/* Iterate over blocks of variable values, using start and count
43 * vectors.  Returns number of values to access (product of counts),
44 * or 0 if done. */
45extern size_t
46nc_next_iter(nciter_t *iterp, size_t *start, size_t *count);
47
48#if defined(__cplusplus)
49}
50#endif
51
52#endif /* _NCITER_ */


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed