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())
50 if (v > (
double)std::numeric_limits<Integer>::max() || v < (
double)std::numeric_limits<Integer>::min())
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));
132 Int64 xyz = x2 * y2 * z2;
133 return impl::toInteger(xyz);
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.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
std::int16_t Int16
Type entier signé sur 16 bits.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.