netcdf-c/oc/occontent.h
2010-06-03 13:24:43 +00:00

50 lines
1.9 KiB
C

/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
See the COPYRIGHT file for more information. */
#ifndef OCCONTENT_H
#define OCCONTENT_H
/*! Specifies the OCcontent*/
typedef struct OCcontent {
unsigned int magic;
OCmode mode;
struct OCstate* state;
struct OCnode* node;
struct OCtree* tree;
size_t index; /* dim, record, or field*/
size_t maxindex; /* 0 => max unknown */
int packed; /* track OC_String and OC_Byte specially*/
struct {
int valid; /* if the offset field contains a valid offset */
unsigned int offset; /* location of this content in the xdr data */
} xdrpos;
OCmemdata* memdata; /* iff compiled */
struct OCcontent* next;
} OCcontent;
extern struct OCcontent* ocnewcontent(struct OCstate*);
extern void ocfreecontent(struct OCstate*, struct OCcontent*);
extern int ocrootcontent(struct OCstate*, struct OCnode*, struct OCcontent*);
extern int ocarraycontent(struct OCstate*, struct OCcontent*, struct OCcontent*, size_t);
extern int ocrecordcontent(struct OCstate*, struct OCcontent*, struct OCcontent*, size_t);
extern int ocfieldcontent(struct OCstate*, struct OCcontent*, struct OCcontent*, size_t);
extern int ocgetcontent(struct OCstate*, struct OCcontent*, void* memory, size_t memsize,
size_t start, size_t count);
extern size_t ocarraycount(struct OCstate*, struct OCcontent*);
extern size_t ocrecordcount(struct OCstate*, struct OCcontent*);
extern size_t ocfieldcount(struct OCstate*, struct OCcontent*);
extern OCmode occontentmode(struct OCstate* conn, struct OCcontent*);
extern struct OCnode* occontentnode(struct OCstate* conn, struct OCcontent*);
extern size_t occontentindex(struct OCstate* conn, struct OCcontent*);
/* These are not really for external use.*/
extern struct OCcontent* ocresetcontent(struct OCstate*, OCcontent*);
extern struct OCcontent* occlonecontent(struct OCstate*, OCcontent*);
#endif /*OCCONTENT_H*/