All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Builtin.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_CONSTRAINTS_BUILTIN_H_
23 #define _BLAZE_UTIL_CONSTRAINTS_BUILTIN_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
31 #include <blaze/util/Suffix.h>
33 
34 
35 namespace blaze {
36 
37 //=================================================================================================
38 //
39 // MUST_BE_BUILTIN_TYPE CONSTRAINT
40 //
41 //=================================================================================================
42 
43 //*************************************************************************************************
53 template< bool > struct CONSTRAINT_MUST_BE_BUILTIN_TYPE_FAILED;
54 template<> struct CONSTRAINT_MUST_BE_BUILTIN_TYPE_FAILED<true> { enum { value = 1 }; };
56 //*************************************************************************************************
57 
58 
59 //*************************************************************************************************
65 #define BLAZE_CONSTRAINT_MUST_BE_BUILTIN_TYPE(T) \
66  typedef \
67  ::blaze::CONSTRAINT_TEST< \
68  ::blaze::CONSTRAINT_MUST_BE_BUILTIN_TYPE_FAILED< ::blaze::IsBuiltin<T>::value >::value > \
69  BLAZE_JOIN( CONSTRAINT_MUST_BE_BUILTIN_TYPE_TYPEDEF, __LINE__ )
70 //*************************************************************************************************
71 
72 
73 
74 
75 //=================================================================================================
76 //
77 // MUST_NOT_BE_BUILTIN_TYPE CONSTRAINT
78 //
79 //=================================================================================================
80 
81 //*************************************************************************************************
91 template< bool > struct CONSTRAINT_MUST_NOT_BE_BUILTIN_TYPE_FAILED;
92 template<> struct CONSTRAINT_MUST_NOT_BE_BUILTIN_TYPE_FAILED<true> { enum { value = 1 }; };
94 //*************************************************************************************************
95 
96 
97 //*************************************************************************************************
103 #define BLAZE_CONSTRAINT_MUST_NOT_BE_BUILTIN_TYPE(T) \
104  typedef \
105  ::blaze::CONSTRAINT_TEST< \
106  ::blaze::CONSTRAINT_MUST_NOT_BE_BUILTIN_TYPE_FAILED< !::blaze::IsBuiltin<T>::value >::value > \
107  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_BUILTIN_TYPE_TYPEDEF, __LINE__ )
108 //*************************************************************************************************
109 
110 } // namespace blaze
111 
112 #endif