DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
IntegerConverter.h
1
16
17
#pragma once
18
30
31
#if defined(IntegerConverter_RECURSES)
32
#error Recursive header files inclusion detected in IntegerConverter.h
33
#else
// defined(IntegerConverter_RECURSES)
35
#define IntegerConverter_RECURSES
36
37
#if !defined IntegerConverter_h
39
#define IntegerConverter_h
40
42
// Inclusions
43
#include <iostream>
44
#include <string>
45
#include <vector>
46
#include <array>
47
#include "DGtal/base/Common.h"
48
#include "DGtal/kernel/CInteger.h"
49
#include "DGtal/kernel/NumberTraits.h"
50
#include "DGtal/kernel/PointVector.h"
51
52
namespace
DGtal
53
{
55
67
template
<
DGtal::Dimension
dim
,
68
typename
TInteger >
69
struct
IntegerConverter
{
70
BOOST_CONCEPT_ASSERT
((
concepts::CInteger<TInteger>
));
71
typedef
TInteger
Integer
;
72
75
static
Integer
cast
(
Integer
i )
76
{
77
return
i;
78
}
79
84
static
85
PointVector< dim, Integer >
86
cast
(
PointVector< dim, Integer >
p )
87
{
88
return
p;
89
}
90
};
91
101
template
< DGtal::Dimension dim >
102
struct
IntegerConverter
<
dim
,
DGtal
::
int32_t
> {
103
typedef
DGtal::int32_t
Integer
;
104
107
static
DGtal::int32_t
cast
(
DGtal::int32_t
i )
108
{
109
return
i;
110
}
111
116
static
117
PointVector< dim, DGtal::int32_t >
118
cast
(
PointVector< dim, DGtal::int32_t >
p )
119
{
120
return
p;
121
}
122
125
static
DGtal::int32_t
cast
(
DGtal::int64_t
i )
126
{
127
DGtal::int32_t
r =
DGtal::int32_t
( i );
128
if
(
DGtal::int64_t
( r ) != i )
129
trace
.
warning
() <<
"Bad integer conversion: "
<< i <<
" -> "
<< r
130
<< std::endl;
131
return
r;
132
}
133
138
static
139
PointVector< dim, DGtal::int32_t >
140
cast
(
PointVector< dim, DGtal::int64_t >
p )
141
{
142
PointVector< dim, DGtal::int32_t >
q;
143
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
144
q[ i ] =
cast
( p[ i ] );
145
return
q;
146
}
147
150
static
DGtal::int32_t
cast
(
DGtal::BigInteger
i )
151
{
152
auto
r =
NumberTraits<DGtal::BigInteger>::castToInt64_t
(i);
153
if
(
DGtal::BigInteger
( r ) != i )
154
trace
.
warning
() <<
"Bad integer conversion: "
<< i <<
" -> "
<< r
155
<< std::endl;
156
return
(
DGtal::int32_t
)r;
157
}
158
163
static
164
PointVector< dim, DGtal::int32_t >
165
cast
(
PointVector< dim, DGtal::BigInteger >
p )
166
{
167
PointVector< dim, DGtal::int32_t >
q;
168
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
169
q[ i ] =
cast
( p[ i ] );
170
return
q;
171
}
172
};
173
174
184
template
< DGtal::Dimension dim >
185
struct
IntegerConverter
<
dim
,
DGtal
::
int64_t
> {
186
typedef
DGtal::int64_t
Integer
;
187
190
static
DGtal::int64_t
cast
(
DGtal::int32_t
i )
191
{
192
return
i;
193
}
194
199
static
200
PointVector< dim, DGtal::int64_t >
201
cast
(
PointVector< dim, DGtal::int32_t >
p )
202
{
203
PointVector< dim, DGtal::int64_t >
q;
204
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
205
q[ i ] =
cast
( p[ i ] );
206
return
q;
207
}
208
211
static
DGtal::int64_t
cast
(
DGtal::int64_t
i )
212
{
213
return
i;
214
}
215
220
static
221
PointVector< dim, DGtal::int64_t >
222
cast
(
PointVector< dim, DGtal::int64_t >
p )
223
{
224
return
p;
225
}
226
229
static
DGtal::int64_t
cast
(
DGtal::BigInteger
i )
230
{
231
DGtal::int64_t
r =
NumberTraits<DGtal::BigInteger>::castToInt64_t
(i);
232
DGtal::BigInteger
tmp(r);
233
if
( tmp != i )
234
trace
.
warning
() <<
"Bad integer conversion: "
<< i <<
" -> "
<< r
235
<< std::endl;
236
return
r;
237
}
238
243
static
244
PointVector< dim, DGtal::int64_t >
245
cast
(
PointVector< dim, DGtal::BigInteger >
p )
246
{
247
PointVector< dim, DGtal::int64_t >
q;
248
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
249
q[ i ] =
cast
( p[ i ] );
250
return
q;
251
}
252
};
253
263
template
< DGtal::Dimension dim >
264
struct
IntegerConverter
<
dim
,
DGtal
::
BigInteger
> {
265
typedef
DGtal::BigInteger
Integer
;
266
269
static
DGtal::BigInteger
cast
(
DGtal::int32_t
i )
270
{
271
return
DGtal::BigInteger
( i );
272
}
273
278
static
279
PointVector< dim, DGtal::BigInteger >
280
cast
(
PointVector< dim, DGtal::int32_t >
p )
281
{
282
PointVector< dim, DGtal::BigInteger >
q;
283
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
284
q[ i ] =
cast
( p[ i ] );
285
return
q;
286
}
287
290
static
DGtal::BigInteger
cast
(
DGtal::int64_t
i )
291
{
292
DGtal::BigInteger
tmp = i;
293
return
tmp;
294
}
295
300
static
301
PointVector< dim, DGtal::BigInteger >
302
cast
(
PointVector< dim, DGtal::int64_t >
p )
303
{
304
PointVector< dim, DGtal::BigInteger >
q;
305
for
(
DGtal::Dimension
i = 0; i <
dim
; i++ )
306
q[ i ] =
cast
( p[ i ] );
307
return
q;
308
}
309
312
static
DGtal::BigInteger
cast
(
DGtal::BigInteger
i )
313
{
314
return
i;
315
}
316
321
static
322
PointVector< dim, DGtal::BigInteger >
323
cast
(
PointVector< dim, DGtal::BigInteger >
p )
324
{
325
return
p;
326
}
327
328
};
329
330
}
// namespace DGtal {
331
332
#endif
// !defined IntegerConverter_h
333
334
#undef IntegerConverter_RECURSES
335
#endif
// else defined(IntegerConverter_RECURSES)
DGtal::PointVector< dim, Integer >
DGtal::Trace::warning
std::ostream & warning()
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::int32_t
std::int32_t int32_t
signed 32-bit integer.
Definition
BasicTypes.h:71
DGtal::int64_t
std::int64_t int64_t
signed 94-bit integer.
Definition
BasicTypes.h:73
DGtal::Dimension
DGtal::uint32_t Dimension
Definition
Common.h:119
DGtal::trace
Trace trace
DGtal::BigInteger
boost::multiprecision::number< boost::multiprecision::cpp_int_backend<>, boost::multiprecision::et_off > BigInteger
Definition
BasicTypes.h:75
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static PointVector< dim, DGtal::BigInteger > cast(PointVector< dim, DGtal::BigInteger > p)
Definition
IntegerConverter.h:323
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static DGtal::BigInteger cast(DGtal::int32_t i)
Definition
IntegerConverter.h:269
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static PointVector< dim, DGtal::BigInteger > cast(PointVector< dim, DGtal::int32_t > p)
Definition
IntegerConverter.h:280
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static PointVector< dim, DGtal::BigInteger > cast(PointVector< dim, DGtal::int64_t > p)
Definition
IntegerConverter.h:302
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static DGtal::BigInteger cast(DGtal::BigInteger i)
Definition
IntegerConverter.h:312
DGtal::IntegerConverter< dim, DGtal::BigInteger >::cast
static DGtal::BigInteger cast(DGtal::int64_t i)
Definition
IntegerConverter.h:290
DGtal::IntegerConverter< dim, DGtal::BigInteger >::Integer
DGtal::BigInteger Integer
Definition
IntegerConverter.h:265
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static DGtal::int32_t cast(DGtal::int32_t i)
Definition
IntegerConverter.h:107
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static PointVector< dim, DGtal::int32_t > cast(PointVector< dim, DGtal::int64_t > p)
Definition
IntegerConverter.h:140
DGtal::IntegerConverter< dim, DGtal::int32_t >::Integer
DGtal::int32_t Integer
Definition
IntegerConverter.h:103
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static PointVector< dim, DGtal::int32_t > cast(PointVector< dim, DGtal::BigInteger > p)
Definition
IntegerConverter.h:165
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static DGtal::int32_t cast(DGtal::BigInteger i)
Definition
IntegerConverter.h:150
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static PointVector< dim, DGtal::int32_t > cast(PointVector< dim, DGtal::int32_t > p)
Definition
IntegerConverter.h:118
DGtal::IntegerConverter< dim, DGtal::int32_t >::cast
static DGtal::int32_t cast(DGtal::int64_t i)
Definition
IntegerConverter.h:125
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static DGtal::int64_t cast(DGtal::int32_t i)
Definition
IntegerConverter.h:190
DGtal::IntegerConverter< dim, DGtal::int64_t >::Integer
DGtal::int64_t Integer
Definition
IntegerConverter.h:186
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static PointVector< dim, DGtal::int64_t > cast(PointVector< dim, DGtal::int64_t > p)
Definition
IntegerConverter.h:222
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static DGtal::int64_t cast(DGtal::int64_t i)
Definition
IntegerConverter.h:211
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static PointVector< dim, DGtal::int64_t > cast(PointVector< dim, DGtal::BigInteger > p)
Definition
IntegerConverter.h:245
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static PointVector< dim, DGtal::int64_t > cast(PointVector< dim, DGtal::int32_t > p)
Definition
IntegerConverter.h:201
DGtal::IntegerConverter< dim, DGtal::int64_t >::cast
static DGtal::int64_t cast(DGtal::BigInteger i)
Definition
IntegerConverter.h:229
DGtal::IntegerConverter
----------— INTEGER/POINT CONVERSION SERVICES -----------------—
Definition
IntegerConverter.h:69
DGtal::IntegerConverter::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CInteger< TInteger >))
DGtal::IntegerConverter::cast
static PointVector< dim, Integer > cast(PointVector< dim, Integer > p)
Definition
IntegerConverter.h:86
DGtal::IntegerConverter< dim, CoordinateInteger >::Integer
CoordinateInteger Integer
Definition
IntegerConverter.h:71
DGtal::IntegerConverter::cast
static Integer cast(Integer i)
Definition
IntegerConverter.h:75
DGtal::NumberTraitsImpl< std::decay< T >::type >::castToInt64_t
static DGtal::int64_t castToInt64_t(const T &aT)
Definition
NumberTraits.h:145
DGtal::concepts::CInteger
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
Definition
CInteger.h:88
dim
#define dim
Definition
testImageContainerByHashTree.cpp:40
src
DGtal
kernel
IntegerConverter.h
Generated on
for DGtal by
1.18.0