From 42e29be696e94e67fbb77a92774a4b125610a316 Mon Sep 17 00:00:00 2001 From: hades Date: Wed, 14 Mar 2001 21:50:25 +0000 Subject: [PATCH] *** empty log message *** --- allParam/ca/server/paramBlobRecord.cc | 64 ++++++++--------- allParam/ca/server/paramBlobRecord.h | 1 - allParam/ca/server/paramFilenameRecord.cc | 8 +-- allParam/ca/server/paramIntRecord.cc | 83 ++++++++++++----------- allParam/ca/server/paramRecord.cc | 4 +- allParam/ca/server/paramStringRecord.cc | 10 ++- 6 files changed, 83 insertions(+), 87 deletions(-) diff --git a/allParam/ca/server/paramBlobRecord.cc b/allParam/ca/server/paramBlobRecord.cc index b56833d..3d63606 100644 --- a/allParam/ca/server/paramBlobRecord.cc +++ b/allParam/ca/server/paramBlobRecord.cc @@ -1,6 +1,7 @@ #define _POSIX_C_SOURCE 199509L extern "C" { + #include #include } @@ -25,12 +26,9 @@ ParamBlobRecord::ParamBlobRecord(caServer& cas, const Param *p, const char *rn, ParamBlobRecord::~ParamBlobRecord() { - for(int k = 0 ; k < index ; k++) { - delete ourValue[k]; - } } -epicsShareFunc aitEnum ParamRecord::bestExternalType() const +epicsShareFunc aitEnum ParamBlobRecord::bestExternalType() const { return aitEnumUint32; } @@ -53,20 +51,20 @@ epicsShareFunc aitIndex ParamBlobRecord::maxBound(unsigned dimension) const gddAppFuncTableStatus ParamBlobRecord::readValue(gdd &value) { - if(index == 1) { - aitString stringValue = new aitString; - - stringValue = ourValue[0]; - - value.putConvert(stringValue); + FILE *blob; + size_t size; + int retVal; + + retVal = Param_getBlob(param, name, idx, &size, &blob); + index = 1 + (((unsigned int) size - 1) / sizeof(aitUint32)); + if((retVal != 0) || (index == 0)) { + return S_cas_noRead; } else { - aitString *stringValue; - stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { - stringValue[k] = ourValue[k]; - } + aitUint32 *ourValue = new aitUint32[index]; + fread(ourValue, sizeof(aitUint32), index, blob); + fclose(blob); - value.putRef(stringValue); + value.putRef(ourValue); } return S_casApp_success; @@ -74,29 +72,27 @@ gddAppFuncTableStatus ParamBlobRecord::readValue(gdd &value) caStatus ParamBlobRecord::scan() { - caStatus retVal; - caServer *pCAS = this->getCAS(); + FILE *blob; + size_t size; + int retVal; + ArrayDestructor *pDest; - if(index == 1) { - aitString stringValue = new aitString; - val = new gddScalar(gddAppType_value, aitEnumString); - - stringValue = ourValue[0]; + caServer *pCAS = this->getCAS(); - val->putConvert(stringValue); + retVal = Param_getBlob(param, name, idx, &size, &blob); + index = 1 + (((unsigned int) size - 1) / sizeof(aitUint32)); + if((retVal != 0) || (index == 0)) { + return S_cas_noRead; } else { - aitString *stringValue; + aitUint32 *ourValue = new aitUint32[index]; + fread(ourValue, sizeof(aitUint32), index, blob); + fclose(blob); val = new gddAtomic(gddAppType_value, aitEnumString, 1, index); - stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { - stringValue[k] = ourValue[k]; - } + pDest = new ArrayDestructor; - ArrayDestructor *pDest = new ArrayDestructor; - - val->putRef(stringValue, pDest); + val->putRef(ourValue, pDest); } val->setStat(epicsAlarmNone); @@ -107,9 +103,9 @@ caStatus ParamBlobRecord::scan() this->postEvent (select, *val); } - retVal = S_cas_success; + delete pDest; - return retVal; + return S_cas_success; } caStatus ParamBlobRecord::read(const casCtx &ctx, gdd &prototype) diff --git a/allParam/ca/server/paramBlobRecord.h b/allParam/ca/server/paramBlobRecord.h index 797f8b2..0b4a4b6 100644 --- a/allParam/ca/server/paramBlobRecord.h +++ b/allParam/ca/server/paramBlobRecord.h @@ -6,7 +6,6 @@ class ParamBlobRecord : public ParamRecord { private: aitIndex index; - char *ourValue[PARAM_MAX_ARRAY_LEN]; gddAppFuncTable funcTable; public: diff --git a/allParam/ca/server/paramFilenameRecord.cc b/allParam/ca/server/paramFilenameRecord.cc index 99c897d..b0637a2 100644 --- a/allParam/ca/server/paramFilenameRecord.cc +++ b/allParam/ca/server/paramFilenameRecord.cc @@ -25,12 +25,12 @@ ParamFilenameRecord::ParamFilenameRecord(caServer& cas, const Param *p, const ch ParamFilenameRecord::~ParamFilenameRecord() { - for(int k = 0 ; k < index ; k++) { + for(unsigned int k = 0 ; k < index ; k++) { delete ourValue[k]; } } -epicsShareFunc aitEnum ParamRecord::bestExternalType() const +epicsShareFunc aitEnum ParamFilenameRecord::bestExternalType() const { return aitEnumString; } @@ -62,7 +62,7 @@ gddAppFuncTableStatus ParamFilenameRecord::readValue(gdd &value) } else { aitString *stringValue; stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { + for (unsigned int k = 0 ; k < index ; k++) { stringValue[k] = ourValue[k]; } @@ -90,7 +90,7 @@ caStatus ParamFilenameRecord::scan() val = new gddAtomic(gddAppType_value, aitEnumString, 1, index); stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { + for (unsigned int k = 0 ; k < index ; k++) { stringValue[k] = ourValue[k]; } diff --git a/allParam/ca/server/paramIntRecord.cc b/allParam/ca/server/paramIntRecord.cc index 316ac84..fdbfa6f 100644 --- a/allParam/ca/server/paramIntRecord.cc +++ b/allParam/ca/server/paramIntRecord.cc @@ -25,12 +25,9 @@ ParamIntRecord::ParamIntRecord(caServer& cas, const Param *p, const char *rn, co ParamIntRecord::~ParamIntRecord() { - for(int k = 0 ; k < index ; k++) { - delete ourValue[k]; - } } -epicsShareFunc aitEnum ParamRecord::bestExternalType() const +epicsShareFunc aitEnum ParamIntRecord::bestExternalType() const { return aitEnumUint32; } @@ -53,20 +50,26 @@ epicsShareFunc aitIndex ParamIntRecord::maxBound(unsigned dimension) const gddAppFuncTableStatus ParamIntRecord::readValue(gdd &value) { - if(index == 1) { - aitString stringValue = new aitString; - - stringValue = ourValue[0]; - - value.putConvert(stringValue); + int rows; + int retVal; + retVal = Param_getIntArray(param, name, idx, PARAM_MAX_ARRAY_LEN, &rows, ourValue); + index = (unsigned int) rows; + if((retVal != 0) || (index == 0)) { + return S_cas_noRead; + } else if(index == 1) { + aitUint32 intValue; + + intValue = ourValue[0]; + + value.putConvert(intValue); } else { - aitString *stringValue; - stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { - stringValue[k] = ourValue[k]; + aitUint32 *intValue = new aitUint32[index]; + for (unsigned int k = 0 ; k < index ; k++) { + intValue[k] = ourValue[k]; } - value.putRef(stringValue); + value.putRef(intValue); + delete [] intValue; } return S_casApp_success; @@ -74,29 +77,34 @@ gddAppFuncTableStatus ParamIntRecord::readValue(gdd &value) caStatus ParamIntRecord::scan() { - caStatus retVal; caServer *pCAS = this->getCAS(); - if(index == 1) { - aitString stringValue = new aitString; - val = new gddScalar(gddAppType_value, aitEnumString); + int rows; + int retVal; + ArrayDestructor *pDest; - stringValue = ourValue[0]; + retVal = Param_getIntArray(param, name, idx, PARAM_MAX_ARRAY_LEN, &rows, ourValue); + index = (unsigned int) rows; + if((retVal != 0) || (index == 0)) { + return S_cas_noRead; + } else if(index == 1) { + aitUint32 intValue; + val = new gddScalar(gddAppType_value, aitEnumUint32); - val->putConvert(stringValue); - } else { - aitString *stringValue; - - val = new gddAtomic(gddAppType_value, aitEnumString, 1, index); + intValue = ourValue[0]; - stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { - stringValue[k] = ourValue[k]; + val->putConvert(intValue); + } else { + pDest = new ArrayDestructor; + aitUint32 *intValue = new aitUint32[index]; + for (unsigned int k = 0 ; k < index ; k++) { + intValue[k] = ourValue[k]; } - ArrayDestructor *pDest = new ArrayDestructor; + val = new gddAtomic(gddAppType_value, aitEnumUint32, 1, index); - val->putRef(stringValue, pDest); + val->putRef(intValue, pDest); + delete [] intValue; } val->setStat(epicsAlarmNone); @@ -107,9 +115,9 @@ caStatus ParamIntRecord::scan() this->postEvent (select, *val); } - retVal = S_cas_success; + delete pDest; - return retVal; + return S_cas_success; } caStatus ParamIntRecord::read(const casCtx &ctx, gdd &prototype) @@ -119,16 +127,11 @@ caStatus ParamIntRecord::read(const casCtx &ctx, gdd &prototype) caStatus ParamIntRecord::write(const casCtx &ctx, gdd &value) { - caServer *pCAS = this->getCAS(); - - aitString stringValue; - - value.getConvert(stringValue); + aitUint32 intValue; - char ourValue[PARAM_MAX_VALUE_LEN]; - strcpy(ourValue, (const char *) stringValue); + value.getConvert(intValue); - Param_storeString(param, name, idx, ourValue); + Param_storeInt(param, name, idx, (unsigned long int) intValue); return S_cas_success; } diff --git a/allParam/ca/server/paramRecord.cc b/allParam/ca/server/paramRecord.cc index c1c43ea..7b07378 100644 --- a/allParam/ca/server/paramRecord.cc +++ b/allParam/ca/server/paramRecord.cc @@ -34,10 +34,10 @@ ParamRecord::ParamRecord(caServer& cas, const Param *p, const char *rn, const ch strcpy(idx, buf3); } - for (int i = 0 ; i < strlen(name) ; i++) { + for (unsigned int i = 0 ; i < strlen(name) ; i++) { name[i] = tolower(name[i]); } - for (int i = 0 ; i < strlen(idx) ; i++) { + for (unsigned int i = 0 ; i < strlen(idx) ; i++) { idx[i] = tolower(idx[i]); } interest = aitFalse; diff --git a/allParam/ca/server/paramStringRecord.cc b/allParam/ca/server/paramStringRecord.cc index 1b356a7..060228c 100644 --- a/allParam/ca/server/paramStringRecord.cc +++ b/allParam/ca/server/paramStringRecord.cc @@ -25,12 +25,12 @@ ParamStringRecord::ParamStringRecord(caServer& cas, const Param *p, const char * ParamStringRecord::~ParamStringRecord() { - for(int k = 0 ; k < index ; k++) { + for(unsigned int k = 0 ; k < index ; k++) { delete ourValue[k]; } } -epicsShareFunc aitEnum ParamRecord::bestExternalType() const +epicsShareFunc aitEnum ParamStringRecord::bestExternalType() const { return aitEnumString; } @@ -62,7 +62,7 @@ gddAppFuncTableStatus ParamStringRecord::readValue(gdd &value) } else { aitString *stringValue; stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { + for (unsigned int k = 0 ; k < index ; k++) { stringValue[k] = ourValue[k]; } @@ -90,7 +90,7 @@ caStatus ParamStringRecord::scan() val = new gddAtomic(gddAppType_value, aitEnumString, 1, index); stringValue = new aitString[index]; - for (int k = 0 ; k < index ; k++) { + for (unsigned int k = 0 ; k < index ; k++) { stringValue[k] = ourValue[k]; } @@ -119,8 +119,6 @@ caStatus ParamStringRecord::read(const casCtx &ctx, gdd &prototype) caStatus ParamStringRecord::write(const casCtx &ctx, gdd &value) { - caServer *pCAS = this->getCAS(); - aitString stringValue; value.getConvert(stringValue); -- 2.43.0