Adjusted dbMapper.cc so gdd to string function work correctly
Added checks in gdd.h so that get(pointer) functions work with scalars
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
// $Id$
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.13 1996/08/23 20:29:35 jbk
|
||||
// completed fixes for the aitString and fixed string management
|
||||
//
|
||||
// Revision 1.12 1996/08/22 21:05:43 jbk
|
||||
// More fixes to make strings and fixed string work better.
|
||||
//
|
||||
@@ -113,7 +116,7 @@ gddDbrToAitTable gddDbrToAit[] = {
|
||||
{ aitEnumInt32, 0, "value" },
|
||||
{ aitEnumFloat64, 0, "value" },
|
||||
// Graphic
|
||||
{ aitEnumFixedString, 0, "dbr_gr_string" },
|
||||
{ aitEnumFixedString, 0, "value" },
|
||||
{ aitEnumInt16, 0, "dbr_gr_short" },
|
||||
{ aitEnumFloat32, 0, "dbr_gr_float" },
|
||||
{ aitEnumEnum16, 0, "dbr_gr_enum" },
|
||||
@@ -121,7 +124,7 @@ gddDbrToAitTable gddDbrToAit[] = {
|
||||
{ aitEnumInt32, 0, "dbr_gr_long" },
|
||||
{ aitEnumFloat64, 0, "dbr_gr_double" },
|
||||
// control
|
||||
{ aitEnumFixedString, 0, "dbr_ctrl_string" },
|
||||
{ aitEnumFixedString, 0, "value" },
|
||||
{ aitEnumInt16, 0, "dbr_ctrl_short" },
|
||||
{ aitEnumFloat32, 0, "dbr_ctrl_float" },
|
||||
{ aitEnumEnum16, 0, "dbr_ctrl_enum" },
|
||||
@@ -169,7 +172,7 @@ static int mapGddToString(void* v, gdd* dd) {
|
||||
dbx=(aitFixedString*)dd->dataPointer();
|
||||
|
||||
int len = dd->getDataSizeElements();
|
||||
if(dbx!=db) dd->get(db);
|
||||
if(dbx!=db) dd->get(*db);
|
||||
return len;
|
||||
}
|
||||
|
||||
@@ -380,7 +383,7 @@ static int mapStsGddToString(void* v, gdd* dd)
|
||||
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(dbx!=dbv) dd->get(*dbv);
|
||||
dd->getStatSevr(db->status,db->severity);
|
||||
return dd->getDataSizeElements();
|
||||
}
|
||||
@@ -521,7 +524,7 @@ static int mapTimeGddToString(void* v, gdd* dd)
|
||||
else
|
||||
dbx=(aitFixedString*)dd->dataPointer();
|
||||
|
||||
if(dbv!=dbx) dd->get(dbv);
|
||||
if(dbv!=dbx) dd->get(*dbv);
|
||||
|
||||
dd->getStatSevr(db->status,db->severity);
|
||||
dd->getTimeStamp((aitTimeStamp*)&db->stamp);
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
* $Id$
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.14 1996/09/07 13:03:05 jbk
|
||||
* fixes to destroyData function
|
||||
*
|
||||
* Revision 1.13 1996/09/04 22:47:09 jhill
|
||||
* allow vxWorks 5.1 and gnu win 32
|
||||
*
|
||||
@@ -978,49 +981,81 @@ inline gddStatus gdd::put(aitType* d) {
|
||||
|
||||
// ---------------------get(pointer) functions--------------------------
|
||||
inline void gdd::get(void* d) {
|
||||
aitConvert(primitiveType(),d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(primitiveType(),d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(primitiveType(),d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(void* d,aitEnum e) {
|
||||
aitConvert(e,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(e,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(e,d,primitiveType(),dataPointer(),getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitFloat64* d)
|
||||
{
|
||||
aitConvert(aitEnumFloat64,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumFloat64,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumFloat64,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitFloat32* d) {
|
||||
aitConvert(aitEnumFloat32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumFloat32,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumFloat32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitUint32* d) {
|
||||
aitConvert(aitEnumUint32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumUint32,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumUint32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitInt32* d) {
|
||||
aitConvert(aitEnumInt32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumInt32,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumInt32,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitUint16* d) {
|
||||
aitConvert(aitEnumUint16,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumUint16,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumUint16,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitInt16* d) {
|
||||
aitConvert(aitEnumInt16,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumInt16,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumInt16,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitUint8* d) {
|
||||
aitConvert(aitEnumUint8,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumUint8,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumUint8,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitString* d) {
|
||||
aitConvert(aitEnumString,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumString,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumString,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
inline void gdd::get(aitFixedString* d) {
|
||||
aitConvert(aitEnumFixedString,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
if(isScalar())
|
||||
aitConvert(aitEnumFixedString,d,primitiveType(),dataAddress(),1);
|
||||
else
|
||||
aitConvert(aitEnumFixedString,d,primitiveType(),dataPointer(),
|
||||
getDataSizeElements());
|
||||
}
|
||||
|
||||
// special case for string scalar to aitInt8 array!
|
||||
|
||||
Reference in New Issue
Block a user