12#ifndef ARCANE_UTILS_CHECKEDCONVERT_H
13#define ARCANE_UTILS_CHECKEDCONVERT_H
18#include "arcane/utils/BadCastException.h"
19#include "arcane/utils/String.h"
20#include "arcane/utils/TraceInfo.h"
21#include "arcane/utils/Convert.h"
37 if (v > std::numeric_limits<Integer>::max() || v < std::numeric_limits<Integer>::min())
39 return static_cast<Integer
>(v);
50 if (v > (
double)std::numeric_limits<Integer>::max() || v < (
double)std::numeric_limits<Integer>::min())
52 return static_cast<Integer
>(v);
61 return impl::toInteger(
static_cast<Int64
>(v));
67 return impl::toInteger(
static_cast<Int64
>(v));
73 return impl::toInteger(
static_cast<Int64
>(v));
79 return impl::toInteger(
static_cast<Int64
>(v));
85 return impl::toInteger(
static_cast<Int64
>(v));
91 return impl::toInteger(
static_cast<Int64
>(v));
101 if (v > std::numeric_limits<Int32>::max() || v < std::numeric_limits<Int32>::min())
103 String::format(
"Invalid conversion from '{0}' to type Int32", v));
114 if (v > std::numeric_limits<Int16>::max() || v < std::numeric_limits<Int16>::min())
116 String::format(
"Invalid conversion from '{0}' to type Int16", v));
129 Int64 x2 =
static_cast<Int64
>(x);
130 Int64 y2 =
static_cast<Int64
>(y);
131 Int64 z2 =
static_cast<Int64
>(z);
132 Int64 xyz = x2 * y2 * z2;
133 return impl::toInteger(xyz);
145 Int64 x2 =
static_cast<Int64
>(x);
146 Int64 y2 =
static_cast<Int64
>(y);
148 return impl::toInteger(xy);
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
Déclarations des types utilisés dans Arcane.
Exception lorsqu'une conversion d'un type vers un autre est invalide.
Fonctions pour convertir un type en un autre avec vérification.
Integer toInteger(Real r)
Converti un Int64 en un Integer.
Integer multiply(Integer x, Integer y, Integer z)
Multiplie trois 'Integer' et vérifie que le résultat peut être contenu dans un 'Integer'.
Int32 toInt32(Int64 v)
Converti un Int64 en un Int32.
Int16 toInt16(Int64 v)
Converti un Int64 en un Int16.
double toDouble(Real r)
Converti un Real en double.