1/*********************************************************************
2 *   Copyright 2009, University Corporation for Atmospheric Research
3 *   See netcdf/README file for copying and redistribution conditions.
4 *   "$Id: nciter.h 400 2010-08-27 21:02:52Z russ $"
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 data iteration
18 */
19typedef struct {
20    int first;      /* false after first invocation of nc_next_iter() */
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    int chunked;     /* 1 if chunked, 0 if contiguous */
32    size_t *dimsizes;
33    size_t *chunksizes; /* ignored if not chunked */
34nciter_t;
35
36/*
37 * The Interfaces
38 */
39
40/* Get iterator for variable data.  Returns pointer to malloc'd
41 * nciter_t, which caller must later release using nc_free_iter(), not
42 * free(). */
43extern int
44nc_get_iter(int ncid, int varid, size_t bufsizenciter_t **iterpp);
45
46/* Iterate over blocks of variable values, using start and count
47 * vectors.  Returns number of values to access (product of counts),
48 * or 0 if done. */
49extern size_t
50nc_next_iter(nciter_t *iterp, size_t *start, size_t *count);
51
52/* Release memory allocated for iterator */
53extern int
54nc_free_iter(nciter_t *iterp);
55
56#if defined(__cplusplus)
57}
58#endif
59
60#endif /* _NCITER_ */


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