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:
Jim Kowalkowski
1996-09-10 15:06:29 +00:00
parent 6fbc050c96
commit 2d0dd7828f
2 changed files with 65 additions and 27 deletions

View File

@@ -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);

View File

@@ -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!