track INP/OUT field in struct dbFldDes
avoid string comparisons
This commit is contained in:
@@ -942,8 +942,7 @@ static long dbPutFieldLink(DBADDR *paddr,
|
||||
if (status) goto finish;
|
||||
|
||||
isDevLink = ellCount(&precord->rdes->devList) > 0 &&
|
||||
(strcmp(pfldDes->name, "INP") == 0 ||
|
||||
strcmp(pfldDes->name, "OUT") == 0);
|
||||
pfldDes->isDevLink;
|
||||
|
||||
dbLockSetGblLock();
|
||||
dbLockSetRecordLock(precord);
|
||||
|
||||
@@ -81,6 +81,7 @@ typedef struct dbFldDes{ /* field description */
|
||||
ctType base; /*base for integer to string conversions*/
|
||||
short promptgroup; /*prompt, i.e. gui group */
|
||||
short interest; /*interest level */
|
||||
short isDevLink; /* true for INP/OUT fields */
|
||||
asLevel as_level; /*access security level */
|
||||
char *initial; /*initial value */
|
||||
/*If (DBF_MENU,DBF_DEVICE) ftPvt is (pdbMenu,pdbDeviceMenu) */
|
||||
|
||||
@@ -484,6 +484,8 @@ static void dbRecordtypeFieldHead(char *name,char *type)
|
||||
allocTemp(pdbFldDes);
|
||||
pdbFldDes->name = epicsStrDup(name);
|
||||
pdbFldDes->as_level = ASL1;
|
||||
pdbFldDes->isDevLink = strcmp(pdbFldDes->name, "INP")==0 ||
|
||||
strcmp(pdbFldDes->name, "OUT")==0;
|
||||
for(i=0; i<DBF_NTYPES; i++) {
|
||||
if(strcmp(type,pamapdbfType[i].strvalue)==0) {
|
||||
pdbFldDes->field_type = pamapdbfType[i].value;
|
||||
|
||||
@@ -2106,8 +2106,7 @@ long dbPutString(DBENTRY *pdbentry,const char *pstring)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (strcmp(pflddes->name, "INP") == 0 ||
|
||||
strcmp(pflddes->name, "OUT") == 0) {
|
||||
if (pflddes->isDevLink) {
|
||||
status = setLinkType(pdbentry); /* This uses DTYP to look up and set plink->type, necessary for default DTYP */
|
||||
if (status) {
|
||||
errMessage(status,"in dbPutString from setLinkType");
|
||||
|
||||
@@ -484,8 +484,7 @@ static void doResolveLinks(dbRecordType *pdbRecordType, dbCommon *precord,
|
||||
dbFldDes *pdbFldDes = papFldDes[link_ind[j]];
|
||||
DBLINK *plink = (DBLINK *)((char *)precord + pdbFldDes->offset);
|
||||
|
||||
if (ellCount(&precord->rdes->devList) > 0 &&
|
||||
(strcmp(pdbFldDes->name, "INP") == 0 || strcmp(pdbFldDes->name, "OUT") == 0)) {
|
||||
if (ellCount(&precord->rdes->devList) > 0 && pdbFldDes->isDevLink) {
|
||||
devSup *pdevSup = dbDTYPtoDevSup(pdbRecordType, precord->dtyp);
|
||||
|
||||
if (pdevSup) {
|
||||
|
||||
Reference in New Issue
Block a user