#define MSP_DATAFILE_COLLECTION_H_
#include <msp/core/maputils.h>
-#include <msp/core/meta.h>
#include <msp/core/refptr.h>
#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. */
namespace Msp {
namespace DataFile {
-/**
-Helper struct to determine whether a Loader has a Collection typedef.
-*/
-template<typename T>
-struct NeedsCollection: public Sfinae
-{
- template<typename U>
- static Yes f(typename U::Collection *);
- template<typename U>
- static No f(...);
-
- enum { value = Evaluate<sizeof(f<T>(0))>::value };
-};
-
class CollectionItemTypeBase;
template<typename T>
--- /dev/null
+#ifndef MSP_DATAFILE_META_H_
+#define MSP_DATAFILE_META_H_
+
+#include <msp/core/meta.h>
+
+namespace Msp {
+namespace DataFile {
+
+/**
+Helper struct to determine whether a Loader has a Collection typedef.
+*/
+struct CheckCollectionType: Sfinae
+{
+ template<typename T>
+ static Yes f(typename T::Collection *);
+ using Sfinae::f;
+};
+
+template<typename T> struct NeedsCollection: Sfinae::Evaluate<CheckCollectionType, T> { };
+
+} // namespace DataFile
+} // namespace Msp
+
+#endif