- Fixed a bug fix with Fixed motor in TAS code
- Made AMOR write HDF-5 data in chunks - Added driver for a PSI-DSP magnet controller as used at SLS - Added code for directly accessing RS232 controllers connected to a terminal server, thereby bypassing the SerPortServer - A rounding problem in the PSD histogram memory was resolved.
This commit is contained in:
297
napi.h
297
napi.h
@@ -3,7 +3,7 @@
|
||||
|
||||
NeXus API header file
|
||||
|
||||
Copyright (C) 1997-2000 Mark Koennecke, Przemek Klosowski
|
||||
Copyright (C) 2000-2003 Mark Koennecke, Uwe Filges
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
@@ -20,73 +20,52 @@
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact : Mark Koennecke <Mark.Koennecke@psi.ch>
|
||||
Uwe Filges <Uwe.Filges@psi.ch>
|
||||
Labor fuer Neutronenstreuung
|
||||
Paul Scherrer Institut
|
||||
CH-5232 Villigen-PSI
|
||||
Switzerland
|
||||
|
||||
Przemek Klosowski <Przemek.Klosowski@nist.gov>
|
||||
NIST Center for Neutron Research
|
||||
100 Bureau Drive, Stop 8562
|
||||
Gaithersburg, MD 20899-8562
|
||||
USA
|
||||
|
||||
|
||||
For further information, see <http://www.neutron.anl.gov/NeXus/>
|
||||
|
||||
$Id: napi.h,v 1.3 2001/06/08 15:18:37 cvs Exp $
|
||||
|
||||
----------------------------------------------------------------------------*/
|
||||
|
||||
----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef NEXUSAPI
|
||||
#define NEXUSAPI
|
||||
|
||||
#define NEXUS_VERSION "1.3.1" /* major.minor.patch */
|
||||
|
||||
#ifdef GENIE_IMPLEMENTATION__ /* OpenGENIE is fussy about consts */
|
||||
# define CONSTCHAR const char
|
||||
#else
|
||||
# define CONSTCHAR char
|
||||
#endif /* GENIE_IMPLEMENTATION__ */
|
||||
/* NeXus HDF45 */
|
||||
#define NEXUS_VERSION "2.1.0." /* major.minor.patch */
|
||||
|
||||
/*
|
||||
* check for ints.h header on VMS - it defines conflicting types
|
||||
*/
|
||||
#if defined(__VMS) && defined(__INTS_LOADED)
|
||||
# define int8 hdf_int8
|
||||
# define int16 hdf_int16
|
||||
# define uint16 hdf_uint16
|
||||
# define int32 hdf_int32
|
||||
# define uint32 hdf_uint32
|
||||
# include <mfhdf.h>
|
||||
# undef int8
|
||||
# undef int16
|
||||
# undef uint16
|
||||
# undef int32
|
||||
# undef uint32
|
||||
#else
|
||||
# include <mfhdf.h>
|
||||
#endif /* defined(__VMS) && defined(__INTS_LOADED) */
|
||||
#define CONSTCHAR char
|
||||
|
||||
typedef enum {NXACC_READ = DFACC_READ,
|
||||
NXACC_RDWR = DFACC_RDWR,
|
||||
NXACC_CREATE = DFACC_CREATE } NXaccess;
|
||||
#define NX_EXTERNAL
|
||||
|
||||
typedef void* NXhandle; /* really a pointer to a NexusFile structure */
|
||||
typedef int NXstatus;
|
||||
typedef char NXname[VGNAMELENMAX];
|
||||
typedef char NXname[128];
|
||||
|
||||
typedef struct {
|
||||
int32 iTag;
|
||||
int32 iRef;
|
||||
} NXlink;
|
||||
typedef enum {NXACC_READ=1, NXACC_RDWR=2, NXACC_CREATE=3, NXACC_CREATE5=4} NXaccess;
|
||||
|
||||
typedef struct {
|
||||
char *iname;
|
||||
int type;
|
||||
}info_type, *pinfo;
|
||||
|
||||
#define NX_OK 1
|
||||
#define NX_ERROR 0
|
||||
#define NX_EOD -1
|
||||
|
||||
#define NX_UNLIMITED -1
|
||||
|
||||
#define NX_MAXRANK 32
|
||||
#define NX_MAXNAMELEN 64
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
HDF Datatype values for datatype parameters
|
||||
in the Nexus API
|
||||
@@ -108,46 +87,49 @@ typedef char NXname[VGNAMELENMAX];
|
||||
|
||||
|
||||
/* Map NeXus to HDF types */
|
||||
#define NX_FLOAT32 DFNT_FLOAT32
|
||||
#define NX_FLOAT64 DFNT_FLOAT64
|
||||
#define NX_INT8 DFNT_INT8
|
||||
#define NX_UINT8 DFNT_UINT8
|
||||
#define NX_INT16 DFNT_INT16
|
||||
#define NX_UINT16 DFNT_UINT16
|
||||
#define NX_INT32 DFNT_INT32
|
||||
#define NX_UINT32 DFNT_UINT32
|
||||
#define NX_CHAR DFNT_CHAR8
|
||||
#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_CHAR 4
|
||||
|
||||
/* Map NeXus compression methods to HDF compression methods */
|
||||
#define NX_COMP_NONE COMP_CODE_NONE
|
||||
#define NX_COMP_LZW COMP_CODE_DEFLATE
|
||||
#define NX_COMP_RLE COMP_CODE_RLE
|
||||
#define NX_COMP_HUF COMP_CODE_SKPHUFF
|
||||
#define NX_COMP_NONE 100
|
||||
#define NX_COMP_LZW 200
|
||||
#define NX_COMP_RLE 300
|
||||
#define NX_COMP_HUF 400
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*
|
||||
* Now, we have the interface visible from FORTRAN and C. On UNIX system
|
||||
* FORTRAN routines usually get an extra training
|
||||
* Do not mangle using "_" as f2c mangles _ containing and non _
|
||||
* containing names differently
|
||||
* We must also lowercase anything that is called from FORTRAN
|
||||
* else we can't link
|
||||
*/
|
||||
#ifdef HDF4
|
||||
#include <mfhdf.h>
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
#ifdef HDF4
|
||||
int32 iTag; /* HDF4 variable */
|
||||
int32 iRef; /* HDF4 variable */
|
||||
#endif
|
||||
|
||||
#ifdef HDF5
|
||||
char iTag5[1024]; /* HDF5 variable */
|
||||
char iRef5[1024]; /* HDF5 variable */
|
||||
char iRefd[1024]; /* HDF5 variable */
|
||||
#endif
|
||||
} NXlink;
|
||||
|
||||
|
||||
|
||||
#define NXMAXSTACK 50
|
||||
|
||||
#define CONCAT(__a,__b) __a##__b /* token concatenation */
|
||||
|
||||
/*
|
||||
* Define a macro for FORTRAN name mangling _ pften we have to add an "_"
|
||||
*/
|
||||
#if defined(__VMS) || defined(__unix__) || defined(__MWERKS__)
|
||||
# if defined(__VMS) || defined(__MWERKS__) || defined(__ABSOFT)
|
||||
# define MANGLE(__arg) __arg
|
||||
# else /* unix */
|
||||
# define MANGLE(__arg) CONCAT(__arg,_)
|
||||
# endif
|
||||
#define MANGLE(__arg) CONCAT(__arg,_)
|
||||
|
||||
#define CALLING_STYLE /* blank */
|
||||
|
||||
# define NXopen MANGLE(nxiopen)
|
||||
# define NXclose MANGLE(nxiclose)
|
||||
@@ -155,132 +137,91 @@ extern "C" {
|
||||
# define NXopengroup MANGLE(nxiopengroup)
|
||||
# define NXclosegroup MANGLE(nxiclosegroup)
|
||||
# define NXmakedata MANGLE(nximakedata)
|
||||
# define NXcompmakedata MANGLE(nxicompmakedata)
|
||||
# define NXcompress MANGLE(nxicompress)
|
||||
# define NXopendata MANGLE(nxiopendata)
|
||||
# define NXclosedata MANGLE(nxiclosedata)
|
||||
# define NXgetdata MANGLE(nxigetdata)
|
||||
# define NXgetslab MANGLE(nxigetslab)
|
||||
# define NXgetattr MANGLE(nxigetattr)
|
||||
# define NXgetdim MANGLE(nxigetdim)
|
||||
# define NXputdata MANGLE(nxiputdata)
|
||||
# define NXputslab MANGLE(nxiputslab)
|
||||
# define NXputattr MANGLE(nxiputattr)
|
||||
# define NXputdim MANGLE(nxiputdim)
|
||||
# define NXgetinfo MANGLE(nxigetinfo)
|
||||
# define NXgetgroupinfo MANGLE(nxigetgroupinfo)
|
||||
# define NXinitgroupdir MANGLE(nxiinitgroupdir)
|
||||
# define NXgetnextentry MANGLE(nxigetnextentry)
|
||||
# define NXgetattrinfo MANGLE(nxigetattrinfo)
|
||||
# define NXinitattrdir MANGLE(nxiinitattrdir)
|
||||
# define NXgetnextattr MANGLE(nxigetnextattr)
|
||||
# define NXgetgroupID MANGLE(nxigetgroupid)
|
||||
# define NXputdata MANGLE(nxiputdata)
|
||||
# define NXputslab MANGLE(nxiputslab)
|
||||
# define NXputattr MANGLE(nxiputattr)
|
||||
# define NXgetdataID MANGLE(nxigetdataid)
|
||||
# define NXmakelink MANGLE(nximakelink)
|
||||
# define NXmalloc MANGLE(nximalloc)
|
||||
# define NXfree MANGLE(nxifree)
|
||||
# define NXflush MANGLE(nxiflush)
|
||||
|
||||
# define NXgetinfo MANGLE(nxigetinfo)
|
||||
# define NXgetnextentry MANGLE(nxigetnextentry)
|
||||
# define NXgetdata MANGLE(nxigetdata)
|
||||
|
||||
# define NXgetslab MANGLE(nxigetslab)
|
||||
# define NXgetnextattr MANGLE(nxigetnextattr)
|
||||
# define NXgetattr MANGLE(nxigetattr)
|
||||
# define NXgetattrinfo MANGLE(nxigetattrinfo)
|
||||
# define NXgetgroupID MANGLE(nxigetgroupid)
|
||||
# define NXgetgroupinfo MANGLE(nxigetgroupinfo)
|
||||
# define NXinitgroupdir MANGLE(nxiinitgroupdir)
|
||||
# define NXinitattrdir MANGLE(nxiinitattrdir)
|
||||
/* FORTRAN helpers - for NeXus internal use only */
|
||||
# define NXfopen MANGLE(nxifopen)
|
||||
# define NXfclose MANGLE(nxifclose)
|
||||
# define NXfflush MANGLE(nxifflush)
|
||||
# define NXfmakedata MANGLE(nxifmakedata)
|
||||
# define NXfcompmakedata MANGLE(nxifcompmakedata)
|
||||
# define NXfcompress MANGLE(nxifcompress)
|
||||
# define NXfputattr MANGLE(nxifputattr)
|
||||
#elif defined(_WIN32)
|
||||
/*
|
||||
* Various PC calling converntions
|
||||
*/
|
||||
/* # define MANGLE(__arg) __stdcall CONCAT(__arg,_) */
|
||||
/* # define MANGLE(__arg) CONCAT(__arg,_) */
|
||||
# define MANGLE(__arg) __stdcall __arg
|
||||
# define NXopen NXIOPEN_
|
||||
# define NXclose NXICLOSE_
|
||||
# define NXmakegroup MANGLE(NXIMAKEGROUP)
|
||||
# define NXopengroup MANGLE(NXIOPENGROUP)
|
||||
# define NXclosegroup MANGLE(NXICLOSEGROUP)
|
||||
# define NXmakedata NXIMAKEDATA_
|
||||
# define NXcompress MANGLE(NXICOMPRESS)
|
||||
# define NXopendata MANGLE(NXIOPENDATA)
|
||||
# define NXclosedata MANGLE(NXICLOSEDATA)
|
||||
# define NXgetdata MANGLE(NXIGETDATA)
|
||||
# define NXgetslab MANGLE(NXIGETSLAB)
|
||||
# define NXgetattr MANGLE(NXIGETATTR)
|
||||
# define NXgetdim MANGLE(NXIGETDIM)
|
||||
# define NXputdata MANGLE(NXIPUTDATA)
|
||||
# define NXputslab MANGLE(NXIPUTSLAB)
|
||||
# define NXputattr NXIPUTATTR_
|
||||
# define NXputdim MANGLE(NXIPUTDIM)
|
||||
# define NXgetinfo MANGLE(NXIGETINFO)
|
||||
# define NXgetgroupinfo MANGLE(NXIGETGROUPINFO)
|
||||
# define NXinitgroupdir MANGLE(NXIINITGROUPDIR)
|
||||
# define NXgetnextentry MANGLE(NXIGETNEXTENTRY)
|
||||
# define NXgetattrinfo MANGLE(NXIGETATTRINFO)
|
||||
# define NXinitattrdir MANGLE(NXIINITATTRDIR)
|
||||
# define NXgetnextattr MANGLE(NXIGETNEXTATTR)
|
||||
# define NXgetgroupID MANGLE(NXIGETGROUPID)
|
||||
# define NXgetdataID MANGLE(NXIGETDATAID)
|
||||
# define NXmakelink MANGLE(NXIMAKELINK)
|
||||
# define NXmalloc MANGLE(NXIMALLOC)
|
||||
# define NXfree MANGLE(NXIFREE)
|
||||
/* FORTRAN helpers - for NeXus internal use only */
|
||||
# define NXfopen MANGLE(NXIFOPEN)
|
||||
# define NXfclose MANGLE(NXIFCLOSE)
|
||||
# define NXfmakedata MANGLE(NXIFMAKEDATA)
|
||||
# define NXfcompress MANGLE(NXIFCOMPRESS)
|
||||
# define NXfputattr MANGLE(NXIFPUTATTR)
|
||||
#else
|
||||
# error Cannot compile - unknown operating system
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Standard interface
|
||||
*/
|
||||
NXstatus NXopen(CONSTCHAR * filename, NXaccess access_method, NXhandle* pHandle);
|
||||
NXstatus NXclose(NXhandle* pHandle);
|
||||
|
||||
NXstatus NXmakegroup (NXhandle handle, CONSTCHAR* Vgroup, char* NXclass);
|
||||
NXstatus NXopengroup (NXhandle handle, CONSTCHAR* Vgroup, char* NXclass);
|
||||
NXstatus NXclosegroup(NXhandle handle);
|
||||
|
||||
NXstatus NXmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]);
|
||||
NXstatus NXsetdimname(NXhandle handle, int iDim, CONSTCHAR *name);
|
||||
|
||||
NXstatus NXopendata (NXhandle handle, CONSTCHAR* label);
|
||||
NXstatus NXcompress (NXhandle handle, int compr_type);
|
||||
NXstatus NXclosedata(NXhandle handle);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXopen(CONSTCHAR * filename, NXaccess access_method, NXhandle* pHandle);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXclose(NXhandle* pHandle);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXflush(NXhandle* pHandle);
|
||||
|
||||
NXstatus NXgetdata(NXhandle handle, void* data);
|
||||
NXstatus NXgetslab(NXhandle handle, void* data, int start[], int size[]);
|
||||
NXstatus NXgetattr(NXhandle handle, char* name, void* data, int* iDataLen, int* iType);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXmakegroup (NXhandle handle, CONSTCHAR *name, char* NXclass);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXopengroup (NXhandle handle, CONSTCHAR *name, char* NXclass);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXclosegroup(NXhandle handle);
|
||||
|
||||
NXstatus NXputdata(NXhandle handle, void* data);
|
||||
NXstatus NXputslab(NXhandle handle, void* data, int start[], int size[]);
|
||||
NXstatus NXputattr(NXhandle handle, CONSTCHAR* name, void* data, int iDataLen, int iType);
|
||||
|
||||
NXstatus NXgetinfo(NXhandle handle, int* rank, int dimension[], int* datatype);
|
||||
NXstatus NXgetgroupinfo(NXhandle handle, int* no_items, NXname name, NXname nxclass);
|
||||
NXstatus NXinitgroupdir(NXhandle handle);
|
||||
NXstatus NXgetnextentry(NXhandle handle, NXname name, NXname nxclass, int* datatype);
|
||||
NXstatus NXgetattrinfo(NXhandle handle, int* no_items);
|
||||
NXstatus NXinitattrdir(NXhandle handle);
|
||||
NXstatus NXgetnextattr(NXhandle handle, NXname pName, int *iLength, int *iType);
|
||||
|
||||
NXstatus NXgetgroupID(NXhandle handle, NXlink* pLink);
|
||||
NXstatus NXgetdataID(NXhandle handle, NXlink* pLink);
|
||||
NXstatus NXmakelink(NXhandle handle, NXlink* pLink);
|
||||
|
||||
/*
|
||||
* Helper interface
|
||||
*/
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXcompmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[], int comp_typ, int bufsize[]);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXcompress (NXhandle handle, int compr_type);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXopendata (NXhandle handle, CONSTCHAR* label);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXclosedata(NXhandle handle);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXputdata(NXhandle handle, void* data);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXputattr(NXhandle handle, CONSTCHAR* name, void* data, int iDataLen, int iType);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXputslab(NXhandle handle, void* data, int start[], int size[]);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetdataID(NXhandle handle, NXlink* pLink);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXmakelink(NXhandle handle, NXlink* pLink);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetdata(NXhandle handle, void* data);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetinfo(NXhandle handle, int* rank, int dimension[], int* datatype);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetnextentry(NXhandle handle, NXname name, NXname nxclass, int* datatype);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetslab(NXhandle handle, void* data, int start[], int size[]);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetnextattr(NXhandle handle, NXname pName, int *iLength, int *iType);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetattr(NXhandle handle, char* name, void* data, int* iDataLen, int* iType);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetattrinfo(NXhandle handle, int* no_items);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetgroupID(NXhandle handle, NXlink* pLink);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXgetgroupinfo(NXhandle handle, int* no_items, NXname name, NXname nxclass);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXinitgroupdir(NXhandle handle);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXinitattrdir(NXhandle handle);
|
||||
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXmalloc(void** data, int rank, int dimensions[], int datatype);
|
||||
NX_EXTERNAL NXstatus CALLING_STYLE NXfree(void** data);
|
||||
|
||||
NXstatus NXmalloc(void** data, int rank, int dimensions[], int datatype);
|
||||
NXstatus NXfree(void** data);
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
A non Nexus standard function to set an error handler
|
||||
*/
|
||||
void NXMSetError(void *pData, void (*ErrFunc)(void *pD, char *text));
|
||||
NX_EXTERNAL void CALLING_STYLE NXMSetError(void *pData, void (*ErrFunc)(void *pD, char *text));
|
||||
|
||||
|
||||
#endif /*NEXUSAPI*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* NEXUSAPI */
|
||||
|
||||
Reference in New Issue
Block a user