Tapkee
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
methods_traits.hpp
Go to the documentation of this file.
1 /* This software is distributed under BSD 3-clause license (see LICENSE file).
2  *
3  * Copyright (c) 2012-2013 Sergey Lisitsyn, Fernando Iglesias
4  */
5 
6 #ifndef TAPKEE_METHOD_TRAITS_H_
7 #define TAPKEE_METHOD_TRAITS_H_
8 
9 namespace tapkee
10 {
11 
14 template <int method> struct MethodTraits
15 {
16  static const bool needs_kernel;
17  static const bool needs_distance;
18  static const bool needs_features;
19 };
20 
21 #define METHOD_TRAIT(X,kernel_needed,distance_needed,features_needed) \
22 template <> const bool MethodTraits<X>::needs_kernel = kernel_needed; \
23 template <> const bool MethodTraits<X>::needs_distance = distance_needed; \
24 template <> const bool MethodTraits<X>::needs_features = features_needed \
25 
26 #define METHOD_THAT_NEEDS_ONLY_KERNEL_IS(X) METHOD_TRAIT(X,true,false,false)
27 #define METHOD_THAT_NEEDS_ONLY_DISTANCE_IS(X) METHOD_TRAIT(X,false,true,false)
28 #define METHOD_THAT_NEEDS_KERNEL_AND_FEATURES_IS(X) METHOD_TRAIT(X,true,false,true)
29 #define METHOD_THAT_NEEDS_DISTANCE_AND_FEATURES_IS(X) METHOD_TRAIT(X,false,true,true)
30 #define METHOD_THAT_NEEDS_ONLY_FEATURES_IS(X) METHOD_TRAIT(X,false,false,true)
31 #define METHOD_THAT_NEEDS_NOTHING_IS(X) METHOD_TRAIT(X,false,false,false)
32 }
33 
34 #endif
Traits used to obtain information about dimension reduction methods compile-time. ...
static const bool needs_kernel
static const bool needs_features
static const bool needs_distance