From 41e78ee91ca058ead90fa1c8ee4339d2ef1b0f31 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 24 May 2019 20:04:36 +0300 Subject: [PATCH] Move NeedsCollection into its own header and adjust for new Sfinae struct --- source/collection.h | 16 +--------------- source/meta.h | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 source/meta.h diff --git a/source/collection.h b/source/collection.h index 89e801f..34b1260 100644 --- a/source/collection.h +++ b/source/collection.h @@ -2,10 +2,10 @@ #define MSP_DATAFILE_COLLECTION_H_ #include -#include #include #include "collectionsource.h" #include "loader.h" +#include "meta.h" /* XXX This file is a big mess with too many things in it. However, the dependencies between those things make it difficult to split up. */ @@ -13,20 +13,6 @@ dependencies between those things make it difficult to split up. */ namespace Msp { namespace DataFile { -/** -Helper struct to determine whether a Loader has a Collection typedef. -*/ -template -struct NeedsCollection: public Sfinae -{ - template - static Yes f(typename U::Collection *); - template - static No f(...); - - enum { value = Evaluate(0))>::value }; -}; - class CollectionItemTypeBase; template diff --git a/source/meta.h b/source/meta.h new file mode 100644 index 0000000..ac6ec1b --- /dev/null +++ b/source/meta.h @@ -0,0 +1,24 @@ +#ifndef MSP_DATAFILE_META_H_ +#define MSP_DATAFILE_META_H_ + +#include + +namespace Msp { +namespace DataFile { + +/** +Helper struct to determine whether a Loader has a Collection typedef. +*/ +struct CheckCollectionType: Sfinae +{ + template + static Yes f(typename T::Collection *); + using Sfinae::f; +}; + +template struct NeedsCollection: Sfinae::Evaluate { }; + +} // namespace DataFile +} // namespace Msp + +#endif -- 2.43.0