diff --git a/src/gdd/dbMapper.cc b/src/gdd/dbMapper.cc index 6d54719b4..e69475bbd 100644 --- a/src/gdd/dbMapper.cc +++ b/src/gdd/dbMapper.cc @@ -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); diff --git a/src/gdd/gdd.h b/src/gdd/gdd.h index e4fc47a4b..bd19b11d6 100644 --- a/src/gdd/gdd.h +++ b/src/gdd/gdd.h @@ -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!