OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
NumLimitsT.hh
Go to the documentation of this file.
1 /*===========================================================================*\
2  * *
3  * OpenMesh *
4  * Copyright (C) 2001-2014 by Computer Graphics Group, RWTH Aachen *
5  * www.openmesh.org *
6  * *
7  *---------------------------------------------------------------------------*
8  * This file is part of OpenMesh. *
9  * *
10  * OpenMesh is free software: you can redistribute it and/or modify *
11  * it under the terms of the GNU Lesser General Public License as *
12  * published by the Free Software Foundation, either version 3 of *
13  * the License, or (at your option) any later version with the *
14  * following exceptions: *
15  * *
16  * If other files instantiate templates or use macros *
17  * or inline functions from this file, or you compile this file and *
18  * link it with other files to produce an executable, this file does *
19  * not by itself cause the resulting executable to be covered by the *
20  * GNU Lesser General Public License. This exception does not however *
21  * invalidate any other reasons why the executable file might be *
22  * covered by the GNU Lesser General Public License. *
23  * *
24  * OpenMesh is distributed in the hope that it will be useful, *
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27  * GNU Lesser General Public License for more details. *
28  * *
29  * You should have received a copy of the GNU LesserGeneral Public *
30  * License along with OpenMesh. If not, *
31  * see <http://www.gnu.org/licenses/>. *
32  * *
33 \*===========================================================================*/
34 
35 /*===========================================================================*\
36  * *
37  * $Revision: 990 $ *
38  * $Date: 2014-02-05 10:01:07 +0100 (Mi, 05 Feb 2014) $ *
39  * *
40 \*===========================================================================*/
41 
46 //=============================================================================
47 //
48 // CLASS NumLimitsT
49 //
50 //=============================================================================
51 
52 #ifndef OPENMESH_UTILS_NUMLIMITS_HH
53 #define OPENMESH_UTILS_NUMLIMITS_HH
54 
55 
56 //== INCLUDES =================================================================
57 
58 #include "Config.hh"
59 #include <limits.h>
60 #include <float.h>
61 
62 
63 //== NAMESPEACES ==============================================================
64 
65 namespace OpenMesh { // BEGIN_NS_OPENMESH
66 namespace Utils { // BEGIN_NS_UTILS
67 
68 
69 //== CLASS DEFINITION =========================================================
70 
71 
88 template <typename Scalar>
90 {
91 public:
93  static inline Scalar min() { return 0; }
95  static inline Scalar max() { return 0; }
96 
97  static inline bool is_float() { return false; }
98  static inline bool is_integer() { return !NumLimitsT<Scalar>::is_float(); }
99  static inline bool is_signed() { return true; }
100 };
101 
102  // is_float
103 
104 template<>
105 inline bool NumLimitsT<float>::is_float() { return true; }
106 
107 template<>
108 inline bool NumLimitsT<double>::is_float() { return true; }
109 
110 template<>
111 inline bool NumLimitsT<long double>::is_float() { return true; }
112 
113  // is_signed
114 
115 template<>
116 inline bool NumLimitsT<unsigned char>::is_signed() { return false; }
117 
118 template<>
119 inline bool NumLimitsT<unsigned short>::is_signed() { return false; }
120 
121 template<>
122 inline bool NumLimitsT<unsigned int>::is_signed() { return false; }
123 
124 template<>
125 inline bool NumLimitsT<unsigned long>::is_signed() { return false; }
126 
127 template<>
128 inline bool NumLimitsT<unsigned long long>::is_signed() { return false; }
129 
130  // min/max
131 template<> inline int NumLimitsT<int>::min() { return INT_MIN; }
132 template<> inline int NumLimitsT<int>::max() { return INT_MAX; }
133 
134 template<> inline float NumLimitsT<float>::min() { return FLT_MIN; }
135 template<> inline float NumLimitsT<float>::max() { return FLT_MAX; }
136 
137 template<> inline double NumLimitsT<double>::min() { return DBL_MIN; }
138 template<> inline double NumLimitsT<double>::max() { return DBL_MAX; }
139 
140 
141 //=============================================================================
142 } // END_NS_UTILS
143 } // END_NS_OPENMESH
144 //=============================================================================
145 #endif // OPENMESH_NUMLIMITS_HH defined
146 //=============================================================================
147 
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:56
static Scalar max()
Return the maximum absolte value a scalar type can store.
Definition: NumLimitsT.hh:95
This class provides the maximum and minimum values a certain scalar type (int, float, or double) can store.
Definition: NumLimitsT.hh:89
static Scalar min()
Return the smallest absolte value a scalar type can store.
Definition: NumLimitsT.hh:93

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .