All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Extent.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_TYPETRAITS_EXTENT_H_
23 #define _BLAZE_UTIL_TYPETRAITS_EXTENT_H_
24 
25 
26 namespace blaze {
27 
28 //=================================================================================================
29 //
30 // CLASS DEFINITION
31 //
32 //=================================================================================================
33 
34 //*************************************************************************************************
55 template< typename T, unsigned int N >
56 struct Extent
57 {
58  public:
59  //**********************************************************************************************
61  enum { value = 0 };
63  //**********************************************************************************************
64 };
65 //*************************************************************************************************
66 
67 
68 //*************************************************************************************************
70 
71 template< typename T, unsigned int N >
72 struct Extent<T[],N>
73 {
74  public:
75  //**********************************************************************************************
76  enum { value = Extent<T,N-1>::value };
77  //**********************************************************************************************
78 };
80 //*************************************************************************************************
81 
82 
83 //*************************************************************************************************
85 
86 template< typename T, unsigned int N, unsigned int E >
87 struct Extent<T[E],N>
88 {
89  public:
90  //**********************************************************************************************
91  enum { value = Extent<T,N-1>::value };
92  //**********************************************************************************************
93 };
95 //*************************************************************************************************
96 
97 
98 //*************************************************************************************************
100 
101 template< typename T >
102 struct Extent<T[],0UL>
103 {
104  public:
105  //**********************************************************************************************
106  enum { value = 0 };
107  //**********************************************************************************************
108 };
110 //*************************************************************************************************
111 
112 
113 //*************************************************************************************************
115 
116 template< typename T, unsigned int E >
117 struct Extent<T[E],0U>
118 {
119  public:
120  //**********************************************************************************************
121  enum { value = E };
122  //**********************************************************************************************
123 };
125 //*************************************************************************************************
126 
127 } // namespace blaze
128 
129 #endif