dbStatic: Add field type lookup routines
This commit is contained in:
@@ -486,13 +486,10 @@ static void dbRecordtypeFieldHead(char *name,char *type)
|
||||
allocTemp(pdbFldDes);
|
||||
pdbFldDes->name = epicsStrDup(name);
|
||||
pdbFldDes->as_level = ASL1;
|
||||
for(i=0; i<DBF_NTYPES; i++) {
|
||||
if(strcmp(type,pamapdbfType[i].strvalue)==0) {
|
||||
pdbFldDes->field_type = pamapdbfType[i].value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
yyerrorAbort("Illegal Field Type");
|
||||
i = dbFindFieldType(type);
|
||||
if (i < 0)
|
||||
yyerrorAbort("Illegal Field Type");
|
||||
pdbFldDes->field_type = i;
|
||||
}
|
||||
|
||||
static void dbRecordtypeFieldItem(char *name,char *value)
|
||||
|
||||
@@ -928,15 +928,8 @@ long dbWriteRecordTypeFP(
|
||||
int j;
|
||||
|
||||
pdbFldDes = pdbRecordType->papFldDes[i];
|
||||
fprintf(fp,"\tfield(%s,",pdbFldDes->name);
|
||||
for(j=0; j<DBF_NTYPES; j++) {
|
||||
if(pamapdbfType[j].value == pdbFldDes->field_type) break;
|
||||
}
|
||||
if(j>=DBF_NTYPES)
|
||||
fprintf(stderr,"\t field_type: %d\n",
|
||||
pdbFldDes->field_type);
|
||||
else
|
||||
fprintf(fp,"%s) {\n",pamapdbfType[j].strvalue);
|
||||
fprintf(fp,"\tfield(%s,%s) {\n",pdbFldDes->name,
|
||||
dbGetFieldTypeString(pdbFldDes->field_type));
|
||||
if(pdbFldDes->prompt)
|
||||
fprintf(fp,"\t\tprompt(\"%s\")\n",pdbFldDes->prompt);
|
||||
if(pdbFldDes->initial)
|
||||
@@ -2755,6 +2748,30 @@ brkTable * dbFindBrkTable(dbBase *pdbbase,const char *name)
|
||||
return((brkTable *)pgph->userPvt);
|
||||
}
|
||||
|
||||
const char * dbGetFieldTypeString(int dbfType)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i < DBF_NTYPES; i++) {
|
||||
if (pamapdbfType[i].value == dbfType) {
|
||||
return pamapdbfType[i].strvalue;
|
||||
}
|
||||
}
|
||||
return "BAD_DBF_TYPE";
|
||||
}
|
||||
|
||||
int dbFindFieldType(const char *type)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DBF_NTYPES; i++) {
|
||||
if (strcmp(type, pamapdbfType[i].strvalue) == 0) {
|
||||
return pamapdbfType[i].value;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
dbMenu * dbFindMenu(dbBase *pdbbase,const char *name)
|
||||
{
|
||||
GPHENTRY *pgph;
|
||||
@@ -3143,13 +3160,8 @@ void dbDumpField(
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
for(j=0; j<DBF_NTYPES; j++) {
|
||||
if(pamapdbfType[j].value == pdbFldDes->field_type) break;
|
||||
}
|
||||
if(j>=DBF_NTYPES)
|
||||
printf("\t field_type: %d\n", pdbFldDes->field_type);
|
||||
else
|
||||
printf("\t field_type: %s\n", pamapdbfType[j].strvalue);
|
||||
printf("\t field_type: %s\n",
|
||||
dbGetFieldTypeString(pdbFldDes->field_type));
|
||||
printf("\tprocess_passive: %u\n",pdbFldDes->process_passive);
|
||||
printf("\t property: %u\n",pdbFldDes->prop);
|
||||
printf("\t base: %d\n",pdbFldDes->base);
|
||||
|
||||
@@ -190,6 +190,9 @@ epicsShareFunc long dbPutInfo(DBENTRY *pdbentry,
|
||||
epicsShareFunc brkTable * dbFindBrkTable(DBBASE *pdbbase,
|
||||
const char *name);
|
||||
|
||||
epicsShareFunc const char * dbGetFieldTypeString(int dbfType);
|
||||
epicsShareFunc int dbFindFieldType(const char *type);
|
||||
|
||||
epicsShareFunc dbMenu * dbFindMenu(DBBASE *pdbbase,
|
||||
const char *name);
|
||||
epicsShareFunc char ** dbGetMenuChoices(DBENTRY *pdbentry);
|
||||
|
||||
Reference in New Issue
Block a user