Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableDataTypeTraits.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* VariableDataTypeTraits.h (C) 2000-2024 */
9/* */
10/* Classes spécialisées pour caractériser les types de données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_VARIABLEDATATYPETRAITS_H
13#define ARCANE_CORE_VARIABLEDATATYPETRAITS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/PlatformUtils.h"
18#include "arcane/utils/ValueConvert.h"
19#include "arcane/utils/BFloat16.h"
20#include "arcane/utils/Float16.h"
21#include "arcane/utils/Float128.h"
22#include "arcane/utils/Int128.h"
23
25
26#include <cmath>
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
39template <typename DataType> inline void
40builtInDumpValue(String& s, const DataType& v)
41{
42 std::ostringstream sbuf;
43 sbuf << v << '\0';
44 s = sbuf.str();
45}
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
55template <typename DataType>
57{
58 public:
59
60 static eDataType type() { return DT_Unknown; }
61};
62
63/*---------------------------------------------------------------------------*/
64/*---------------------------------------------------------------------------*/
65
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
72template <>
73class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Byte>
74{
75 public:
76
78 typedef Byte Type;
79
82
85
88
91
92 typedef Byte BasicType;
93
94 static constexpr Integer nbBasicType() { return 1; }
95
96 public:
97
99 static constexpr const char* typeName() { return "Byte"; }
101 static constexpr eDataType type() { return DT_Byte; }
103 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
109 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
110
111 static bool verifDifferent(Byte v1, Byte v2, Byte& diff,
112 [[maybe_unused]] bool is_nan_equal = false)
113 {
114 if (v1 != v2) {
115 if (math::isZero(v1))
116 diff = (Byte)(v1 - v2);
117 else
118 diff = (Byte)((v1 - v2) / v1);
119 return true;
120 }
121 return false;
122 }
123
124 static Byte normeMax(Byte v)
125 {
126 return (Byte)math::abs(v);
127 }
128};
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
136template <>
137class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Real>
138{
139 public:
140
142 typedef Real Type;
143
146
149
152
155
156 typedef Real BasicType;
157
158 static constexpr Integer nbBasicType() { return 1; }
159
160 public:
161
163 static constexpr const char* typeName() { return "Real"; }
165 static constexpr eDataType type() { return DT_Real; }
167 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
173 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
174
175 static bool verifDifferent(Real v1, Real v2, Real& diff, bool is_nan_equal = false)
176 {
177 if (is_nan_equal) {
178 if (std::isnan(v1) && std::isnan(v2))
179 return false;
180 }
181 // Vérifie avant de les comparer que les deux nombres sont valides
182 // pour éviter une exception flottante sur certaines plates-formes
183 if (platform::isDenormalized(v1) || platform::isDenormalized(v2)) {
184 diff = 1.0;
185 return true;
186 }
187 if (v1 != v2) {
188 if (math::abs(v1) < 1.e-100) // TH: plantait pour v1 tres petit(math::isZero(v1))
189 diff = v1 - v2;
190 else
191 diff = (v1 - v2) / v1;
192 return true;
193 }
194 return false;
195 }
196
197 static Real normeMax(Real v)
198 {
199 return math::abs(v);
200 }
201};
202
203/*---------------------------------------------------------------------------*/
204/*---------------------------------------------------------------------------*/
209template <>
210class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Float128>
211{
212 public:
213
215 typedef Float128 Type;
216
219
222
225
228
229 typedef Float128 BasicType;
230
231 static constexpr Int32 nbBasicType() { return 1; }
232
233 public:
234
236 static constexpr const char* typeName() { return "Float128"; }
238 static constexpr eDataType type() { return DT_Float128; }
240 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
246 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
247
248 static bool verifDifferent(Type v1, Type v2, Type& diff, bool is_nan_equal = false)
249 {
250 if (is_nan_equal) {
251 // TODO: non supporté
252 return false;
253 }
254 if (v1 != v2) {
255 if (math::abs(v1) < 1.e-100) // TH: plantait pour v1 tres petit(math::isZero(v1))
256 diff = v1 - v2;
257 else
258 diff = (v1 - v2) / v1;
259 return true;
260 }
261 return false;
262 }
263};
264
265/*---------------------------------------------------------------------------*/
266/*---------------------------------------------------------------------------*/
271template <>
272class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Int8>
273{
274 public:
275
277 typedef Int8 Type;
278
281
284
287
290
291 typedef Int8 BasicType;
292
293 static constexpr Int32 nbBasicType() { return 1; }
294
295 public:
296
298 static constexpr const char* typeName() { return "Int8"; }
300 static constexpr eDataType type() { return DT_Int8; }
302 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
308 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
309 static bool verifDifferent(Int8 v1, Int8 v2, Int8& diff,
310 [[maybe_unused]] bool is_nan_equal = false)
311 {
312 if (v1 != v2) {
313 if (math::isZero(v1))
314 diff = (Int8)(v1 - v2);
315 else
316 diff = (Int8)((v1 - v2) / v1);
317 return true;
318 }
319 return false;
320 }
321 static Int8 normeMax(Int8 v)
322 {
323 return static_cast<Int8>(math::abs(v));
324 }
325};
326
327/*---------------------------------------------------------------------------*/
328/*---------------------------------------------------------------------------*/
333template <>
334class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Int16>
335{
336 public:
337
339 typedef Int16 Type;
340
343
346
349
352
353 typedef Int16 BasicType;
354
355 static constexpr Integer nbBasicType() { return 1; }
356
357 public:
358
360 static constexpr const char* typeName() { return "Int16"; }
362 static constexpr eDataType type() { return DT_Int16; }
364 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
370 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
371 static bool verifDifferent(Int16 v1, Int16 v2, Int16& diff,
372 [[maybe_unused]] bool is_nan_equal = false)
373 {
374 if (v1 != v2) {
375 if (math::isZero(v1))
376 diff = (Int16)(v1 - v2);
377 else
378 diff = (Int16)((v1 - v2) / v1);
379 return true;
380 }
381 return false;
382 }
383 static Int16 normeMax(Int16 v)
384 {
385 return math::abs(v);
386 }
387};
388
389/*---------------------------------------------------------------------------*/
390/*---------------------------------------------------------------------------*/
395template <>
396class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Int32>
397{
398 public:
399
401 typedef Int32 Type;
402
405
408
411
414
415 typedef Int32 BasicType;
416
417 static constexpr Integer nbBasicType() { return 1; }
418
419 public:
420
422 static constexpr const char* typeName() { return "Int32"; }
424 static constexpr eDataType type() { return DT_Int32; }
426 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
432 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
433 static bool verifDifferent(Int32 v1, Int32 v2, Int32& diff,
434 [[maybe_unused]] bool is_nan_equal = false)
435 {
436 if (v1 != v2) {
437 if (math::isZero(v1))
438 diff = v1 - v2;
439 else
440 diff = (v1 - v2) / v1;
441 return true;
442 }
443 return false;
444 }
445 static Int32 normeMax(Int32 v)
446 {
447 return math::abs(v);
448 }
449};
450
451/*---------------------------------------------------------------------------*/
452/*---------------------------------------------------------------------------*/
457template <>
458class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Int64>
459{
460 public:
461
463 typedef Int64 Type;
464
467
470
473
476
477 typedef Int64 BasicType;
478
479 static constexpr Integer nbBasicType() { return 1; }
480
481 public:
482
484 static constexpr const char* typeName() { return "Int64"; }
486 static constexpr eDataType type() { return DT_Int64; }
488 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
494 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
495
496 static bool verifDifferent(Type v1, Type v2, Type& diff,
497 [[maybe_unused]] bool is_nan_equal = false)
498 {
499 if (v1 != v2) {
500 if (math::isZero(v1))
501 diff = v1 - v2;
502 else
503 diff = (v1 - v2) / v1;
504 return true;
505 }
506 return false;
507 }
508 static Int64 normeMax(Int64 v)
509 {
510 return v;
511 }
512};
513
514/*---------------------------------------------------------------------------*/
515/*---------------------------------------------------------------------------*/
520template <>
521class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Int128>
522{
523 public:
524
526 typedef Int128 Type;
527
530
533
536
539
540 typedef Int128 BasicType;
541
542 static constexpr Int32 nbBasicType() { return 1; }
543
544 public:
545
547 static constexpr const char* typeName() { return "Int128"; }
549 static constexpr eDataType type() { return DT_Int128; }
551 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
557 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
558
559 static bool verifDifferent(Type v1, Type v2, Type& diff,
560 [[maybe_unused]] bool is_nan_equal = false)
561 {
562 if (v1 != v2) {
563 if (math::isZero(v1))
564 diff = v1 - v2;
565 else
566 diff = (v1 - v2) / v1;
567 return true;
568 }
569 return false;
570 }
571};
572
573/*---------------------------------------------------------------------------*/
574/*---------------------------------------------------------------------------*/
579template <>
580class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<String>
581{
582 public:
583
585 typedef String Type;
586
589
592
595
598
599 typedef String BasicType;
600
601 static constexpr Integer nbBasicType() { return 1; }
602
603 public:
604
606 static constexpr const char* typeName() { return "String"; }
608 static constexpr eDataType type() { return DT_String; }
610 static void dumpValue(String& s, const Type& v) { s = v; }
616 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
617
618 static bool verifDifferent(const Type v1, const Type& v2, Type&,
619 [[maybe_unused]] bool is_nan_equal = false)
620 {
621 return (v1 != v2);
622 }
623 static const char* normeMax(const char* v)
624 {
625 return v;
626 }
627};
628
629/*---------------------------------------------------------------------------*/
630/*---------------------------------------------------------------------------*/
635template <>
636class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<BFloat16>
637{
638 public:
639
641 typedef BFloat16 Type;
642
645
648
651
654
655 typedef BFloat16 BasicType;
656
657 static constexpr Integer nbBasicType() { return 1; }
658
659 public:
660
662 static constexpr const char* typeName() { return "BFloat16"; }
664 static constexpr eDataType type() { return DT_BFloat16; }
666 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
672 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
673
674 static bool verifDifferent(float v1, float v2, BFloat16& diff, bool is_nan_equal = false)
675 {
676 if (is_nan_equal) {
677 // TODO: non supporté
678 return false;
679 }
680 if (v1 != v2) {
681 float fdiff = 0.0;
682 if (math::abs(v1)!=0.0)
683 fdiff = v1 - v2;
684 else
685 fdiff = (v1 - v2) / v1;
686 diff = static_cast<Type>(fdiff);
687 return true;
688 }
689 return false;
690 }
691
692 static Real normeMax(Real v)
693 {
694 return math::abs(v);
695 }
696};
697
698/*---------------------------------------------------------------------------*/
699/*---------------------------------------------------------------------------*/
704template <>
705class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Float16>
706{
707 public:
708
710 typedef Float16 Type;
711
714
717
720
723
724 typedef Float16 BasicType;
725
726 static constexpr Integer nbBasicType() { return 1; }
727
728 public:
729
731 static constexpr const char* typeName() { return "Float16"; }
733 static constexpr eDataType type() { return DT_Float16; }
735 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
741 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
742
743 static bool verifDifferent(float v1, float v2, Float16& diff, bool is_nan_equal = false)
744 {
745 if (is_nan_equal) {
746 // TODO: non supporté
747 return false;
748 }
749 if (v1 != v2) {
750 float fdiff = 0.0;
751 if (math::abs(v1)!=0.0)
752 fdiff = v1 - v2;
753 else
754 fdiff = (v1 - v2) / v1;
755 diff = static_cast<Type>(fdiff);
756 return true;
757 }
758 return false;
759 }
760
761 static Real normeMax(Real v)
762 {
763 return math::abs(v);
764 }
765};
766
767/*---------------------------------------------------------------------------*/
768/*---------------------------------------------------------------------------*/
773template <>
774class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Float32>
775{
776 public:
777
779 typedef Float32 Type;
780
783
786
789
792
793 typedef Real BasicType;
794
795 static constexpr Integer nbBasicType() { return 1; }
796
797 public:
798
800 static constexpr const char* typeName() { return "Float32"; }
802 static constexpr eDataType type() { return DT_Float32; }
804 static void dumpValue(String& s, const Type& v) { builtInDumpValue(s, v); }
810 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
811
812 static bool verifDifferent(Type v1, Type v2, Type& diff, bool is_nan_equal = false)
813 {
814 if (is_nan_equal) {
815 if (std::isnan(v1) && std::isnan(v2))
816 return false;
817 }
818 // Vérifie avant de les comparer que les deux nombres sont valides
819 // pour éviter une exception flottante sur certaines plates-formes
820 if (platform::isDenormalized(v1) || platform::isDenormalized(v2)) {
821 diff = 1.0;
822 return true;
823 }
824 if (v1 != v2) {
825 if (math::abs(v1) < 1.e-40)
826 diff = v1 - v2;
827 else
828 diff = (v1 - v2) / v1;
829 return true;
830 }
831 return false;
832 }
833
834 static Real normeMax(Real v)
835 {
836 return math::abs(v);
837 }
838};
839
840/*---------------------------------------------------------------------------*/
841/*---------------------------------------------------------------------------*/
846template <>
847class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Real2>
848{
849 public:
850
852 typedef Real2 Type;
853
856
859
862
865
866 typedef Real BasicType;
867
868 static constexpr Integer nbBasicType() { return 2; }
869
870 private:
871
872 using SubTraits = VariableDataTypeTraitsT<Real>;
873
874 public:
875
877 static constexpr const char* typeName() { return "Real2"; }
879 static constexpr eDataType type() { return DT_Real2; }
881 static void dumpValue(String& s, const Type&) { s = "N/A"; }
887 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
888
889 static bool verifDifferent(Real2 v1, Real2 v2, Real2& diff, bool is_nan_equal = false)
890 {
891 bool is_different = false;
892 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
893 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
894 return is_different;
895 }
896
897 static Real normeMax(const Real2& v)
898 {
899 Real vx = SubTraits::normeMax(v.x);
900 Real vy = SubTraits::normeMax(v.y);
901 return math::max(vx, vy);
902 }
903};
904
905/*---------------------------------------------------------------------------*/
906/*---------------------------------------------------------------------------*/
911template <>
912class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Real3>
913{
914 public:
915
917 typedef Real3 Type;
918
921
924
927
930
931 typedef Real BasicType;
932
933 static constexpr Integer nbBasicType() { return 3; }
934
935 private:
936
937 using SubTraits = VariableDataTypeTraitsT<Real>;
938
939 public:
940
942 static constexpr const char* typeName() { return "Real3"; }
944 static constexpr eDataType type() { return DT_Real3; }
946 static void dumpValue(String& s, const Type&) { s = "N/A"; }
952 static bool getValue(Type& v, const String& s) { return builtInGetValue(v, s); }
953
954 static bool verifDifferent(Real3 v1, Real3 v2, Real3& diff, bool is_nan_equal = false)
955 {
956 bool is_different = false;
957 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
958 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
959 is_different |= SubTraits::verifDifferent(v1.z, v2.z, diff.z, is_nan_equal);
960 return is_different;
961 }
962
963 static Real normeMax(const Real3& v)
964 {
965 Real vx = SubTraits::normeMax(v.x);
966 Real vy = SubTraits::normeMax(v.y);
967 Real vz = SubTraits::normeMax(v.z);
968 return math::max(vx, math::max(vy, vz));
969 }
970};
971
972/*---------------------------------------------------------------------------*/
973/*---------------------------------------------------------------------------*/
978template <>
979class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Real2x2>
980{
981 public:
982
984 typedef Real2x2 Type;
985
988
991
994
997
998 typedef Real BasicType;
999
1000 static constexpr Integer nbBasicType() { return 4; }
1001
1002 private:
1003
1004 using SubTraits = VariableDataTypeTraitsT<Real2>;
1005
1006 public:
1007
1009 static constexpr const char* typeName() { return "Real2x2"; }
1011 static constexpr eDataType type() { return DT_Real2x2; }
1013 static void dumpValue(String& s, const Type&) { s = "N/A"; }
1019 static bool getValue(Type&, const String&) { return true; }
1020
1021 static bool verifDifferent(Real2x2 v1, Real2x2 v2, Real2x2& diff, bool is_nan_equal = false)
1022 {
1023 bool is_different = false;
1024 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
1025 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
1026 return is_different;
1027 }
1028
1029 static Real normeMax(const Real2x2& v)
1030 {
1031 Real vx = SubTraits::normeMax(v.x);
1032 Real vy = SubTraits::normeMax(v.y);
1033 return SubTraits::normeMax(Real2(vx, vy));
1034 }
1035};
1036
1037/*---------------------------------------------------------------------------*/
1038/*---------------------------------------------------------------------------*/
1043template <>
1044class ARCANE_CORE_EXPORT VariableDataTypeTraitsT<Real3x3>
1045{
1046 public:
1047
1049 typedef Real3x3 Type;
1050
1053
1056
1059
1062
1063 typedef Real BasicType;
1064
1065 static constexpr Integer nbBasicType() { return 9; }
1066
1067 private:
1068
1069 using SubTraits = VariableDataTypeTraitsT<Real3>;
1070
1071 public:
1072
1074 static constexpr const char* typeName() { return "Real3x3"; }
1076 static constexpr eDataType type() { return DT_Real3x3; }
1078 static void dumpValue(String& s, const Type&) { s = "N/A"; }
1084 static bool getValue(Type&, const String&) { return true; }
1085
1086 static bool verifDifferent(Real3x3 v1, Real3x3 v2, Real3x3& diff, bool is_nan_equal = false)
1087 {
1088 bool is_different = false;
1089 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
1090 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
1091 is_different |= SubTraits::verifDifferent(v1.z, v2.z, diff.z, is_nan_equal);
1092 return is_different;
1093 }
1094
1095 static Real normeMax(const Real3x3& v)
1096 {
1097 Real vx = SubTraits::normeMax(v.x);
1098 Real vy = SubTraits::normeMax(v.y);
1099 Real vz = SubTraits::normeMax(v.z);
1100 return VariableDataTypeTraitsT<Real3>::normeMax(Real3(vx, vy, vz));
1101 }
1102};
1103
1104/*---------------------------------------------------------------------------*/
1105/*---------------------------------------------------------------------------*/
1106
1107} // namespace Arcane
1108
1109/*---------------------------------------------------------------------------*/
1110/*---------------------------------------------------------------------------*/
1111
1112#endif
Fichier contenant les définitions des types de données gérés par Arcane.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Classe gérant un vecteur de réel de dimension 2.
Definition Real2.h:121
Classe gérant une matrice de réel de dimension 2x2.
Definition Real2x2.h:53
Real2 x
Première composante.
Definition Real2x2.h:98
Real2 y
Deuxième composante.
Definition Real2x2.h:99
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Classe gérant une matrice de réel de dimension 3x3.
Definition Real3x3.h:66
Real3 z
premier élément du triplet
Definition Real3x3.h:119
Real3 y
premier élément du triplet
Definition Real3x3.h:118
Real3 x
premier élément du triplet
Definition Real3x3.h:117
TrueType IsNumeric
Indique si le type est numérique.
static constexpr eDataType type()
Retourne le type de la variable.
BFloat16 Type
Type du paramètre template.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
FalseType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
Byte Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
Float128 Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
FalseType HasDump
Indique si le type peut être sauvé et relu.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
Float16 Type
Type du paramètre template.
TrueType IsNumeric
Indique si le type est numérique.
FalseType HasReduce
Indique si le type peut être subir une réduction.
Float32 Type
Type du paramètre template.
TrueType HasReduce
Indique si le type peut être subir une réduction.
FalseType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType IsNumeric
Indique si le type est numérique.
Int128 Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
Real2x2 Type
Type du paramètre template.
static bool getValue(Type &, const String &)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static constexpr eDataType type()
Retourne le type de la variable.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static bool getValue(Type &, const String &)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
TrueType IsNumeric
Indique si le type est numérique.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr eDataType type()
Retourne le type de la variable.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
FalseType IsNumeric
Indique si le type est numérique.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
String Type
Type du paramètre template.
Classe template d'informations sur un type d'une variable.
Type flottant demi-précision.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
void builtInDumpValue(String &s, const DataType &v)
Ecriture dans la chaine s d'un type basique de valeur v.
Arccore::Int8 Int8
Type représentant un entier sur 8 bits.
unsigned char Byte
Type d'un octet.
Definition UtilsTypes.h:148
eDataType
Type d'une donnée.
Definition DataTypes.h:39
@ DT_Float32
Donnée de type 'Float32'.
Definition DataTypes.h:52
@ DT_Int128
Donnée de type entier sur 128 bits.
Definition DataTypes.h:55
@ DT_Real2x2
Donnée de type tenseur 3x3.
Definition DataTypes.h:48
@ DT_Int16
Donnée de type entier 16 bits.
Definition DataTypes.h:42
@ DT_Int8
Donnée de type entier sur 8 bits.
Definition DataTypes.h:53
@ DT_Real3x3
Donnée de type tenseur 3x3.
Definition DataTypes.h:49
@ DT_Int32
Donnée de type entier 32 bits.
Definition DataTypes.h:43
@ DT_Real3
Donnée de type vecteur 3.
Definition DataTypes.h:47
@ DT_Float16
Donnée de type 'Float16'.
Definition DataTypes.h:51
@ DT_Int64
Donnée de type entier 64 bits.
Definition DataTypes.h:44
@ DT_Unknown
Donnée de type inconnue ou non initialisée.
Definition DataTypes.h:56
@ DT_String
Donnée de type chaîne de caractère UTF-8.
Definition DataTypes.h:45
@ DT_BFloat16
Donnée de type 'BFloat16'.
Definition DataTypes.h:50
@ DT_Real2
Donnée de type vecteur 2.
Definition DataTypes.h:46
@ DT_Real
Donnée de type réel.
Definition DataTypes.h:41
@ DT_Byte
Donnée de type octet.
Definition DataTypes.h:40
@ DT_Float128
Donnée de type flottant sur 128 bits.
Definition DataTypes.h:54
Type
Type of JSON value.
Definition rapidjson.h:665
Structure équivalente à la valeur booléenne vrai.
Real y
deuxième composante du couple
Definition Real2.h:35
Real x
première composante du couple
Definition Real2.h:34
Real y
deuxième composante du triplet
Definition Real3.h:36
Real z
troisième composante du triplet
Definition Real3.h:37
Real x
première composante du triplet
Definition Real3.h:35
Structure équivalente à la valeur booléenne vrai.