📄 ncio.h
字号:
/* * Copyright 1996, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. *//* $Id: ncio.h 2501 2007-11-20 02:33:29Z benkirk $ */#ifndef _NCIO_H_#define _NCIO_H_#include <stddef.h> /* size_t */#include <sys/types.h> /* off_t */#include "netcdf.h"typedef struct ncio ncio; /* forward reference *//* * A value which is an invalid off_t */#define OFF_NONE ((off_t)(-1))/* * Flags used by the region layer, * 'rflags' argument to ncio.rel() and ncio.get(). */#define RGN_NOLOCK 0x1 /* Don't lock region. * Used when contention control handled * elsewhere. */#define RGN_NOWAIT 0x2 /* return immediate if can't lock, else wait */#define RGN_WRITE 0x4 /* we intend to modify, else read only */#define RGN_MODIFIED 0x8 /* we did modify, else, discard *//* * The next four typedefs define the signatures * of function pointers in struct ncio below. * They are not used outside of this file and ncio.h, * They just make some casts in the ncio.c more readable. */ /* * Indicate that you are done with the region which begins * at offset. Only reasonable flag value is RGN_MODIFIED. */typedef int ncio_relfunc(ncio *const nciop, off_t offset, int rflags); /* * Request that the region (offset, extent) * be made available through *vpp. */typedef int ncio_getfunc(ncio *const nciop, off_t offset, size_t extent, int rflags, void **const vpp); /* * Like memmove(), safely move possibly overlapping data. * Only reasonable flag value is RGN_NOLOCK. */typedef int ncio_movefunc(ncio *const nciop, off_t to, off_t from, size_t nbytes, int rflags); /* * Write out any dirty buffers to disk and * ensure that next read will get data from disk. */typedef int ncio_syncfunc(ncio *const nciop); /* * Don't call this. * Internal function called at close to * free up anything hanging off pvt; */typedef void ncio_freefunc(void *const pvt);/* Get around cplusplus "const xxx in class ncio without constructor" error */#if defined(__cplusplus)#define NCIO_CONST#else#define NCIO_CONST const#endif/* * netcdf i/o abstraction */struct ncio { /* * A copy of the ioflags argument passed in to ncio_open() * or ncio_create(). */ int ioflags; /* * The file descriptor of the netcdf file. * This gets handed to the user as the netcdf id. */ NCIO_CONST int fd; /* member functions do the work */ ncio_relfunc *NCIO_CONST rel; ncio_getfunc *NCIO_CONST get; ncio_movefunc *NCIO_CONST move; ncio_syncfunc *NCIO_CONST sync; ncio_freefunc *NCIO_CONST free; /* Implementation private */ /* * A copy of the 'path' argument passed in to ncio_open() * or ncio_create(). Used by ncabort() to remove (unlink) * the file and by error messages. */ const char *path; /* implementation private stuff */ void *NCIO_CONST pvt;};#undef NCIO_CONSTextern intncio_create(const char *path, int ioflags, size_t initialsz, off_t igeto, size_t igetsz, size_t *sizehintp, ncio **nciopp, void **const igetvpp);extern intncio_open(const char *path, int ioflags, off_t igeto, size_t igetsz, size_t *sizehintp, ncio **nciopp, void **const igetvpp);extern int ncio_close(ncio *nciop, int doUnlink);extern intncio_filesize(ncio *nciop, off_t *filesizep);extern intncio_pad_length(ncio *nciop, off_t length);#endif /* _NCIO_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -