From e6712208eae34196ade7c9d0c68e20d700e09ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Fri, 29 Jun 2018 18:25:56 +0200 Subject: Avoid multiple explicit instantiations definition of templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to the C++ standard 14.7 clause 5, "an explicit instantiation definition shall appear at most once in a program". Move the instantiation from the individual implementation files to the interface implementation file. Signed-off-by: Stefan BrĂ¼ns --- src/devices/bus/coco/coco_dcmodem.cpp | 2 -- src/devices/bus/coco/coco_gmc.cpp | 2 -- src/devices/bus/coco/coco_multi.cpp | 2 -- src/devices/bus/coco/coco_orch90.cpp | 2 -- src/devices/bus/coco/coco_rs232.cpp | 2 -- src/devices/bus/coco/coco_ssc.cpp | 2 -- src/devices/bus/coco/coco_t4426.cpp | 2 -- src/devices/bus/coco/cococart.cpp | 3 +++ src/devices/bus/coco/dragon_fdc.cpp | 3 --- src/devices/bus/ss50/interface.cpp | 3 +++ src/devices/bus/ss50/mpc.cpp | 2 -- src/devices/bus/ss50/mps.cpp | 2 -- 12 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/devices/bus/coco/coco_dcmodem.cpp b/src/devices/bus/coco/coco_dcmodem.cpp index d4cba829a0d..d1555215922 100644 --- a/src/devices/bus/coco/coco_dcmodem.cpp +++ b/src/devices/bus/coco/coco_dcmodem.cpp @@ -101,8 +101,6 @@ ROM_START(coco_dcmodem) ROM_END DEFINE_DEVICE_TYPE_PRIVATE(COCO_DCMODEM, device_cococart_interface, coco_dc_modem_device, "coco_dcmodem", "CoCo Direct Connect Modem PAK") -template class device_finder; -template class device_finder; //------------------------------------------------- diff --git a/src/devices/bus/coco/coco_gmc.cpp b/src/devices/bus/coco/coco_gmc.cpp index 310e037fe17..706bdf3cb1b 100644 --- a/src/devices/bus/coco/coco_gmc.cpp +++ b/src/devices/bus/coco/coco_gmc.cpp @@ -63,8 +63,6 @@ MACHINE_CONFIG_END //************************************************************************** DEFINE_DEVICE_TYPE_PRIVATE(COCO_PAK_GMC, device_cococart_interface, coco_pak_gmc_device, "cocopakgmc", "CoCo Games Master Cartridge") -template class device_finder; -template class device_finder; //------------------------------------------------- // coco_pak_device - constructor diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp index 6f42c45d946..e8ae24c7b60 100644 --- a/src/devices/bus/coco/coco_multi.cpp +++ b/src/devices/bus/coco/coco_multi.cpp @@ -214,8 +214,6 @@ INPUT_PORTS_END //************************************************************************** DEFINE_DEVICE_TYPE_PRIVATE(COCO_MULTIPAK, device_cococart_interface, coco_multipak_device, "coco_multipack", "CoCo Multi-Pak Interface") -template class device_finder; -template class device_finder; diff --git a/src/devices/bus/coco/coco_orch90.cpp b/src/devices/bus/coco/coco_orch90.cpp index f1dcdf3ff28..979acd423a1 100644 --- a/src/devices/bus/coco/coco_orch90.cpp +++ b/src/devices/bus/coco/coco_orch90.cpp @@ -123,5 +123,3 @@ MACHINE_CONFIG_END //************************************************************************** DEFINE_DEVICE_TYPE_PRIVATE(COCO_ORCH90, device_cococart_interface, coco_orch90_device, "coco_orch90", "CoCo Orch-90 PAK") -template class device_finder; -template class device_finder; diff --git a/src/devices/bus/coco/coco_rs232.cpp b/src/devices/bus/coco/coco_rs232.cpp index 914b5f9c0c2..774ab1a98ff 100644 --- a/src/devices/bus/coco/coco_rs232.cpp +++ b/src/devices/bus/coco/coco_rs232.cpp @@ -112,5 +112,3 @@ const tiny_rom_entry *coco_rs232_device::device_rom_region() const //************************************************************************** DEFINE_DEVICE_TYPE_PRIVATE(COCO_RS232, device_cococart_interface, coco_rs232_device, "coco_rs232", "CoCo Deluxe RS-232 PAK") -template class device_finder; -template class device_finder; diff --git a/src/devices/bus/coco/coco_ssc.cpp b/src/devices/bus/coco/coco_ssc.cpp index b79e82c78cd..eff344b2d3f 100644 --- a/src/devices/bus/coco/coco_ssc.cpp +++ b/src/devices/bus/coco/coco_ssc.cpp @@ -146,8 +146,6 @@ namespace DEFINE_DEVICE_TYPE_PRIVATE(COCO_SSC, device_cococart_interface, coco_ssc_device, "coco_ssc", "CoCo S/SC PAK"); DEFINE_DEVICE_TYPE(COCOSSC_SAC, cocossc_sac_device, "cocossc_sac", "CoCo SSC Sound Activity Circuit"); -template class device_finder; -template class device_finder; //************************************************************************** diff --git a/src/devices/bus/coco/coco_t4426.cpp b/src/devices/bus/coco/coco_t4426.cpp index 896b5ef9f53..988ddd0233a 100644 --- a/src/devices/bus/coco/coco_t4426.cpp +++ b/src/devices/bus/coco/coco_t4426.cpp @@ -225,8 +225,6 @@ INPUT_PORTS_END //************************************************************************** DEFINE_DEVICE_TYPE_PRIVATE(COCO_T4426, device_cococart_interface, coco_t4426_device, "coco_t4426", "Terco CNC Programming Station 4426 multi cart") -template class device_finder; -template class device_finder; //************************************************************************** // LIVE DEVICE diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp index 30ac0b04fdc..93d1c42453f 100644 --- a/src/devices/bus/coco/cococart.cpp +++ b/src/devices/bus/coco/cococart.cpp @@ -447,6 +447,9 @@ std::string cococart_slot_device::get_default_card_software(get_default_card_sof // CoCo cartridge slots //************************************************************************** +template class device_finder; +template class device_finder; + //------------------------------------------------- // device_cococart_interface - constructor //------------------------------------------------- diff --git a/src/devices/bus/coco/dragon_fdc.cpp b/src/devices/bus/coco/dragon_fdc.cpp index cbaf7a321c5..9ca1758b887 100644 --- a/src/devices/bus/coco/dragon_fdc.cpp +++ b/src/devices/bus/coco/dragon_fdc.cpp @@ -86,9 +86,6 @@ #define WD2797_TAG "wd2797" -template class device_finder; -template class device_finder; - /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/bus/ss50/interface.cpp b/src/devices/bus/ss50/interface.cpp index 2beb4e85770..b17f54f9c68 100644 --- a/src/devices/bus/ss50/interface.cpp +++ b/src/devices/bus/ss50/interface.cpp @@ -203,6 +203,9 @@ WRITE_LINE_MEMBER(ss50_interface_port_device::f600_1200_w) // SS-50 CARD INTERFACE //************************************************************************** +template class device_finder; +template class device_finder; + //------------------------------------------------- // ss50_card_interface - construction //------------------------------------------------- diff --git a/src/devices/bus/ss50/mpc.cpp b/src/devices/bus/ss50/mpc.cpp index 40fbf4a76de..8489e23e29b 100644 --- a/src/devices/bus/ss50/mpc.cpp +++ b/src/devices/bus/ss50/mpc.cpp @@ -191,5 +191,3 @@ WRITE_LINE_MEMBER(ss50_mpc_device::f300_w) // device type definition DEFINE_DEVICE_TYPE_PRIVATE(SS50_MPC, ss50_card_interface, ss50_mpc_device, "ss50_mpc", "MP-C Serial Control Interface") -template class device_finder; -template class device_finder; diff --git a/src/devices/bus/ss50/mps.cpp b/src/devices/bus/ss50/mps.cpp index d15b7288ba0..7f6479db32e 100644 --- a/src/devices/bus/ss50/mps.cpp +++ b/src/devices/bus/ss50/mps.cpp @@ -180,5 +180,3 @@ WRITE_LINE_MEMBER(ss50_mps_device::acia_irq_w) // device type definition DEFINE_DEVICE_TYPE_PRIVATE(SS50_MPS, ss50_card_interface, ss50_mps_device, "ss50_mps", "MP-S Serial Interface") -template class device_finder; -template class device_finder; -- cgit v1.2.3