IsMultipleOf.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_UTIL_VALUETRAITS_ISMULTIPLEOF_H_
36 #define _BLAZE_UTIL_VALUETRAITS_ISMULTIPLEOF_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/util/FalseType.h>
44 #include <blaze/util/SelectType.h>
45 #include <blaze/util/TrueType.h>
46 
47 
48 namespace blaze {
49 
50 //=================================================================================================
51 //
52 // CLASS DEFINITION
53 //
54 //=================================================================================================
55 
56 //*************************************************************************************************
78 template< size_t M, size_t N >
79 struct IsMultipleOf : public SelectType<M%N,FalseType,TrueType>::Type
80 {
81  public:
82  //**********************************************************************************************
84  enum { value = ( M%N )?( 0 ):( 1 ) };
85  typedef typename SelectType<M%N,FalseType,TrueType>::Type Type;
87  //**********************************************************************************************
88 };
89 //*************************************************************************************************
90 
91 
92 //*************************************************************************************************
97 template< size_t M >
98 struct IsMultipleOf<M,0UL> : public FalseType
99 {
100  public:
101  //**********************************************************************************************
102  enum { value = 0 };
103  typedef FalseType Type;
104  //**********************************************************************************************
105 };
107 //*************************************************************************************************
108 
109 
110 //*************************************************************************************************
115 template<>
116 struct IsMultipleOf<0,0> : public TrueType
117 {
118  public:
119  //**********************************************************************************************
120  enum { value = 1 };
121  typedef TrueType Type;
122  //**********************************************************************************************
123 };
125 //*************************************************************************************************
126 
127 } // namespace blaze
128 
129 #endif
Header file for the FalseType type/value trait base class.
Compile time check for a multiplicative relationship of two integral values.This value trait tests wh...
Definition: IsMultipleOf.h:79
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the SelectType class template.
boost::false_type FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: FalseType.h:61
boost::true_type TrueType
Type traits base class.The TrueType class is used as base class for type traits and value traits that...
Definition: TrueType.h:61
Header file for the TrueType type/value trait base class.