diff --git a/modules/database/src/ioc/db/dbAccess.c b/modules/database/src/ioc/db/dbAccess.c index be81d22ed..19f60381d 100644 --- a/modules/database/src/ioc/db/dbAccess.c +++ b/modules/database/src/ioc/db/dbAccess.c @@ -1010,7 +1010,7 @@ devSup* dbDTYPtoDevSup(dbRecordType *prdes, int dtyp) { return (devSup *)ellNth(&prdes->devList, dtyp+1); } -devSup* dbDSETtoDevSup(dbRecordType *prdes, struct dset *pdset) { +devSup* dbDSETtoDevSup(dbRecordType *prdes, dset *pdset) { devSup *pdevSup = (devSup *)ellFirst(&prdes->devList); while (pdevSup) { if (pdset == pdevSup->pdset) return pdevSup; @@ -1032,7 +1032,7 @@ static long dbPutFieldLink(DBADDR *paddr, struct link *plink = (struct link *)paddr->pfield; const char *pstring = (const char *)pbuffer; struct dsxt *old_dsxt = NULL; - struct dset *new_dset = NULL; + dset *new_dset = NULL; struct dsxt *new_dsxt = NULL; devSup *new_devsup = NULL; long status; diff --git a/modules/database/src/ioc/db/dbAccessDefs.h b/modules/database/src/ioc/db/dbAccessDefs.h index 52ac4016d..805dfd41f 100644 --- a/modules/database/src/ioc/db/dbAccessDefs.h +++ b/modules/database/src/ioc/db/dbAccessDefs.h @@ -18,15 +18,16 @@ #include "epicsTypes.h" #include "epicsTime.h" -#include "dbBase.h" -#include "dbAddr.h" -#include "recSup.h" #ifdef INCLdb_accessh_epicsExportSharedSymbols # define epicsExportSharedSymbols # include "shareLib.h" #endif +#include "dbBase.h" +#include "dbAddr.h" +#include "recSup.h" + #ifdef __cplusplus extern "C" { #endif @@ -239,7 +240,7 @@ epicsShareFunc void dbInitEntryFromRecord(struct dbCommon *prec, struct dbEntry *pdbentry); epicsShareFunc devSup* dbDTYPtoDevSup(dbRecordType *prdes, int dtyp); -epicsShareFunc devSup* dbDSETtoDevSup(dbRecordType *prdes, struct dset *pdset); +epicsShareFunc devSup* dbDSETtoDevSup(dbRecordType *prdes, dset *pdset); epicsShareFunc long dbGetField( struct dbAddr *,short dbrType,void *pbuffer,long *options, long *nRequest,void *pfl); diff --git a/modules/database/src/ioc/db/dbCommon.dbd b/modules/database/src/ioc/db/dbCommon.dbd index 1b093e6a8..aa6a63345 100644 --- a/modules/database/src/ioc/db/dbCommon.dbd +++ b/modules/database/src/ioc/db/dbCommon.dbd @@ -199,11 +199,12 @@ interest(4) extra("struct typed_rset *rset") } + %#include "devSup.h" field(DSET,DBF_NOACCESS) { prompt("DSET address") special(SPC_NOMOD) interest(4) - extra("struct dset *dset") + extra("unambiguous_dset *dset") } field(DPVT,DBF_NOACCESS) { prompt("Device Private") diff --git a/modules/database/src/ioc/db/dbTest.c b/modules/database/src/ioc/db/dbTest.c index e23220503..11939545b 100644 --- a/modules/database/src/ioc/db/dbTest.c +++ b/modules/database/src/ioc/db/dbTest.c @@ -712,7 +712,7 @@ long dbior(const char *pdrvName,int interest_level) for (pdevSup = (devSup *)ellFirst(&pdbRecordType->devList); pdevSup; pdevSup = (devSup *)ellNext(&pdevSup->node)) { - struct dset *pdset = pdevSup->pdset; + dset *pdset = pdevSup->pdset; const char *pname = pdevSup->name; if (!pdset || !pname) diff --git a/modules/database/src/ioc/dbStatic/dbBase.h b/modules/database/src/ioc/dbStatic/dbBase.h index df3be4352..9e61211c6 100644 --- a/modules/database/src/ioc/dbStatic/dbBase.h +++ b/modules/database/src/ioc/dbStatic/dbBase.h @@ -19,6 +19,7 @@ #include "ellLib.h" #include "dbDefs.h" #include "recSup.h" +#include "devSup.h" typedef struct dbMenu { ELLNODE node; @@ -40,7 +41,7 @@ typedef struct devSup { char *choice; int link_type; /*Following only available on run time system*/ - struct dset *pdset; + dset *pdset; struct dsxt *pdsxt; /* Extended device support */ }devSup; diff --git a/modules/database/src/ioc/dbStatic/devSup.h b/modules/database/src/ioc/dbStatic/devSup.h index 73dba198c..dc55a35dd 100644 --- a/modules/database/src/ioc/dbStatic/devSup.h +++ b/modules/database/src/ioc/dbStatic/devSup.h @@ -153,6 +153,9 @@ typedef struct dset { /* device support entry table */ typedef typed_dset dset; #endif /* USE_TYPED_DSET */ +/* exists only to disambiguate dset dbCommon::dset */ +typedef dset unambiguous_dset; + /** Fetch INP or OUT link (or NULL if record type has neither). * * Recommended for use in device support init_record() diff --git a/modules/database/src/ioc/misc/iocInit.c b/modules/database/src/ioc/misc/iocInit.c index 05bf7880e..b8aa438a2 100644 --- a/modules/database/src/ioc/misc/iocInit.c +++ b/modules/database/src/ioc/misc/iocInit.c @@ -433,7 +433,7 @@ static void initDevSup(void) for (pdevSup = (devSup *)ellFirst(&pdbRecordType->devList); pdevSup; pdevSup = (devSup *)ellNext(&pdevSup->node)) { - struct dset *pdset = registryDeviceSupportFind(pdevSup->name); + dset *pdset = registryDeviceSupportFind(pdevSup->name); if (!pdset) { errlogPrintf("device support %s not found\n",pdevSup->name); @@ -456,7 +456,7 @@ static void finishDevSup(void) for (pdevSup = (devSup *)ellFirst(&pdbRecordType->devList); pdevSup; pdevSup = (devSup *)ellNext(&pdevSup->node)) { - struct dset *pdset = pdevSup->pdset; + dset *pdset = pdevSup->pdset; if (pdset && pdset->init) pdset->init(1); diff --git a/modules/database/src/ioc/registry/registryDeviceSupport.c b/modules/database/src/ioc/registry/registryDeviceSupport.c index 4310c923d..ab3584ecd 100644 --- a/modules/database/src/ioc/registry/registryDeviceSupport.c +++ b/modules/database/src/ioc/registry/registryDeviceSupport.c @@ -18,12 +18,12 @@ static void *registryID = "device support"; epicsShareFunc int registryDeviceSupportAdd( - const char *name, const struct dset *pdset) + const char *name, const dset *pdset) { return registryAdd(registryID, name, (void *)pdset); } -epicsShareFunc struct dset * registryDeviceSupportFind( +epicsShareFunc dset * registryDeviceSupportFind( const char *name) { return registryFind(registryID, name); diff --git a/modules/database/src/ioc/registry/registryDeviceSupport.h b/modules/database/src/ioc/registry/registryDeviceSupport.h index 52a269863..78cdea6f0 100644 --- a/modules/database/src/ioc/registry/registryDeviceSupport.h +++ b/modules/database/src/ioc/registry/registryDeviceSupport.h @@ -18,8 +18,8 @@ extern "C" { #endif epicsShareFunc int registryDeviceSupportAdd( - const char *name, const struct dset *pdset); -epicsShareFunc struct dset * registryDeviceSupportFind( + const char *name, const dset *pdset); +epicsShareFunc dset * registryDeviceSupportFind( const char *name); #ifdef __cplusplus diff --git a/modules/database/test/std/rec/Makefile b/modules/database/test/std/rec/Makefile index d2eff5504..357dd5306 100644 --- a/modules/database/test/std/rec/Makefile +++ b/modules/database/test/std/rec/Makefile @@ -11,6 +11,7 @@ TOP = ../../../../.. include $(TOP)/configure/CONFIG USR_CPPFLAGS += -DUSE_TYPED_RSET +USR_CPPFLAGS += -DUSE_TYPED_DSET TESTLIBRARY = dbRecStdTest diff --git a/modules/database/test/std/rec/dbHeaderTest.c b/modules/database/test/std/rec/dbHeaderTest.c index 260287888..0e2785a8f 100644 --- a/modules/database/test/std/rec/dbHeaderTest.c +++ b/modules/database/test/std/rec/dbHeaderTest.c @@ -98,7 +98,6 @@ # include #endif #include -#include #include #include #include