|
Video Processing Framework
|
00001 #ifndef TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00002 #define TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00003 00004 #if !defined(__GNUC__) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4) // GCC supports "pragma once" correctly since 3.4 00005 #pragma once 00006 #endif 00007 00008 00009 namespace YAML 00010 { 00011 template <typename> 00012 struct is_numeric { enum { value = false }; }; 00013 00014 template <> struct is_numeric <char> { enum { value = true }; }; 00015 template <> struct is_numeric <unsigned char> { enum { value = true }; }; 00016 template <> struct is_numeric <int> { enum { value = true }; }; 00017 template <> struct is_numeric <unsigned int> { enum { value = true }; }; 00018 template <> struct is_numeric <long int> { enum { value = true }; }; 00019 template <> struct is_numeric <unsigned long int> { enum { value = true }; }; 00020 template <> struct is_numeric <short int> { enum { value = true }; }; 00021 template <> struct is_numeric <unsigned short int> { enum { value = true }; }; 00022 #if defined(_MSC_VER) && (_MSC_VER < 1310) 00023 template <> struct is_numeric <__int64> { enum { value = true }; }; 00024 template <> struct is_numeric <unsigned __int64> { enum { value = true }; }; 00025 #else 00026 template <> struct is_numeric <long long> { enum { value = true }; }; 00027 template <> struct is_numeric <unsigned long long> { enum { value = true }; }; 00028 #endif 00029 template <> struct is_numeric <float> { enum { value = true }; }; 00030 template <> struct is_numeric <double> { enum { value = true }; }; 00031 template <> struct is_numeric <long double> { enum { value = true }; }; 00032 00033 template <bool, class T = void> 00034 struct enable_if_c { 00035 typedef T type; 00036 }; 00037 00038 template <class T> 00039 struct enable_if_c<false, T> {}; 00040 00041 template <class Cond, class T = void> 00042 struct enable_if : public enable_if_c<Cond::value, T> {}; 00043 00044 template <bool, class T = void> 00045 struct disable_if_c { 00046 typedef T type; 00047 }; 00048 00049 template <class T> 00050 struct disable_if_c<true, T> {}; 00051 00052 template <class Cond, class T = void> 00053 struct disable_if : public disable_if_c<Cond::value, T> {}; 00054 } 00055 00056 #endif // TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00057