Working version, intermediate, still has problems
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
// $Id$
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.15 1996/11/02 01:24:44 jhill
|
||||
// strcpy => styrcpy (shuts up purify)
|
||||
//
|
||||
// Revision 1.14 1996/09/10 15:06:28 jbk
|
||||
// Adjusted dbMapper.cc so gdd to string function work correctly
|
||||
// Added checks in gdd.h so that get(pointer) functions work with scalars
|
||||
@@ -77,6 +80,7 @@
|
||||
// no way to detect a string type!!!!!!!
|
||||
|
||||
static gddApplicationTypeTable* type_table = NULL;
|
||||
static aitDataFormat local_data_format=aitLocalDataFormat;
|
||||
|
||||
const chtype gddAitToDbr[] = {
|
||||
0,
|
||||
@@ -168,16 +172,8 @@ static gdd* mapStringToGdd(void* v,aitIndex count) {
|
||||
|
||||
static int mapGddToString(void* v, gdd* dd) {
|
||||
aitFixedString* db = (aitFixedString*)v;
|
||||
aitFixedString* dbx;
|
||||
|
||||
if(dd->isScalar())
|
||||
dbx=(aitFixedString*)dd->dataAddress();
|
||||
else
|
||||
dbx=(aitFixedString*)dd->dataPointer();
|
||||
|
||||
int len = dd->getDataSizeElements();
|
||||
if(dbx!=db) dd->get(*db);
|
||||
return len;
|
||||
if((aitFixedString*)dd->dataPointer()!=db) dd->get(db);
|
||||
return dd->getDataSizeElements();
|
||||
}
|
||||
|
||||
static gdd* mapShortToGdd(void* v,aitIndex count) {
|
||||
@@ -195,16 +191,17 @@ static gdd* mapShortToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToShort(void* v, gdd* dd) {
|
||||
dbr_short_t* sv = (dbr_short_t*)v;
|
||||
int sz=1;
|
||||
static int mapGddToShort(void* vd, gdd* dd) {
|
||||
dbr_short_t* sv = (dbr_short_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_short_t*)v!=sv)
|
||||
aitConvert(aitEnumInt16,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumInt16,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->getBounds()) {
|
||||
sz=dd->getDataSizeElements();
|
||||
if(dd->dataPointer()!=sv)
|
||||
memcpy(sv,dd->dataPointer(),dd->getDataSizeBytes());
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -223,16 +220,17 @@ static gdd* mapFloatToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToFloat(void* v, gdd* dd) {
|
||||
dbr_float_t* sv = (dbr_float_t*)v;
|
||||
int sz=1;
|
||||
static int mapGddToFloat(void* vd, gdd* dd) {
|
||||
dbr_float_t* sv = (dbr_float_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_float_t*)v!=sv)
|
||||
aitConvert(aitEnumFloat32,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumFloat32,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->getBounds()) {
|
||||
sz=dd->getDataSizeElements();
|
||||
if(dd->dataPointer()!=sv)
|
||||
memcpy(sv,dd->dataPointer(),dd->getDataSizeBytes());
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -251,16 +249,17 @@ static gdd* mapEnumToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToEnum(void* v, gdd* dd) {
|
||||
dbr_enum_t* sv = (dbr_enum_t*)v;
|
||||
aitEnum16* e;
|
||||
int sz=1;
|
||||
static int mapGddToEnum(void* vd, gdd* dd) {
|
||||
dbr_enum_t* sv = (dbr_enum_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_enum_t*)v!=sv)
|
||||
aitConvert(aitEnumEnum16,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumEnum16,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->dimension()) {
|
||||
dd->getRef(e);
|
||||
*sv=*e;
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -279,16 +278,17 @@ static gdd* mapCharToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToChar(void* v, gdd* dd) {
|
||||
dbr_char_t* sv = (dbr_char_t*)v;
|
||||
int sz=1;
|
||||
static int mapGddToChar(void* vd, gdd* dd) {
|
||||
dbr_char_t* sv = (dbr_char_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_char_t*)v!=sv)
|
||||
aitConvert(aitEnumInt8,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumInt8,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->dimension()) {
|
||||
sz=dd->getDataSizeElements();
|
||||
if(dd->dataPointer()!=sv)
|
||||
memcpy(sv,dd->dataPointer(),dd->getDataSizeBytes());
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -307,16 +307,17 @@ static gdd* mapLongToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToLong(void* v, gdd* dd) {
|
||||
dbr_long_t* sv = (dbr_long_t*)v;
|
||||
int sz=1;
|
||||
static int mapGddToLong(void* vd, gdd* dd) {
|
||||
dbr_long_t* sv = (dbr_long_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_long_t*)v!=sv)
|
||||
aitConvert(aitEnumInt32,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumInt32,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->dimension()) {
|
||||
sz=dd->getDataSizeElements();
|
||||
if(dd->dataPointer()!=sv)
|
||||
memcpy(sv,dd->dataPointer(),dd->getDataSizeBytes());
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -335,16 +336,17 @@ static gdd* mapDoubleToGdd(void* v,aitIndex count) {
|
||||
return dd;
|
||||
}
|
||||
|
||||
static int mapGddToDouble(void* v, gdd* dd) {
|
||||
dbr_double_t* sv = (dbr_double_t*)v;
|
||||
int sz=1;
|
||||
static int mapGddToDouble(void* vd, gdd* dd) {
|
||||
dbr_double_t* sv = (dbr_double_t*)vd;
|
||||
int sz=dd->getDataSizeElements();
|
||||
void* v=dd->dataVoid();
|
||||
|
||||
if(local_data_format==aitLocalDataFormat)
|
||||
if((dbr_double_t*)v!=sv)
|
||||
aitConvert(aitEnumFloat64,sv,dd->primitiveType(),v,sz);
|
||||
else
|
||||
aitConvertToNet(aitEnumFloat64,sv,dd->primitiveType(),v,sz);
|
||||
|
||||
if(dd->dimension()) {
|
||||
sz=dd->getDataSizeElements();
|
||||
if(dd->dataPointer()!=sv)
|
||||
memcpy(sv,dd->dataPointer(),dd->getDataSizeBytes());
|
||||
} else
|
||||
*sv=*dd;
|
||||
return sz;
|
||||
}
|
||||
|
||||
@@ -377,17 +379,12 @@ static gdd* mapStsStringToGdd(void* v,aitIndex count)
|
||||
|
||||
static int mapStsGddToString(void* v, gdd* dd)
|
||||
{
|
||||
// what about arrays of string? is this allowed?
|
||||
dbr_sts_string* db = (dbr_sts_string*)v;
|
||||
aitFixedString* dbv = (aitFixedString*)db->value;
|
||||
aitFixedString* dbx;
|
||||
|
||||
if(dd->isScalar())
|
||||
dbx=(aitFixedString*)dd->dataAddress();
|
||||
else
|
||||
dbx=(aitFixedString*)dd->dataPointer();
|
||||
|
||||
// copy string into user buffer for now if not the same as one in gdd
|
||||
if(dbx!=dbv) dd->get(*dbv);
|
||||
if((aitFixedString*)dd->dataPointer()!=dbv) dd->get(dbv);
|
||||
dd->getStatSevr(db->status,db->severity);
|
||||
return dd->getDataSizeElements();
|
||||
}
|
||||
@@ -403,9 +400,8 @@ static gdd* mapStsShortToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToShort(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_short* dbv = (dbr_sts_short*)v;
|
||||
int sz=mapGddToShort(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
return sz;
|
||||
return mapGddToShort(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapStsFloatToGdd(void* v,aitIndex count)
|
||||
@@ -419,9 +415,8 @@ static gdd* mapStsFloatToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToFloat(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_float* dbv = (dbr_sts_float*)v;
|
||||
int sz=mapGddToFloat(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
return sz;
|
||||
return mapGddToFloat(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapStsEnumToGdd(void* v,aitIndex count)
|
||||
@@ -435,9 +430,8 @@ static gdd* mapStsEnumToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToEnum(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_enum* dbv = (dbr_sts_enum*)v;
|
||||
int sz=mapGddToEnum(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
return sz;
|
||||
return mapGddToEnum(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapStsCharToGdd(void* v,aitIndex count)
|
||||
@@ -451,10 +445,9 @@ static gdd* mapStsCharToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToChar(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_char* dbv = (dbr_sts_char*)v;
|
||||
int sz=mapGddToChar(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dbv->RISC_pad = '\0'; // shut up purify
|
||||
return sz;
|
||||
return mapGddToChar(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapStsLongToGdd(void* v,aitIndex count)
|
||||
@@ -468,9 +461,8 @@ static gdd* mapStsLongToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToLong(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_long* dbv = (dbr_sts_long*)v;
|
||||
int sz=mapGddToLong(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
return sz;
|
||||
return mapGddToLong(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapStsDoubleToGdd(void* v,aitIndex count)
|
||||
@@ -484,10 +476,9 @@ static gdd* mapStsDoubleToGdd(void* v,aitIndex count)
|
||||
static int mapStsGddToDouble(void* v, gdd* dd)
|
||||
{
|
||||
dbr_sts_double* dbv = (dbr_sts_double*)v;
|
||||
int sz=mapGddToDouble(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dbv->RISC_pad = 0; // shut up purify
|
||||
return sz;
|
||||
return mapGddToDouble(&dbv->value,dd);
|
||||
}
|
||||
|
||||
// ********************************************************************
|
||||
@@ -522,19 +513,12 @@ static int mapTimeGddToString(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_string* db = (dbr_time_string*)v;
|
||||
aitFixedString* dbv = (aitFixedString*)db->value;
|
||||
aitFixedString* dbx;
|
||||
|
||||
// copy string into user buffer for now if not the same as one in gdd
|
||||
if(dd->isScalar())
|
||||
dbx=(aitFixedString*)dd->dataAddress();
|
||||
else
|
||||
dbx=(aitFixedString*)dd->dataPointer();
|
||||
|
||||
if(dbv!=dbx) dd->get(*dbv);
|
||||
|
||||
if(dbv!=(aitFixedString*)dd->dataPointer()) dd->get(dbv);
|
||||
dd->getStatSevr(db->status,db->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&db->stamp);
|
||||
return dd->getDataSizeBytes();
|
||||
return dd->getDataSizeElements();
|
||||
}
|
||||
|
||||
static gdd* mapTimeShortToGdd(void* v,aitIndex count)
|
||||
@@ -549,11 +533,10 @@ static gdd* mapTimeShortToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToShort(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_short* dbv = (dbr_time_short*)v;
|
||||
int sz=mapGddToShort(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
dbv->RISC_pad = 0; // shut up purify
|
||||
return sz;
|
||||
return mapGddToShort(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapTimeFloatToGdd(void* v,aitIndex count)
|
||||
@@ -568,10 +551,9 @@ static gdd* mapTimeFloatToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToFloat(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_float* dbv = (dbr_time_float*)v;
|
||||
int sz=mapGddToFloat(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
return sz;
|
||||
return mapGddToFloat(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapTimeEnumToGdd(void* v,aitIndex count)
|
||||
@@ -586,11 +568,10 @@ static gdd* mapTimeEnumToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToEnum(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_enum* dbv = (dbr_time_enum*)v;
|
||||
int sz=mapGddToEnum(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
dbv->RISC_pad = 0; // shut up purify
|
||||
return sz;
|
||||
return mapGddToEnum(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapTimeCharToGdd(void* v,aitIndex count)
|
||||
@@ -605,12 +586,11 @@ static gdd* mapTimeCharToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToChar(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_char* dbv = (dbr_time_char*)v;
|
||||
int sz=mapGddToChar(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
dbv->RISC_pad0 = 0; // shut up purify
|
||||
dbv->RISC_pad1 = '\0'; // shut up purify
|
||||
return sz;
|
||||
return mapGddToChar(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapTimeLongToGdd(void* v,aitIndex count)
|
||||
@@ -625,10 +605,9 @@ static gdd* mapTimeLongToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToLong(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_long* dbv = (dbr_time_long*)v;
|
||||
int sz=mapGddToLong(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
return sz;
|
||||
return mapGddToLong(&dbv->value,dd);
|
||||
}
|
||||
|
||||
static gdd* mapTimeDoubleToGdd(void* v,aitIndex count)
|
||||
@@ -643,11 +622,10 @@ static gdd* mapTimeDoubleToGdd(void* v,aitIndex count)
|
||||
static int mapTimeGddToDouble(void* v, gdd* dd)
|
||||
{
|
||||
dbr_time_double* dbv = (dbr_time_double*)v;
|
||||
int sz=mapGddToDouble(&dbv->value,dd);
|
||||
dd->getStatSevr(dbv->status,dbv->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&dbv->stamp);
|
||||
dbv->RISC_pad = 0; // shut up purify
|
||||
return sz;
|
||||
return mapGddToDouble(&dbv->value,dd);
|
||||
}
|
||||
|
||||
// ********************************************************************
|
||||
@@ -723,11 +701,10 @@ static gdd* mapControlShortToGdd(void* v, aitIndex count)
|
||||
|
||||
static int mapGraphicGddToShort(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_gr_short* db = (dbr_gr_short*)v;
|
||||
int sz=1;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_gr_short_value];
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_gr_short_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -742,23 +719,15 @@ static int mapGraphicGddToShort(void* v, gdd* dd)
|
||||
db->upper_warning_limit=dd[gddAppTypeIndex_dbr_gr_short_alarmHighWarning];
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToShort(&db->value,&vdd);
|
||||
}
|
||||
|
||||
static int mapControlGddToShort(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_ctrl_short* db = (dbr_ctrl_short*)v;
|
||||
int sz=1;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_ctrl_short_value];
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_ctrl_short_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -775,14 +744,7 @@ static int mapControlGddToShort(void* v, gdd* dd)
|
||||
db->upper_warning_limit=dd[gddAppTypeIndex_dbr_ctrl_short_alarmHighWarning];
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToShort(&db->value,&vdd);
|
||||
}
|
||||
|
||||
// -------------map the float structures----------------
|
||||
@@ -811,8 +773,8 @@ static gdd* mapGraphicFloatToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumFloat32,1,&count);
|
||||
else vdd.setPrimType(aitEnumFloat32);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -846,8 +808,8 @@ static gdd* mapControlFloatToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumFloat32,1,&count);
|
||||
else vdd.setPrimType(aitEnumFloat32);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -856,11 +818,10 @@ static gdd* mapControlFloatToGdd(void* v, aitIndex count)
|
||||
|
||||
static int mapGraphicGddToFloat(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_gr_float* db = (dbr_gr_float*)v;
|
||||
int sz=1;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_gr_float_value];
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_gr_float_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -877,23 +838,15 @@ static int mapGraphicGddToFloat(void* v, gdd* dd)
|
||||
db->RISC_pad0 = 0; // shut up purify
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToFloat(&db->value,&vdd);
|
||||
}
|
||||
|
||||
static int mapControlGddToFloat(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_ctrl_float* db = (dbr_ctrl_float*)v;
|
||||
int sz=1;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_ctrl_float_value];
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_ctrl_float_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -912,14 +865,7 @@ static int mapControlGddToFloat(void* v, gdd* dd)
|
||||
db->RISC_pad = 0; // shut up purify
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToFloat(&db->value,&vdd);
|
||||
}
|
||||
|
||||
// -------------map the enum structures----------------
|
||||
@@ -1080,8 +1026,8 @@ static gdd* mapGraphicCharToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt8,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt8);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1114,8 +1060,8 @@ static gdd* mapControlCharToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt8,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt8);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1124,11 +1070,10 @@ static gdd* mapControlCharToGdd(void* v, aitIndex count)
|
||||
|
||||
static int mapGraphicGddToChar(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_gr_char* db = (dbr_gr_char*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_gr_char_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_gr_char_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1144,23 +1089,15 @@ static int mapGraphicGddToChar(void* v, gdd* dd)
|
||||
db->RISC_pad = 0;
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToChar(&db->value,&vdd);
|
||||
}
|
||||
|
||||
static int mapControlGddToChar(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_ctrl_char* db = (dbr_ctrl_char*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_ctrl_char_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_ctrl_char_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1178,14 +1115,7 @@ static int mapControlGddToChar(void* v, gdd* dd)
|
||||
db->RISC_pad = '\0'; // shut up purify
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToChar(&db->value,&vdd);
|
||||
}
|
||||
|
||||
// -------------map the long structures----------------
|
||||
@@ -1213,8 +1143,8 @@ static gdd* mapGraphicLongToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt32,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt32);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1247,8 +1177,8 @@ static gdd* mapControlLongToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt32,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt32);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1257,11 +1187,10 @@ static gdd* mapControlLongToGdd(void* v, aitIndex count)
|
||||
|
||||
static int mapGraphicGddToLong(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_gr_long* db = (dbr_gr_long*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_gr_long_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_gr_long_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1276,23 +1205,15 @@ static int mapGraphicGddToLong(void* v, gdd* dd)
|
||||
db->upper_warning_limit=dd[gddAppTypeIndex_dbr_gr_long_alarmHighWarning];
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToLong(&db->value,&vdd);
|
||||
}
|
||||
|
||||
static int mapControlGddToLong(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_ctrl_long* db = (dbr_ctrl_long*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_ctrl_long_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_ctrl_long_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1309,14 +1230,7 @@ static int mapControlGddToLong(void* v, gdd* dd)
|
||||
db->upper_warning_limit=dd[gddAppTypeIndex_dbr_ctrl_long_alarmHighWarning];
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToLong(&db->value,&vdd);
|
||||
}
|
||||
|
||||
// -------------map the double structures----------------
|
||||
@@ -1345,8 +1259,8 @@ static gdd* mapGraphicDoubleToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumFloat64,1,&count);
|
||||
else vdd.setPrimType(aitEnumFloat64);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1380,8 +1294,8 @@ static gdd* mapControlDoubleToGdd(void* v, aitIndex count)
|
||||
if(vdd.dimension()) vdd.clear();
|
||||
vdd=db->value;
|
||||
} else {
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumInt16,1,&count);
|
||||
else vdd.setPrimType(aitEnumInt16);
|
||||
if(vdd.dimension()!=1) vdd.reset(aitEnumFloat64,1,&count);
|
||||
else vdd.setPrimType(aitEnumFloat64);
|
||||
vdd.setBound(0,0,count);
|
||||
vdd.putRef(&db->value);
|
||||
}
|
||||
@@ -1390,11 +1304,10 @@ static gdd* mapControlDoubleToGdd(void* v, aitIndex count)
|
||||
|
||||
static int mapGraphicGddToDouble(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_gr_double* db = (dbr_gr_double*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_gr_double_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_gr_double_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1411,23 +1324,15 @@ static int mapGraphicGddToDouble(void* v, gdd* dd)
|
||||
db->RISC_pad0 = 0; // shut up purify
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToDouble(&db->value,&vdd);
|
||||
}
|
||||
|
||||
static int mapControlGddToDouble(void* v, gdd* dd)
|
||||
{
|
||||
aitString* str;
|
||||
dbr_ctrl_double* db = (dbr_ctrl_double*)v;
|
||||
gdd& vdd = dd[gddAppTypeIndex_dbr_ctrl_double_value];
|
||||
int sz=1;
|
||||
|
||||
aitString* str;
|
||||
dd[gddAppTypeIndex_dbr_ctrl_double_units].getRef(str);
|
||||
if(str->string()) {
|
||||
strncpy(db->units,str->string(), sizeof(db->units));
|
||||
@@ -1446,14 +1351,7 @@ static int mapControlGddToDouble(void* v, gdd* dd)
|
||||
db->RISC_pad0 = '\0'; // shut up purify
|
||||
|
||||
vdd.getStatSevr(db->status,db->severity);
|
||||
|
||||
if(vdd.dimension()) {
|
||||
sz=vdd.getDataSizeElements();
|
||||
if(vdd.dataPointer()!=v)
|
||||
memcpy(&db->value, vdd.dataPointer(), vdd.getDataSizeBytes());
|
||||
} else
|
||||
db->value=vdd;
|
||||
return sz;
|
||||
return mapGddToDouble(&db->value,&vdd);
|
||||
}
|
||||
|
||||
// ----------------must run this to use mapping functions--------------
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
// $Id$
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.15 1996/12/17 15:04:42 jbk
|
||||
// fixed bug in copyData, sets bounds now
|
||||
//
|
||||
// Revision 1.14 1996/12/06 22:27:44 jhill
|
||||
// fixed wrong start bug in getDD()
|
||||
//
|
||||
@@ -237,6 +240,8 @@ gdd::~gdd(void)
|
||||
if(destruct) destruct->destroy(dataPointer());
|
||||
if(bounds) freeBounds();
|
||||
}
|
||||
setPrimType(aitEnumInvalid);
|
||||
setApplType(0);
|
||||
}
|
||||
|
||||
void gdd::freeBounds(void)
|
||||
@@ -1398,6 +1403,7 @@ gddStatus gdd::copyData(const gdd* dd)
|
||||
gddStatus rc=0;
|
||||
size_t sz;
|
||||
aitUint8* arr;
|
||||
int i;
|
||||
|
||||
if(isFlat() || isManaged() || isContainer())
|
||||
{
|
||||
@@ -1406,29 +1412,33 @@ gddStatus gdd::copyData(const gdd* dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isScalar())
|
||||
// this is really a preliminary version of this function. it
|
||||
// does simple data copies and source dd to this dd.
|
||||
|
||||
// clean up the old data
|
||||
if(destruct)
|
||||
destruct->destroy(dataPointer());
|
||||
else
|
||||
{
|
||||
int i;
|
||||
init(dd->applicationType(),dd->primitiveType(),dd->dimension());
|
||||
const gddBounds* bnds = dd->getBounds();
|
||||
for(i=0;i<dd->dimension();i++) bounds[i]=bnds[i];
|
||||
if(primitiveType()==aitEnumString && isScalar())
|
||||
{
|
||||
aitString* str = (aitString*)dataAddress();
|
||||
str->clear();
|
||||
}
|
||||
}
|
||||
|
||||
if(!aitValid(primitiveType()))
|
||||
setPrimType(dd->primitiveType());
|
||||
|
||||
destroyData();
|
||||
setPrimType(dd->primitiveType());
|
||||
setDimension(dd->dimension());
|
||||
const gddBounds* bnds = dd->getBounds();
|
||||
for(i=0;i<dd->dimension();i++) bounds[i]=bnds[i];
|
||||
sz=describedDataSizeBytes();
|
||||
|
||||
// copy the copy
|
||||
if((arr=new aitUint8[sz]))
|
||||
{
|
||||
destruct=new gddDestructor;
|
||||
setData(arr);
|
||||
if(primitiveType()==dd->primitiveType())
|
||||
memcpy(arr,dd->dataPointer(),sz);
|
||||
else
|
||||
aitConvert(primitiveType(),arr,dd->primitiveType(),
|
||||
dd->dataPointer(),describedDataSizeElements());
|
||||
memcpy(arr,dd->dataPointer(),sz);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1584,10 +1594,13 @@ gdd* gddContainer::getDD(aitIndex index)
|
||||
if (index==0u) {
|
||||
return this;
|
||||
}
|
||||
else {
|
||||
else if(index>getDataSizeElements())
|
||||
return NULL;
|
||||
else
|
||||
{
|
||||
aitIndex i;
|
||||
gdd* dd=(gdd*)dataPointer();
|
||||
for(i=1u;i<index && i<bounds->size();i++) {
|
||||
for(i=1u;i<index;i++) {
|
||||
dd=(gdd*)dd->next();
|
||||
}
|
||||
return dd;
|
||||
|
||||
210
src/gdd/gdd.h
210
src/gdd/gdd.h
@@ -8,6 +8,9 @@
|
||||
* $Id$
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.18 1996/11/04 17:12:50 jbk
|
||||
* fix setFirst
|
||||
*
|
||||
* Revision 1.17 1996/11/02 01:24:49 jhill
|
||||
* strcpy => styrcpy (shuts up purify)
|
||||
*
|
||||
@@ -336,6 +339,7 @@ public:
|
||||
gddStatus getBound(unsigned dim_to_get, aitIndex& first, aitIndex& count);
|
||||
gddStatus registerDestructor(gddDestructor*);
|
||||
gddStatus replaceDestructor(gddDestructor*);
|
||||
void* dataVoid(void) const;
|
||||
void* dataAddress(void) const;
|
||||
void* dataPointer(void) const;
|
||||
void* dataPointer(aitIndex element_offset) const;
|
||||
@@ -408,42 +412,53 @@ public:
|
||||
gdd& operator=(const gdd& v);
|
||||
|
||||
// get a pointer to the data in the DD
|
||||
void getRef(aitFloat64*& d);
|
||||
void getRef(aitFloat32*& d);
|
||||
void getRef(aitUint32*& d);
|
||||
void getRef(aitInt32*& d);
|
||||
void getRef(aitUint16*& d);
|
||||
void getRef(aitInt16*& d);
|
||||
void getRef(aitUint8*& d);
|
||||
void getRef(aitInt8*& d);
|
||||
void getRef(aitString*& d);
|
||||
void getRef(aitFixedString*& d);
|
||||
void getRef(void*& d);
|
||||
void getRef(aitFloat64*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitFloat32*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitUint32*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitInt32*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitUint16*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitInt16*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitUint8*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitInt8*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitString*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(aitFixedString*& d,aitDataFormat=aitLocalDataFormat);
|
||||
void getRef(void*& d,aitDataFormat=aitLocalDataFormat);
|
||||
|
||||
// make the DD points to user data with a destroy method,
|
||||
// put the referenced in and adjust the primitive type
|
||||
void putRef(void* v,aitEnum code, gddDestructor* d = NULL);
|
||||
void putRef(aitFloat64* v, gddDestructor* d = NULL);
|
||||
void putRef(aitFloat32* v, gddDestructor* d = NULL);
|
||||
void putRef(aitUint8* v, gddDestructor* d = NULL);
|
||||
void putRef(aitInt8* v, gddDestructor* d = NULL);
|
||||
void putRef(aitUint16* v, gddDestructor* d = NULL);
|
||||
void putRef(aitInt16* v, gddDestructor* d = NULL);
|
||||
void putRef(aitUint32* v, gddDestructor* d = NULL);
|
||||
void putRef(aitInt32* v, gddDestructor* d = NULL);
|
||||
void putRef(aitString* v, gddDestructor* d = NULL);
|
||||
void putRef(aitFixedString* v, gddDestructor* d = NULL);
|
||||
void putRef(void*,aitEnum,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitFloat64*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitFloat32*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitUint8*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitInt8*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitUint16*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitInt16*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitUint32*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitInt32*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitString*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(aitFixedString*,gddDestructor* =0,aitDataFormat=aitLocalDataFormat);
|
||||
// work with constants
|
||||
void putRef(const aitFloat64* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitFloat32* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitUint8* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitInt8* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitUint16* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitInt16* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitUint32* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitInt32* v, gddDestructor* d = NULL);
|
||||
void putRef(const aitString* v,gddDestructor* d=NULL);
|
||||
void putRef(const aitFixedString* v,gddDestructor* d=NULL);
|
||||
void putRef(const aitFloat64*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitFloat32*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitUint8*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitInt8*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitUint16*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitInt16*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitUint32*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitInt32*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitString*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const aitFixedString*,gddDestructor* =0,
|
||||
aitDataFormat=aitLocalDataFormat);
|
||||
void putRef(const gdd*);
|
||||
|
||||
// get the data in the form the user wants (do conversion)
|
||||
@@ -574,7 +589,7 @@ public:
|
||||
// gdd::operator aitFixedString(void); // not present
|
||||
|
||||
gddStatus genCopy(aitEnum t, const void* d);
|
||||
void adjust(gddDestructor* d, void* v, aitEnum type);
|
||||
void adjust(gddDestructor* d, void* v, aitEnum type, aitDataFormat);
|
||||
void get(aitEnum t,void* v);
|
||||
void set(aitEnum t,void* v);
|
||||
|
||||
@@ -635,6 +650,9 @@ inline gddStatus gdd::Dup(gdd* dd) { return copyStuff(dd,2); }
|
||||
inline void* gdd::dataAddress(void) const { return (void*)&data; }
|
||||
inline void* gdd::dataPointer(void) const { return data.Pointer; }
|
||||
|
||||
inline void* gdd::dataVoid(void) const
|
||||
{ return dimension()?dataPointer():dataAddress(); }
|
||||
|
||||
inline aitUint32 gdd::align8(unsigned long count) const
|
||||
{
|
||||
unsigned long tmp=count&(~((unsigned long)0x07));
|
||||
@@ -648,7 +666,7 @@ inline int gdd::isManaged(void) const { return flags&GDD_MANAGED_MASK; }
|
||||
inline int gdd::isFlat(void) const { return flags&GDD_FLAT_MASK; }
|
||||
inline int gdd::isNoRef(void) const { return flags&GDD_NOREF_MASK; }
|
||||
inline int gdd::isConstant(void) const { return flags&GDD_CONSTANT_MASK; }
|
||||
inline int gdd::isLocalDataFormat(void) const { return flags&GDD_NET_MASK; }
|
||||
inline int gdd::isLocalDataFormat(void) const { return !(flags&GDD_NET_MASK); }
|
||||
inline int gdd::isNetworkDataFormat(void) const
|
||||
{ return !isLocalDataFormat() || aitLocalNetworkDataFormatSame; }
|
||||
|
||||
@@ -656,8 +674,8 @@ inline void gdd::markConstant(void) { flags|=GDD_CONSTANT_MASK; }
|
||||
inline void gdd::markFlat(void) { flags|=GDD_FLAT_MASK; }
|
||||
inline void gdd::markManaged(void) { flags|=GDD_MANAGED_MASK; }
|
||||
inline void gdd::markUnmanaged(void) { flags&=~GDD_MANAGED_MASK; }
|
||||
inline void gdd::markLocalDataFormat(void) { flags|=GDD_NET_MASK; }
|
||||
inline void gdd::markNotLocalDataFormat(void) { flags&=~GDD_NET_MASK; }
|
||||
inline void gdd::markLocalDataFormat(void) { flags&=~GDD_NET_MASK; }
|
||||
inline void gdd::markNotLocalDataFormat(void) { flags|=GDD_NET_MASK; }
|
||||
|
||||
inline void gdd::getTimeStamp(struct timespec* const ts) const
|
||||
{ ts->tv_sec=time_stamp.tv_sec; ts->tv_nsec=time_stamp.tv_nsec; }
|
||||
@@ -755,12 +773,12 @@ inline void gdd::destroyData(void)
|
||||
{
|
||||
if(destruct)
|
||||
{
|
||||
// up to destructor to free the bounds
|
||||
if(isContainer())
|
||||
destruct->destroy(this);
|
||||
else
|
||||
destruct->destroy(dataPointer());
|
||||
|
||||
freeBounds(); // must be done here
|
||||
destruct=NULL;
|
||||
setData(NULL);
|
||||
}
|
||||
@@ -774,7 +792,7 @@ inline void gdd::destroyData(void)
|
||||
}
|
||||
}
|
||||
|
||||
inline void gdd::adjust(gddDestructor* d, void* v, aitEnum type)
|
||||
inline void gdd::adjust(gddDestructor* d, void* v, aitEnum type,aitDataFormat)
|
||||
{
|
||||
if(destruct) destruct->destroy(dataPointer());
|
||||
destruct=d;
|
||||
@@ -810,66 +828,76 @@ inline void gdd::set(aitEnum t,void* v)
|
||||
}
|
||||
|
||||
// -------------------getRef(data pointer) functions----------------
|
||||
inline void gdd::getRef(aitFloat64*& d) { d=(aitFloat64*)dataPointer(); }
|
||||
inline void gdd::getRef(aitFloat32*& d) { d=(aitFloat32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint32*& d) { d=(aitUint32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt32*& d) { d=(aitInt32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint16*& d) { d=(aitUint16*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt16*& d) { d=(aitInt16*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint8*& d) { d=(aitUint8*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt8*& d) { d=(aitInt8*)dataPointer(); }
|
||||
inline void gdd::getRef(void*& d) { d=dataPointer(); }
|
||||
inline void gdd::getRef(aitFixedString*& d) {d=(aitFixedString*)dataPointer();}
|
||||
inline void gdd::getRef(aitString*& d) {
|
||||
inline void gdd::getRef(aitFloat64*& d,aitDataFormat )
|
||||
{ d=(aitFloat64*)dataPointer(); }
|
||||
inline void gdd::getRef(aitFloat32*& d,aitDataFormat )
|
||||
{ d=(aitFloat32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint32*& d,aitDataFormat )
|
||||
{ d=(aitUint32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt32*& d,aitDataFormat )
|
||||
{ d=(aitInt32*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint16*& d,aitDataFormat )
|
||||
{ d=(aitUint16*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt16*& d,aitDataFormat )
|
||||
{ d=(aitInt16*)dataPointer(); }
|
||||
inline void gdd::getRef(aitUint8*& d,aitDataFormat )
|
||||
{ d=(aitUint8*)dataPointer(); }
|
||||
inline void gdd::getRef(aitInt8*& d,aitDataFormat )
|
||||
{ d=(aitInt8*)dataPointer(); }
|
||||
inline void gdd::getRef(void*& d,aitDataFormat )
|
||||
{ d=dataPointer(); }
|
||||
inline void gdd::getRef(aitFixedString*& d,aitDataFormat )
|
||||
{d=(aitFixedString*)dataPointer();}
|
||||
inline void gdd::getRef(aitString*& d,aitDataFormat ) {
|
||||
if(isScalar()) d=(aitString*)dataAddress();
|
||||
else d=(aitString*)dataPointer();
|
||||
}
|
||||
|
||||
// -------------------putRef(data pointer) functions----------------
|
||||
inline void gdd::putRef(void* v,aitEnum code, gddDestructor* d)
|
||||
{ adjust(d, v, code); }
|
||||
inline void gdd::putRef(aitFloat64* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFloat64); }
|
||||
inline void gdd::putRef(aitFloat32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFloat32); }
|
||||
inline void gdd::putRef(aitUint8* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint8); }
|
||||
inline void gdd::putRef(aitInt8* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt8); }
|
||||
inline void gdd::putRef(aitUint16* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint16); }
|
||||
inline void gdd::putRef(aitInt16* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt16); }
|
||||
inline void gdd::putRef(aitUint32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint32); }
|
||||
inline void gdd::putRef(aitInt32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt32); }
|
||||
inline void gdd::putRef(aitString* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumString); }
|
||||
inline void gdd::putRef(aitFixedString* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFixedString); }
|
||||
inline void gdd::putRef(void* v,aitEnum code, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, v, code,f); }
|
||||
inline void gdd::putRef(aitFloat64* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFloat64,f); }
|
||||
inline void gdd::putRef(aitFloat32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFloat32,f); }
|
||||
inline void gdd::putRef(aitUint8* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint8,f); }
|
||||
inline void gdd::putRef(aitInt8* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt8,f); }
|
||||
inline void gdd::putRef(aitUint16* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint16,f); }
|
||||
inline void gdd::putRef(aitInt16* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt16,f); }
|
||||
inline void gdd::putRef(aitUint32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint32,f); }
|
||||
inline void gdd::putRef(aitInt32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt32,f); }
|
||||
inline void gdd::putRef(aitString* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumString,f); }
|
||||
inline void gdd::putRef(aitFixedString* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFixedString,f); }
|
||||
|
||||
// -------------------putRef(const data pointer) functions----------------
|
||||
inline void gdd::putRef(const aitFloat64* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFloat64); markConstant(); }
|
||||
inline void gdd::putRef(const aitFloat32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFloat32); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint8* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint8); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt8* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt8); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint16* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint16); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt16* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt16); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumUint32); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt32* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumInt32); markConstant(); }
|
||||
inline void gdd::putRef(const aitString* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumString); markConstant(); }
|
||||
inline void gdd::putRef(const aitFixedString* v, gddDestructor* d)
|
||||
{ adjust(d, (void*)v, aitEnumFixedString); markConstant(); }
|
||||
inline void gdd::putRef(const aitFloat64* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFloat64,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitFloat32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFloat32,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint8* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint8,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt8* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt8,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint16* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint16,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt16* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt16,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitUint32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumUint32,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitInt32* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumInt32,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitString* v, gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumString,f); markConstant(); }
|
||||
inline void gdd::putRef(const aitFixedString* v,gddDestructor* d,aitDataFormat f)
|
||||
{ adjust(d, (void*)v, aitEnumFixedString,f); markConstant(); }
|
||||
|
||||
// -------------------getConvert(scalar) functions ----------------------
|
||||
inline void gdd::getConvert(aitFloat64& d) { get(aitEnumFloat64,&d); }
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
// $Id$
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.5 1996/10/17 12:41:48 jbk
|
||||
// took out strdup function - replaced with strDup
|
||||
//
|
||||
// Revision 1.4 1996/09/07 13:03:07 jbk
|
||||
// fixes to destroyData function
|
||||
//
|
||||
@@ -438,7 +441,10 @@ gddStatus gddApplicationTypeTable::freeDD(gdd* dd)
|
||||
// that user can attach data to - which causes problems because
|
||||
// the actual structure of the DD is unknown
|
||||
for(i=1;i<attr_table[group][app].total_dds;i++)
|
||||
{
|
||||
dd[i].destroyData();
|
||||
dd[i].setPrimType(attr_table[group][app].proto[i].primitiveType());
|
||||
}
|
||||
|
||||
// fprintf(stderr,"Adding DD to free_list %d\n",app);
|
||||
dd->setNext(attr_table[group][app].free_list);
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
// $Id$
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.4 1996/10/17 12:40:06 jbk
|
||||
// adjusted the network byte ordering dump
|
||||
//
|
||||
// Revision 1.3 1996/08/23 20:28:46 jbk
|
||||
// made dump functions print more useful information
|
||||
//
|
||||
@@ -277,7 +280,7 @@ void gddContainer::dump(void)
|
||||
|
||||
// should use a cursor
|
||||
|
||||
for(i=0;dd=getDD(i);i++)
|
||||
for(i=1;dd=getDD(i);i++)
|
||||
{
|
||||
if(dd->isAtomic()) { add=(gddAtomic*)dd; add->dump(); }
|
||||
if(dd->isScalar()) { sdd=(gddScalar*)dd; sdd->dump(); }
|
||||
|
||||
Reference in New Issue
Block a user