/* This is a module which implements the notion of a dataset. Its is designed for the use with scripting languages. copyright: GPL Mark Koennecke, October 2002 */ #ifndef NXDATASET #define NXDATASET #define MAGIC 7776622 #include "napiconfig.h" typedef struct { int magic; int rank; int type; int64_t *dim; char *format; union { void *ptr; float *fPtr; double *dPtr; int *iPtr; short int *sPtr; char *cPtr; int64_t *lPtr; } u; }*pNXDS, NXDS; /* include NeXus type codes if not already defined */ #ifndef NX_FLOAT32 #define NX_FLOAT32 5 #define NX_FLOAT64 6 #define NX_INT8 20 #define NX_UINT8 21 #define NX_INT16 22 #define NX_UINT16 23 #define NX_INT32 24 #define NX_UINT32 25 #define NX_INT64 26 #define NX_UINT64 27 #define NX_CHAR 4 #define NX_MAXRANK 32 #endif pNXDS createNXDataset(int rank, int typecode, int64_t dim[]); pNXDS createTextNXDataset(char *name); void dropNXDataset(pNXDS dataset); int getNXDatasetRank(pNXDS dataset); int getNXDatasetDim(pNXDS dataset, int which); int getNXDatasetType(pNXDS dataset); int getNXDatasetLength(pNXDS dataset); int getNXDatasetByteLength(pNXDS dataset); double getNXDatasetValue(pNXDS dataset, int64_t pos[]); double getNXDatasetValueAt(pNXDS dataset, int64_t address); char *getNXDatasetText(pNXDS dataset); int putNXDatasetValue(pNXDS dataset, int64_t pos[], double value); int putNXDatasetValueAt(pNXDS dataset, int64_t address, double value); #endif