Files
cdev-1.7.2n/include/cdevData.i
2022-12-13 12:44:04 +01:00

573 lines
13 KiB
OpenEdge ABL

//---------------------------------------------------------------------------
// Copyright (c) 1991,1992 Southeastern Universities Research Association,
// Continuous Electron Beam Accelerator Facility
//
// This software was developed under a United States Government license
// described in the NOTICE file included as part of this distribution.
//----------------------------------------------------------------------------
//
// description: cdevData.h
// Self descibing data structure to manage the storage and transport
// of data between local cdev functions, as well as remote client and
// server applications.
//
// Author: Walt Akers and Danjin Wu
//
// Revision History:
// cdevData.i,v
// Revision 1.6 1996/11/21 17:02:59 akers
// Ongoing Developement of CDEV 1.5
//
// Revision 1.5 1996/07/12 18:09:01 chen
// change copy and assignment to const cdevData&
//
// Revision 1.4 1996/04/12 13:40:07 akers
// Added char * cast operator
//
// Revision 1.3 1996/02/27 20:50:13 danjin
// add assignment operator from various typed data to cdevData object
//
// Revision 1.2 1995/10/16 18:14:20 chen
// Fix a bug for SunOs and g++
//
// Revision 1.1 1995/10/06 19:39:03 chen
// all cdevData inline functions
//
//
INLINE
cdevDataEntry* cdevData::lookupTag(char * ctag, int create)
{
int tag;
return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
(cdevDataEntry *)0:lookupTag(tag, create);
}
INLINE
cdevData &
cdevData::operator = (const cdevData & data)
{
return copy(data);
}
INLINE
void cdevData::remove( char * ctag )
{
int tag; if(!cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)) remove(tag);
}
INLINE
cdevDataTypes cdevData::getType(char *ctag)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_INVALID:getType(tag);
}
INLINE
int cdevData::getDim(char *ctag, size_t *dim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:getDim(tag, dim);
}
INLINE
int cdevData::getElems(char *ctag, size_t *elems)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:getElems(tag, elems);
}
INLINE
int cdevData::getBounds(char * ctag, size_t * bounds, size_t len)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:getBounds(tag, bounds, len);
}
INLINE
int cdevData::getBounds(char * ctag, cdevBounds * bounds, size_t numBounds)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:getBounds(tag, bounds, numBounds);
}
INLINE
int cdevData::setBounds(char * ctag, size_t * bounds, size_t len)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:setBounds(tag, bounds, len);
}
INLINE
int cdevData::setBounds(char * ctag, cdevBounds * bounds, size_t numBounds)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?
CDEV_NOTFOUND:setBounds(tag, bounds, numBounds);
}
INLINE
int cdevData::insert ( char * ctag, BYTE data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, short data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, unsigned short data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, long data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, unsigned long data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, float data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, double data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, cdev_TS_STAMP data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert (char * ctag, BYTE * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, short * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, unsigned short * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, long * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, unsigned long * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, float * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, double * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert ( char * ctag, char * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data);
}
INLINE
int cdevData::insert ( char * ctag, char ** data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, cdev_TS_STAMP * data, size_t len, size_t ndim)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:insert(tag, data, len, ndim);
}
INLINE
int cdevData::get(char * ctag, BYTE * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, short * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, unsigned short * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, long * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, unsigned long * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, float * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, double * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, char * data, size_t len)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data, len);
}
INLINE
int cdevData::get(char * ctag, char ** data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::get(char * ctag, cdev_TS_STAMP * data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:get(tag, data);
}
INLINE
int cdevData::find(char * ctag, void* &data)
{
int tag; return cdevGlobalTagTable::tagTable()->tagC2I(ctag, &tag)?CDEV_NOTFOUND:find(tag, data);
}
#ifdef DEFAULT_16_BIT_INTEGER
INLINE
int cdevData::insert ( int tag, int data )
{
return insert(tag, (short)data);
}
INLINE
int cdevData::insert ( int tag, unsigned int data )
{
return insert(tag, (unsigned short)data);
}
INLINE
int cdevData::insert ( char * ctag, int data)
{
return insert(ctag, (short)data);
}
INLINE
int cdevData::insert ( char * ctag, unsigned int data)
{
return insert(ctag, (unsigned short)data);
}
INLINE
int cdevData::insert (int tag, int * data, size_t len, size_t ndim)
{
return insert(tag, (short *)data, len, ndim);
}
INLINE
int cdevData::insert (int tag, unsigned int * data, size_t len, size_t ndim)
{
return insert(tag, (unsigned short *)data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, int * data, size_t len, size_t ndim)
{
return insert(ctag, (short *)data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, unsigned int * data, size_t len, size_t ndim)
{
return insert(ctag, (unsigned short *)data, len, ndim);
}
#else
INLINE
int cdevData::insert ( int tag, int data )
{
return insert(tag, (long)data);
}
INLINE
int cdevData::insert ( int tag, unsigned int data )
{
return insert(tag, (unsigned long)data);
}
INLINE
int cdevData::insert ( char * ctag, int data)
{
return insert(ctag, (long)data);
}
INLINE
int cdevData::insert ( char * ctag, unsigned int data)
{
return insert(ctag, (unsigned long)data);
}
INLINE
int cdevData::insert (int tag, int * data, size_t len, size_t ndim)
{
return insert(tag, (long *)data, len, ndim);
}
INLINE
int cdevData::insert (int tag, unsigned int * data, size_t len, size_t ndim)
{
return insert(tag, (unsigned long *)data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, int * data, size_t len, size_t ndim)
{
return insert(ctag, (long *)data, len, ndim);
}
INLINE
int cdevData::insert (char * ctag, unsigned int * data, size_t len, size_t ndim)
{
return insert(ctag, (unsigned long *)data, len, ndim);
}
#endif
#ifdef DEFAULT_16_BIT_INTEGER
INLINE
int cdevData::get(int tag, int * data)
{
return get(tag, (short *)data);
}
INLINE
int cdevData::get(int tag, unsigned int * data)
{
return get(tag, (unsigned short *) data);
}
INLINE
int cdevData::get(char *ctag, int * data)
{
return get(ctag, (short *)data);
}
INLINE
int cdevData::get(char *ctag, unsigned int * data)
{
return get(ctag, (unsigned short *) data);
}
#else
INLINE
int cdevData::get(int tag, int * data)
{
return get(tag, (long *)data);
}
INLINE
int cdevData::get(int tag, unsigned int * data)
{
return get(tag, (unsigned long *) data);
}
INLINE
int cdevData::get(char *ctag, int * data)
{
return get(ctag, (long *)data);
}
INLINE
int cdevData::get(char *ctag, unsigned int * data)
{
return get(ctag, (unsigned long *) data);
}
#endif
INLINE
cdevData::operator char( void )
{
BYTE x; get("value", &x); return x;
}
INLINE
cdevData::operator short( void )
{
short x; get("value", &x); return x;
}
INLINE
cdevData::operator unsigned short( void )
{
unsigned short x; get("value", &x); return x;
}
INLINE
cdevData::operator int( void )
{
int x; get("value", &x); return x;
}
INLINE
cdevData::operator unsigned int( void )
{
unsigned int x; get("value", &x); return x;
}
INLINE
cdevData::operator long( void )
{
long x; get("value", &x); return x;
}
INLINE
cdevData::operator unsigned long( void )
{
unsigned long x; get("value", &x); return x;
}
INLINE
cdevData::operator float( void )
{
float x; get("value", &x); return x;
}
INLINE
cdevData::operator double( void )
{
double x; get("value", &x); return x;
}
INLINE
cdevData::operator char * ( void )
{
char * result = NULL;
static char temp[64];
size_t dim = 0;
int valueTag = 1;
cdevDataTypes dataType = CDEV_INVALID;
tagC2I("value", &valueTag);
getDim(valueTag, &dim);
if(dim==0) dataType = getType(valueTag);
switch(dataType)
{
case CDEV_INVALID:
result=NULL;
break;
case CDEV_STRING:
find("value", (void * &)result);
break;
default:
get("value", temp, 64);
result = temp;
break;
}
return result;
}
INLINE
cdevData& cdevData::operator= (unsigned char x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (short x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (unsigned short x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (int x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (unsigned int x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (long x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (unsigned long x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (float x)
{
insert("value", x);
return *this;
}
INLINE cdevData& cdevData::operator= (double x)
{
insert("value", x);
return *this;
}