Skip to content
Snippets Groups Projects
Commit c249b380 authored by Jakob Blomer's avatar Jakob Blomer Committed by Axel Naumann
Browse files

[forest] move template specializations in corresponding namespace

This is a workaround for GCC bug #56480, #78274, present in gcc 4.8 -- 7.0.
parent d19eca3f
No related branches found
No related tags found
No related merge requests found
...@@ -109,15 +109,9 @@ public: ...@@ -109,15 +109,9 @@ public:
} }
}; };
} // namespace Detail
} // namespace Experimental
} // namespace ROOT
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<float, ROOT::Experimental::EColumnType::kReal32> class RColumnElement<float, EColumnType::kReal32> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(float); static constexpr size_t kSize = sizeof(float);
...@@ -125,8 +119,7 @@ public: ...@@ -125,8 +119,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<double, ROOT::Experimental::EColumnType::kReal64> class RColumnElement<double, EColumnType::kReal64> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(double); static constexpr size_t kSize = sizeof(double);
...@@ -134,8 +127,7 @@ public: ...@@ -134,8 +127,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<std::int32_t, ROOT::Experimental::EColumnType::kInt32> class RColumnElement<std::int32_t, EColumnType::kInt32> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(std::int32_t); static constexpr size_t kSize = sizeof(std::int32_t);
...@@ -143,8 +135,7 @@ public: ...@@ -143,8 +135,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<std::uint32_t, ROOT::Experimental::EColumnType::kInt32> class RColumnElement<std::uint32_t, EColumnType::kInt32> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(std::uint32_t); static constexpr size_t kSize = sizeof(std::uint32_t);
...@@ -152,8 +143,7 @@ public: ...@@ -152,8 +143,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<std::int64_t, ROOT::Experimental::EColumnType::kInt64> class RColumnElement<std::int64_t, EColumnType::kInt64> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(std::int64_t); static constexpr size_t kSize = sizeof(std::int64_t);
...@@ -161,8 +151,7 @@ public: ...@@ -161,8 +151,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<std::uint64_t, ROOT::Experimental::EColumnType::kInt64> class RColumnElement<std::uint64_t, EColumnType::kInt64> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(std::uint64_t); static constexpr size_t kSize = sizeof(std::uint64_t);
...@@ -170,22 +159,23 @@ public: ...@@ -170,22 +159,23 @@ public:
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement< class RColumnElement<ClusterSize_t, EColumnType::kIndex> : public RColumnElementBase {
ROOT::Experimental::ClusterSize_t, ROOT::Experimental::EColumnType::kIndex>
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(ROOT::Experimental::ClusterSize_t); static constexpr size_t kSize = sizeof(ROOT::Experimental::ClusterSize_t);
explicit RColumnElement(ROOT::Experimental::ClusterSize_t* value) : RColumnElementBase(value, kSize, kIsMappable) {} explicit RColumnElement(ClusterSize_t* value) : RColumnElementBase(value, kSize, kIsMappable) {}
}; };
template <> template <>
class ROOT::Experimental::Detail::RColumnElement<char, ROOT::Experimental::EColumnType::kByte> class RColumnElement<char, EColumnType::kByte> : public RColumnElementBase {
: public ROOT::Experimental::Detail::RColumnElementBase {
public: public:
static constexpr bool kIsMappable = true; static constexpr bool kIsMappable = true;
static constexpr size_t kSize = sizeof(char); static constexpr size_t kSize = sizeof(char);
explicit RColumnElement(char* value) : RColumnElementBase(value, kSize, kIsMappable) {} explicit RColumnElement(char* value) : RColumnElementBase(value, kSize, kIsMappable) {}
}; };
} // namespace Detail
} // namespace Experimental
} // namespace ROOT
#endif #endif
...@@ -343,12 +343,12 @@ public: ...@@ -343,12 +343,12 @@ public:
void CommitCluster() final; void CommitCluster() final;
}; };
} // namespace Experimental
} // namespace ROOT /// Template specializations for concrete C++ types
template <> template <>
class ROOT::Experimental::RField<ROOT::Experimental::ClusterSize_t> : public ROOT::Experimental::Detail::RFieldBase { class RField<ClusterSize_t> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "ROOT::Experimental::ClusterSize_t"; } static std::string MyTypeName() { return "ROOT::Experimental::ClusterSize_t"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -392,11 +392,8 @@ public: ...@@ -392,11 +392,8 @@ public:
}; };
/// Template specializations for concrete C++ types
template <> template <>
class ROOT::Experimental::RField<float> : public ROOT::Experimental::Detail::RFieldBase { class RField<float> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "float"; } static std::string MyTypeName() { return "float"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -436,7 +433,7 @@ public: ...@@ -436,7 +433,7 @@ public:
template <> template <>
class ROOT::Experimental::RField<double> : public ROOT::Experimental::Detail::RFieldBase { class RField<double> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "double"; } static std::string MyTypeName() { return "double"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -475,7 +472,7 @@ public: ...@@ -475,7 +472,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::RField<std::int32_t> : public ROOT::Experimental::Detail::RFieldBase { class RField<std::int32_t> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "std::int32_t"; } static std::string MyTypeName() { return "std::int32_t"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -514,7 +511,7 @@ public: ...@@ -514,7 +511,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::RField<std::uint32_t> : public ROOT::Experimental::Detail::RFieldBase { class RField<std::uint32_t> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "std::uint32_t"; } static std::string MyTypeName() { return "std::uint32_t"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -553,7 +550,7 @@ public: ...@@ -553,7 +550,7 @@ public:
}; };
template <> template <>
class ROOT::Experimental::RField<std::uint64_t> : public ROOT::Experimental::Detail::RFieldBase { class RField<std::uint64_t> : public Detail::RFieldBase {
public: public:
static std::string MyTypeName() { return "std::uint64_t"; } static std::string MyTypeName() { return "std::uint64_t"; }
explicit RField(std::string_view name) explicit RField(std::string_view name)
...@@ -593,7 +590,7 @@ public: ...@@ -593,7 +590,7 @@ public:
template <> template <>
class ROOT::Experimental::RField<std::string> : public ROOT::Experimental::Detail::RFieldBase { class RField<std::string> : public Detail::RFieldBase {
private: private:
ClusterSize_t fIndex; ClusterSize_t fIndex;
Detail::RColumnElement<ClusterSize_t, EColumnType::kIndex> fElemIndex; Detail::RColumnElement<ClusterSize_t, EColumnType::kIndex> fElemIndex;
...@@ -637,7 +634,7 @@ public: ...@@ -637,7 +634,7 @@ public:
template <typename ItemT> template <typename ItemT>
class ROOT::Experimental::RField<std::vector<ItemT>> : public ROOT::Experimental::RFieldVector { class RField<std::vector<ItemT>> : public RFieldVector {
using ContainerT = typename std::vector<ItemT>; using ContainerT = typename std::vector<ItemT>;
public: public:
static std::string MyTypeName() { return "std::vector<" + RField<ItemT>::MyTypeName() + ">"; } static std::string MyTypeName() { return "std::vector<" + RField<ItemT>::MyTypeName() + ">"; }
...@@ -670,7 +667,7 @@ public: ...@@ -670,7 +667,7 @@ public:
* RVec implementation as we can with std::vector * RVec implementation as we can with std::vector
*/ */
template <typename ItemT> template <typename ItemT>
class ROOT::Experimental::RField<ROOT::VecOps::RVec<ItemT>> : public Detail::RFieldBase { class RField<ROOT::VecOps::RVec<ItemT>> : public Detail::RFieldBase {
using ContainerT = typename ROOT::VecOps::RVec<ItemT>; using ContainerT = typename ROOT::VecOps::RVec<ItemT>;
private: private:
size_t fItemSize; size_t fItemSize;
...@@ -757,4 +754,7 @@ public: ...@@ -757,4 +754,7 @@ public:
size_t GetValueSize() const final { return sizeof(ContainerT); } size_t GetValueSize() const final { return sizeof(ContainerT); }
}; };
} // namespace Experimental
} // namespace ROOT
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment