From 3b3482090f7d2a233f0f8965f4834e17f6a5ed52 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Wed, 2 Jun 2021 14:49:04 +0200 Subject: [PATCH] DPL Analysis: out-of-Line LabelMap --- Framework/Core/include/Framework/Array2D.h | 34 +++++----------------- Framework/Core/src/Array2D.cxx | 31 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/Framework/Core/include/Framework/Array2D.h b/Framework/Core/include/Framework/Array2D.h index bcdd1b363afec..1f0a0077ddf79 100644 --- a/Framework/Core/include/Framework/Array2D.h +++ b/Framework/Core/include/Framework/Array2D.h @@ -15,6 +15,7 @@ #include #include #include +extern template class std::unordered_map; namespace o2::framework { @@ -121,36 +122,17 @@ struct Array2D { static constexpr const char* const labels_rows_str = "labels_rows"; static constexpr const char* const labels_cols_str = "labels_cols"; - using labelmap_t = std::unordered_map; struct LabelMap { - LabelMap() - : rowmap{}, - colmap{}, - labels_rows{}, - labels_cols{} - { - } - LabelMap(uint32_t rows, uint32_t cols, std::vector labels_rows_, std::vector labels_cols_) - : rowmap{populate(rows, labels_rows_)}, - colmap{populate(cols, labels_cols_)}, - labels_rows{labels_rows_}, - labels_cols{labels_cols_} - { - } + LabelMap(); + LabelMap(uint32_t rows, uint32_t cols, std::vector labels_rows_, std::vector labels_cols_); - LabelMap(uint32_t size, std::vector labels) - : rowmap{}, - colmap{populate(size, labels)}, - labels_rows{}, - labels_cols{labels} - { - } + LabelMap(uint32_t size, std::vector labels); - LabelMap(LabelMap const& other) = default; - LabelMap(LabelMap&& other) = default; - LabelMap& operator=(LabelMap const& other) = default; - LabelMap& operator=(LabelMap&& other) = default; + LabelMap(LabelMap const& other); + LabelMap(LabelMap&& other); + LabelMap& operator=(LabelMap const& other); + LabelMap& operator=(LabelMap&& other); labelmap_t rowmap; labelmap_t colmap; diff --git a/Framework/Core/src/Array2D.cxx b/Framework/Core/src/Array2D.cxx index 0d1cc8f00480d..5d76fb461ea40 100644 --- a/Framework/Core/src/Array2D.cxx +++ b/Framework/Core/src/Array2D.cxx @@ -12,8 +12,11 @@ #include #include +template class std::unordered_map; + namespace o2::framework { + labelmap_t LabelMap::populate(uint32_t size, std::vector labels) { labelmap_t map; @@ -47,5 +50,33 @@ void LabelMap::replaceLabelsCols(uint32_t size, std::vector const& colmap.clear(); colmap = populate(labels.size(), labels); } +LabelMap::LabelMap() + : rowmap{}, + colmap{}, + labels_rows{}, + labels_cols{} +{ +} + +LabelMap::LabelMap(uint32_t rows, uint32_t cols, std::vector labels_rows_, std::vector labels_cols_) + : rowmap{populate(rows, labels_rows_)}, + colmap{populate(cols, labels_cols_)}, + labels_rows{labels_rows_}, + labels_cols{labels_cols_} +{ +} + +LabelMap::LabelMap(uint32_t size, std::vector labels) + : rowmap{}, + colmap{populate(size, labels)}, + labels_rows{}, + labels_cols{labels} +{ +} + +LabelMap::LabelMap(LabelMap const& other) = default; +LabelMap::LabelMap(LabelMap&& other) = default; +LabelMap& LabelMap::operator=(LabelMap const& other) = default; +LabelMap& LabelMap::operator=(LabelMap&& other) = default; } // namespace o2::framework