From fe4cad085ef035e70f0642eb36cbfb997d6977b9 Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Thu, 21 Dec 2000 15:57:21 +0000 Subject: [PATCH] Change the registerRecordDeviceDriver.pl script to create registerRecordDeviceDriver.c as a C++ file (.cpp) so that it can use a static constructor to register the registerRecordDeviceDriver() command with the IOC shell Remove the old registerRecordDeviceDriverRegister.[ch] source files. --- src/iocsh/Makefile | 3 -- src/iocsh/ioccrf.cpp | 3 +- .../registerRecordDeviceDriverRegister.c | 35 ------------------- .../registerRecordDeviceDriverRegister.h | 25 ------------- .../RULES.registerRecordDeviceDriver | 10 +++--- src/makeBaseApp/top/exampleApp/src/Makefile | 3 +- src/registry/registerRecordDeviceDriver.pl | 28 +++++++++++++-- 7 files changed, 33 insertions(+), 74 deletions(-) delete mode 100644 src/iocsh/registerRecordDeviceDriverRegister.c delete mode 100644 src/iocsh/registerRecordDeviceDriverRegister.h diff --git a/src/iocsh/Makefile b/src/iocsh/Makefile index b8a3bea30..063f1a732 100644 --- a/src/iocsh/Makefile +++ b/src/iocsh/Makefile @@ -16,7 +16,6 @@ INC += dbAccessRegister.h INC += ioccrfRegisterCommon.h INC += asTestRegister.h INC += envRegister.h -INC += registerRecordDeviceDriverRegister.h # general contents of library on all platforms @@ -42,8 +41,6 @@ LIBSRCS += iocUtil.c LIBRARY_IOC = iocsh -OBJS += registerRecordDeviceDriverRegister - iocsh_DLL_LIBS = miscIoc rsrvIoc dbtoolsIoc asIoc dbIoc registryIoc dbStaticIoc Com registryIoc_DIR=$(EPICS_BASE_LIB) dbtoolsIoc_DIR=$(EPICS_BASE_LIB) diff --git a/src/iocsh/ioccrf.cpp b/src/iocsh/ioccrf.cpp index 2e77fd0d2..3c04277c5 100644 --- a/src/iocsh/ioccrf.cpp +++ b/src/iocsh/ioccrf.cpp @@ -482,9 +482,8 @@ static void localRegister (void) * Register commands on application startup */ #include "ioccrfRegisterCommon.h" -#include "registerRecordDeviceDriverRegister.h" class IoccrfRegister { public: - IoccrfRegister() { localRegister(); ioccrfRegisterCommon(); registerRecordDeviceDriverRegister(); } + IoccrfRegister() { localRegister(); ioccrfRegisterCommon(); } }; static IoccrfRegister ioccrfRegisterObj; diff --git a/src/iocsh/registerRecordDeviceDriverRegister.c b/src/iocsh/registerRecordDeviceDriverRegister.c deleted file mode 100644 index 5ffe66887..000000000 --- a/src/iocsh/registerRecordDeviceDriverRegister.c +++ /dev/null @@ -1,35 +0,0 @@ -/* registerRecordDeviceDriverRegister.c */ -/* Author: Marty Kraimer Date: 04MAY2000 */ - -/********************COPYRIGHT NOTIFICATION********************************** -This software was developed under a United States Government license -described on the COPYRIGHT_UniversityOfChicago file included as part -of this distribution. -****************************************************************************/ -#include -#include -#include -#include -#include - -#include "dbAccess.h" -#include "ioccrf.h" -#include "registerRecordDeviceDriverRegister.h" - -/* registerRecordDeviceDriver */ -static const ioccrfArg registerRecordDeviceDriverArg0 = - { "pdbbase",ioccrfArgPdbbase}; -static const ioccrfArg *registerRecordDeviceDriverArgs[1] = - {®isterRecordDeviceDriverArg0}; -static const ioccrfFuncDef registerRecordDeviceDriverFuncDef = - {"registerRecordDeviceDriver",1,registerRecordDeviceDriverArgs}; -static void registerRecordDeviceDriverCallFunc(const ioccrfArgBuf *args) -{ - registerRecordDeviceDriver(pdbbase); -} - -void registerRecordDeviceDriverRegister(void) -{ - ioccrfRegister( - ®isterRecordDeviceDriverFuncDef,registerRecordDeviceDriverCallFunc); -} diff --git a/src/iocsh/registerRecordDeviceDriverRegister.h b/src/iocsh/registerRecordDeviceDriverRegister.h deleted file mode 100644 index db848e533..000000000 --- a/src/iocsh/registerRecordDeviceDriverRegister.h +++ /dev/null @@ -1,25 +0,0 @@ -/* registerRecordDeviceDriverRegister.h */ -/* Author: Marty Kraimer Date: 02MAY2000 */ - -/********************COPYRIGHT NOTIFICATION********************************** -This software was developed under a United States Government license -described on the COPYRIGHT_UniversityOfChicago file included as part -of this distribution. -****************************************************************************/ - -#ifndef INCregisterRecordDeviceDriverRegisterH -#define INCregisterRecordDeviceDriverRegisterH - -#include "shareLib.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void registerRecordDeviceDriverRegister(void); - -#ifdef __cplusplus -} -#endif - -#endif /*INCregisterRecordDeviceDriverRegisterH*/ diff --git a/src/makeBaseApp/top/configure/RULES.registerRecordDeviceDriver b/src/makeBaseApp/top/configure/RULES.registerRecordDeviceDriver index a9e11119f..0f4f850f2 100644 --- a/src/makeBaseApp/top/configure/RULES.registerRecordDeviceDriver +++ b/src/makeBaseApp/top/configure/RULES.registerRecordDeviceDriver @@ -1,8 +1,8 @@ -registerRecordDeviceDriver.o: registerRecordDeviceDriver.c +registerRecordDeviceDriver.o: registerRecordDeviceDriver.cpp -registerRecordDeviceDriver.c: $(DBDNAME:%=$(INSTALL_DBD)/%) - $(RM) registerRecordDeviceDriver.c - $(PERL) $(EPICS_BASE_HOST_BIN)/registerRecordDeviceDriver.pl $(DBDNAME:%=$(INSTALL_DBD)/%) > registerRecordDeviceDriver.c +registerRecordDeviceDriver.cpp: $(DBDNAME:%=$(INSTALL_DBD)/%) + $(RM) registerRecordDeviceDriver.cpp + $(PERL) $(EPICS_BASE_HOST_BIN)/registerRecordDeviceDriver.pl $(DBDNAME:%=$(INSTALL_DBD)/%) > registerRecordDeviceDriver.cpp clean:: - @$(RM) registerRecordDeviceDriver.c + @$(RM) registerRecordDeviceDriver.cpp diff --git a/src/makeBaseApp/top/exampleApp/src/Makefile b/src/makeBaseApp/top/exampleApp/src/Makefile index fb7e26c77..cb6fe867c 100644 --- a/src/makeBaseApp/top/exampleApp/src/Makefile +++ b/src/makeBaseApp/top/exampleApp/src/Makefile @@ -53,12 +53,11 @@ example_SRCS += xxxRecord.c example_SRCS += devXxxSoft.c example_SRCS += caMonitor.c -example_SRCS_DEFAULT += registerRecordDeviceDriver.c +example_SRCS_DEFAULT += registerRecordDeviceDriver.cpp example_SRCS_DEFAULT += exampleMain.c example_SRCS_vxWorks += -nil- #example_SRCS_vxWorks += sncExample.c -example_OBJS_DEFAULT += $(EPICS_BASE_BIN)/registerRecordDeviceDriverRegister example_OBJS_vxWorks += $(EPICS_BASE_BIN)/registerRecordDeviceDriver example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary #example_OBJS_vxWorks += $(SEQ_BIN)/seq diff --git a/src/registry/registerRecordDeviceDriver.pl b/src/registry/registerRecordDeviceDriver.pl index 0d95daac5..4453ba876 100755 --- a/src/registry/registerRecordDeviceDriver.pl +++ b/src/registry/registerRecordDeviceDriver.pl @@ -27,8 +27,9 @@ close(INP) or die "$! closing file"; # beginning of generated routine print << "END" ; -/*#registerRecordDeviceDriver.c */ +/*#registerRecordDeviceDriver.cpp */ /* THIS IS A GENERATED FILE. DO NOT EDIT */ +extern "C" { #include #include #include @@ -45,7 +46,7 @@ print << "END" ; #include "registryRecordType.h" #include "registryDeviceSupport.h" #include "registryDriverSupport.h" - +#include "ioccrf.h" END #definitions for recordtype @@ -177,4 +178,27 @@ END print << "END" ; return(0); } + +/* registerRecordDeviceDriver */ +static const ioccrfArg registerRecordDeviceDriverArg0 = + {"pdbbase",ioccrfArgPdbbase}; +static const ioccrfArg *registerRecordDeviceDriverArgs[1] = + {®isterRecordDeviceDriverArg0}; +static const ioccrfFuncDef registerRecordDeviceDriverFuncDef = + {"registerRecordDeviceDriver",1,registerRecordDeviceDriverArgs}; +static void registerRecordDeviceDriverCallFunc(const ioccrfArgBuf *args) +{ + registerRecordDeviceDriver(pdbbase); +} + +/* + * Register commands on application startup + */ +class IoccrfReg { + public: + IoccrfReg() { ioccrfRegister(®isterRecordDeviceDriverFuncDef,registerRecordDeviceDriverCallFunc);} +}; +namespace { IoccrfReg ioccrfReg; } + +} /* extern "C" */ END