diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.h b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.h index 2a474a19798d5a1370604342afe2079df978a24c..28ad17a2ed6fc07a1c57940a858ac106634f715a 100644 --- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.h +++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.h @@ -45,8 +45,8 @@ typedef std::unordered_map<std::string, std::vector<std::vector<std::variant<int class GeoPublisher { public: - GeoPublisher() {} - virtual ~GeoPublisher() {} + GeoPublisher() = default; + virtual ~GeoPublisher() = default; template<class N, typename T> void publishNode(N node,T keyT); diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.tpp b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.tpp index f12b3d691ce4713e426cc96c7ed8f152f06b3cc3..cd040dbeabf2c3676392b71681445a84106f8048 100644 --- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.tpp +++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPublisher.tpp @@ -9,17 +9,14 @@ template<typename Iter> void GeoPublisher::printInsertionStatus(Iter it, bool su template<class N, typename T> void GeoPublisher::publishNode(N node,T keyT) { std::any key = keyT; + static_assert(std::is_same_v<GeoVFullPhysVol*, N> || std::is_same_v<GeoAlignableTransform*, N>, + "ERROR!!! The node type is not currently supported by 'GeoPublisher'.\n If in doubt, please ask to `geomodel-developers@cern.ch'.\n"); if constexpr (std::is_same_v<GeoVFullPhysVol*, N>) { const auto [iter, success] = m_publishedFPV.insert( {node, key} ); if(!success) printInsertionStatus(iter, success); } else if constexpr (std::is_same_v<GeoAlignableTransform*, N>) { const auto [iter, success] = m_publishedAXF.insert( {node, key} ); if(!success) printInsertionStatus(iter, success); - } else { - std::cout << "ERROR!!! The node type '" << typeid(N).name() - << " is not currently supported by 'GeoPublisher'.\n" - << "If in doubt, please ask to `geomodel-developers@cern.ch'.\n" - << std::endl; } } diff --git a/GeoModelIO/GeoModelRead/GeoModelRead/ReadGeoModel.tpp b/GeoModelIO/GeoModelRead/GeoModelRead/ReadGeoModel.tpp index 8c51af661550e11e9806648fc46f621a2222fcb0..82d3f4a91805c5a1f250312f71f9054630a37186 100644 --- a/GeoModelIO/GeoModelRead/GeoModelRead/ReadGeoModel.tpp +++ b/GeoModelIO/GeoModelRead/GeoModelRead/ReadGeoModel.tpp @@ -22,6 +22,9 @@ namespace GeoModelIO { std::string keyType = ""; std::vector<std::vector<std::string>> vecRecords; + static_assert(std::is_same_v<GeoFullPhysVol*, N> || std::is_same_v<GeoAlignableTransform*, N> , + "ERROR! The node type is not currently supported. If in doubt, please ask to 'geomodel-developers@cern.ch'.\n"); + if constexpr ( std::is_same_v<GeoFullPhysVol*, N> ) { if(doCheckTable){ bool tableExists = m_dbManager->checkTable("PublishedFullPhysVols_"+publisherName); @@ -34,12 +37,6 @@ namespace GeoModelIO { if(!tableExists) return mapNodes; } vecRecords = m_dbManager->getPublishedAXFTable( publisherName ); - } else { - std::cout << "ERROR! The node type '" << typeid(N).name() - << "' is not currently supported.\n" - << "If in doubt, please ask to 'geomodel-developers@cern.ch'.\n" - << "Exiting...\n"; - exit(EXIT_FAILURE); } unsigned ii = 0; for( auto const &record : vecRecords ) {