1/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
2   See the COPYRIGHT file for more information. */
3
4#ifndef OCDATA_H
5#define OCDATA_H
6
7/*
8This structure is used to set up
9pointers into the DataDDS data packet
10to speed up access.
11This has some similarities to OCNODE.
12*/
13
14struct OCdata {
15    OCheader  header;
16    OCDT      datamode;
17    OCnode*   pattern;
18    OCdata*   container; /* link back to container instance */
19    size_t    index;     /* WRT to the container */
20    off_t  xdroffset; /* Of this instance wrt xxdr_getpos() */
21    off_t  xdrsize;   /* for leafs, and as defined by xdr; if known else 0*/
22    size_t    ninstances;/* |instances| */
23    OCdata**  instances; /* vector of instances; if rank > 0, then
24                                   it captures the array elements, else
25                                   it captures the field instances. */
26    size_t     nstrings;
27    off_t*    strings;
28};
29
30
31extern void ocdata_free(OCstate*, OCdata*);
32
33extern OCerror ocdata_ithfield(OCstate*, OCdatacontainer, size_t indexOCdata** fieldp);
34extern OCerror ocdata_container(OCstate*, OCdatadataOCdata** containerp);
35extern OCerror ocdata_root(OCstate*, OCdatadataOCdata** rootp);
36
37extern OCerror ocdata_ithelement(OCstate*, OCdatadata, size_t* indicesOCdata** elementp);
38extern OCerror ocdata_ithrecord(OCstate*, OCdatadata, size_t indexOCdata** recordp);
39
40extern OCerror ocdata_position(OCstate*, OCdatadata, size_t* indices);
41extern OCerror ocdata_recordcount(OCstate*, OCdata*, size_t*);
42
43extern OCerror ocdata_getroot(OCstate*, OCnode*, OCdata**);
44
45/* Atomic leaf reading */
46extern OCerror ocdata_read(OCstate*,OCdata*,size_t,size_t,void*,size_t);
47
48#endif /*OCDATA_H*/


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