7#ifndef MI_NEURAYLIB_TYPE_TRAITS_H
8#define MI_NEURAYLIB_TYPE_TRAITS_H
166 static const char* get_type_name() {
return "Boolean"; }
167 typedef bool Primitive_type;
170template<>
struct Type_traits<
mi::ISint8>
172 static const char* get_type_name() {
return "Sint8"; }
176template<>
struct Type_traits<
mi::ISint16>
178 static const char* get_type_name() {
return "Sint16"; }
182template<>
struct Type_traits<
mi::ISint32>
184 static const char* get_type_name() {
return "Sint32"; }
188template<>
struct Type_traits<
mi::ISint64>
190 static const char* get_type_name() {
return "Sint64"; }
194template<>
struct Type_traits<
mi::IUint8>
196 static const char* get_type_name() {
return "Uint8"; }
200template<>
struct Type_traits<
mi::IUint16>
202 static const char* get_type_name() {
return "Uint16"; }
206template<>
struct Type_traits<
mi::IUint32>
208 static const char* get_type_name() {
return "Uint32"; }
212template<>
struct Type_traits<
mi::IUint64>
214 static const char* get_type_name() {
return "Uint64"; }
218template<>
struct Type_traits<
mi::IFloat32>
220 static const char* get_type_name() {
return "Float32"; }
224template<>
struct Type_traits<
mi::IFloat64>
226 static const char* get_type_name() {
return "Float64"; }
230template<>
struct Type_traits<
mi::ISize>
232 static const char* get_type_name() {
return "Size"; }
236template<>
struct Type_traits<
mi::IDifference>
238 static const char* get_type_name() {
return "Difference"; }
242template<>
struct Type_traits<
mi::IString>
244 static const char* get_type_name() {
return "String"; }
245 typedef const char* Primitive_type;
248template<>
struct Type_traits<
mi::IUuid>
250 static const char* get_type_name() {
return "Uuid"; }
254template<>
struct Type_traits<
mi::IVoid>
256 static const char* get_type_name() {
return "Void"; }
257 typedef void Primitive_type;
260template<>
struct Type_traits<
mi::IRef>
262 static const char* get_type_name() {
return "Ref"; }
263 typedef const char* Primitive_type;
266template<>
struct Type_traits<
mi::IBoolean_2>
268 static const char* get_type_name() {
return "Boolean<2>"; }
272template<>
struct Type_traits<
mi::IBoolean_3>
274 static const char* get_type_name() {
return "Boolean<3>"; }
278template<>
struct Type_traits<
mi::IBoolean_4>
280 static const char* get_type_name() {
return "Boolean<4>"; }
284template<>
struct Type_traits<
mi::ISint32_2>
286 static const char* get_type_name() {
return "Sint32<2>"; }
290template<>
struct Type_traits<
mi::ISint32_3>
292 static const char* get_type_name() {
return "Sint32<3>"; }
296template<>
struct Type_traits<
mi::ISint32_4>
298 static const char* get_type_name() {
return "Sint32<4>"; }
302template<>
struct Type_traits<
mi::IUint32_2>
304 static const char* get_type_name() {
return "Uint32<2>"; }
308template<>
struct Type_traits<
mi::IUint32_3>
310 static const char* get_type_name() {
return "Uint32<3>"; }
314template<>
struct Type_traits<
mi::IUint32_4>
316 static const char* get_type_name() {
return "Uint32<4>"; }
320template<>
struct Type_traits<
mi::IFloat32_2>
322 static const char* get_type_name() {
return "Float32<2>"; }
326template<>
struct Type_traits<
mi::IFloat32_3>
328 static const char* get_type_name() {
return "Float32<3>"; }
332template<>
struct Type_traits<
mi::IFloat32_4>
334 static const char* get_type_name() {
return "Float32<4>"; }
338template<>
struct Type_traits<
mi::IFloat64_2>
340 static const char* get_type_name() {
return "Float64<2>"; }
344template<>
struct Type_traits<
mi::IFloat64_3>
346 static const char* get_type_name() {
return "Float64<3>"; }
350template<>
struct Type_traits<
mi::IFloat64_4>
352 static const char* get_type_name() {
return "Float64<4>"; }
356template<>
struct Type_traits<
mi::IBoolean_2_2>
358 static const char* get_type_name() {
return "Boolean<2,2>"; }
362template<>
struct Type_traits<
mi::IBoolean_2_3>
364 static const char* get_type_name() {
return "Boolean<2,3>"; }
368template<>
struct Type_traits<
mi::IBoolean_2_4>
370 static const char* get_type_name() {
return "Boolean<2,4>"; }
374template<>
struct Type_traits<
mi::IBoolean_3_2>
376 static const char* get_type_name() {
return "Boolean<3,2>"; }
380template<>
struct Type_traits<
mi::IBoolean_3_3>
382 static const char* get_type_name() {
return "Boolean<3,3>"; }
386template<>
struct Type_traits<
mi::IBoolean_3_4>
388 static const char* get_type_name() {
return "Boolean<3,4>"; }
392template<>
struct Type_traits<
mi::IBoolean_4_2>
394 static const char* get_type_name() {
return "Boolean<4,2>"; }
398template<>
struct Type_traits<
mi::IBoolean_4_3>
400 static const char* get_type_name() {
return "Boolean<4,3>"; }
404template<>
struct Type_traits<
mi::IBoolean_4_4>
406 static const char* get_type_name() {
return "Boolean<4,4>"; }
410template<>
struct Type_traits<
mi::ISint32_2_2>
412 static const char* get_type_name() {
return "Sint32<2,2>"; }
416template<>
struct Type_traits<
mi::ISint32_2_3>
418 static const char* get_type_name() {
return "Sint32<2,3>"; }
422template<>
struct Type_traits<
mi::ISint32_2_4>
424 static const char* get_type_name() {
return "Sint32<2,4>"; }
428template<>
struct Type_traits<
mi::ISint32_3_2>
430 static const char* get_type_name() {
return "Sint32<3,2>"; }
434template<>
struct Type_traits<
mi::ISint32_3_3>
436 static const char* get_type_name() {
return "Sint32<3,3>"; }
440template<>
struct Type_traits<
mi::ISint32_3_4>
442 static const char* get_type_name() {
return "Sint32<3,4>"; }
446template<>
struct Type_traits<
mi::ISint32_4_2>
448 static const char* get_type_name() {
return "Sint32<4,2>"; }
452template<>
struct Type_traits<
mi::ISint32_4_3>
454 static const char* get_type_name() {
return "Sint32<4,3>"; }
458template<>
struct Type_traits<
mi::ISint32_4_4>
460 static const char* get_type_name() {
return "Sint32<4,4>"; }
464template<>
struct Type_traits<
mi::IUint32_2_2>
466 static const char* get_type_name() {
return "Uint32<2,2>"; }
470template<>
struct Type_traits<
mi::IUint32_2_3>
472 static const char* get_type_name() {
return "Uint32<2,3>"; }
476template<>
struct Type_traits<
mi::IUint32_2_4>
478 static const char* get_type_name() {
return "Uint32<2,4>"; }
482template<>
struct Type_traits<
mi::IUint32_3_2>
484 static const char* get_type_name() {
return "Uint32<3,2>"; }
488template<>
struct Type_traits<
mi::IUint32_3_3>
490 static const char* get_type_name() {
return "Uint32<3,3>"; }
494template<>
struct Type_traits<
mi::IUint32_3_4>
496 static const char* get_type_name() {
return "Uint32<3,4>"; }
500template<>
struct Type_traits<
mi::IUint32_4_2>
502 static const char* get_type_name() {
return "Uint32<4,2>"; }
506template<>
struct Type_traits<
mi::IUint32_4_3>
508 static const char* get_type_name() {
return "Uint32<4,3>"; }
512template<>
struct Type_traits<
mi::IUint32_4_4>
514 static const char* get_type_name() {
return "Uint32<4,4>"; }
518template<>
struct Type_traits<
mi::IFloat32_2_2>
520 static const char* get_type_name() {
return "Float32<2,2>"; }
524template<>
struct Type_traits<
mi::IFloat32_2_3>
526 static const char* get_type_name() {
return "Float32<2,3>"; }
530template<>
struct Type_traits<
mi::IFloat32_2_4>
532 static const char* get_type_name() {
return "Float32<2,4>"; }
536template<>
struct Type_traits<
mi::IFloat32_3_2>
538 static const char* get_type_name() {
return "Float32<3,2>"; }
542template<>
struct Type_traits<
mi::IFloat32_3_3>
544 static const char* get_type_name() {
return "Float32<3,3>"; }
548template<>
struct Type_traits<
mi::IFloat32_3_4>
550 static const char* get_type_name() {
return "Float32<3,4>"; }
554template<>
struct Type_traits<
mi::IFloat32_4_2>
556 static const char* get_type_name() {
return "Float32<4,2>"; }
560template<>
struct Type_traits<
mi::IFloat32_4_3>
562 static const char* get_type_name() {
return "Float32<4,3>"; }
566template<>
struct Type_traits<
mi::IFloat32_4_4>
568 static const char* get_type_name() {
return "Float32<4,4>"; }
572template<>
struct Type_traits<
mi::IFloat64_2_2>
574 static const char* get_type_name() {
return "Float64<2,2>"; }
578template<>
struct Type_traits<
mi::IFloat64_2_3>
580 static const char* get_type_name() {
return "Float64<2,3>"; }
584template<>
struct Type_traits<
mi::IFloat64_2_4>
586 static const char* get_type_name() {
return "Float64<2,4>"; }
590template<>
struct Type_traits<
mi::IFloat64_3_2>
592 static const char* get_type_name() {
return "Float64<3,2>"; }
596template<>
struct Type_traits<
mi::IFloat64_3_3>
598 static const char* get_type_name() {
return "Float64<3,3>"; }
602template<>
struct Type_traits<
mi::IFloat64_3_4>
604 static const char* get_type_name() {
return "Float64<3,4>"; }
608template<>
struct Type_traits<
mi::IFloat64_4_2>
610 static const char* get_type_name() {
return "Float64<4,2>"; }
614template<>
struct Type_traits<
mi::IFloat64_4_3>
616 static const char* get_type_name() {
return "Float64<4,3>"; }
620template<>
struct Type_traits<
mi::IFloat64_4_4>
622 static const char* get_type_name() {
return "Float64<4,4>"; }
626template<>
struct Type_traits<
mi::IColor>
628 static const char* get_type_name() {
return "Color"; }
632template<>
struct Type_traits<
mi::IColor3>
634 static const char* get_type_name() {
return "Color3"; }
638template<>
struct Type_traits<
mi::ISpectrum>
640 static const char* get_type_name() {
return "Spectrum"; }
644template<>
struct Type_traits<
mi::IBbox3>
646 static const char* get_type_name() {
return "Bbox3"; }
651template<>
struct Type_traits<bool>
653 static const char* get_type_name() {
return "Boolean"; };
657template<>
struct Type_traits<
mi::
Sint8>
659 static const char* get_type_name() {
return "Sint8"; };
663template<>
struct Type_traits<
mi::
Sint16>
665 static const char* get_type_name() {
return "Sint16"; };
669template<>
struct Type_traits<
mi::
Sint32>
671 static const char* get_type_name() {
return "Sint32"; };
675template<>
struct Type_traits<
mi::
Sint64>
677 static const char* get_type_name() {
return "Sint64"; };
681template<>
struct Type_traits<
mi::
Uint8>
683 static const char* get_type_name() {
return "Uint8"; };
687template<>
struct Type_traits<
mi::
Uint16>
689 static const char* get_type_name() {
return "Uint16"; };
693template<>
struct Type_traits<
mi::
Uint32>
695 static const char* get_type_name() {
return "Uint32"; };
699template<>
struct Type_traits<
mi::
Uint64>
701 static const char* get_type_name() {
return "Uint64"; };
705template<>
struct Type_traits<
mi::
Float32>
707 static const char* get_type_name() {
return "Float32"; };
711template<>
struct Type_traits<
mi::
Float64>
713 static const char* get_type_name() {
return "Float64"; };
717template<>
struct Type_traits<const char*>
719 static const char* get_type_name() {
return "String"; };
723template<>
struct Type_traits<std::string>
725 static const char* get_type_name() {
return "String"; };
729template<std::
size_t N>
struct Type_traits<char[N]>
731 static const char* get_type_name() {
return "String"; };
735template<>
struct Type_traits<
mi::base::Uuid>
737 static const char* get_type_name() {
return "Uuid"; };
741template<>
struct Type_traits<void>
743 static const char* get_type_name() {
return "Void"; };
747template<>
struct Type_traits<
mi::math::Vector<bool,2> >
749 static const char* get_type_name() {
return "Boolean<2>"; };
753template<>
struct Type_traits<
mi::math::Vector<bool,3> >
755 static const char* get_type_name() {
return "Boolean<3>"; };
759template<>
struct Type_traits<
mi::math::Vector<bool,4> >
761 static const char* get_type_name() {
return "Boolean<4>"; };
765template<>
struct Type_traits<
mi::math::Vector<mi::Sint32,2> >
767 static const char* get_type_name() {
return "Sint32<2>"; };
771template<>
struct Type_traits<
mi::math::Vector<mi::Sint32,3> >
773 static const char* get_type_name() {
return "Sint32<3>"; };
777template<>
struct Type_traits<
mi::math::Vector<mi::Sint32,4> >
779 static const char* get_type_name() {
return "Sint32<4>"; };
783template<>
struct Type_traits<
mi::math::Vector<mi::Uint32,2> >
785 static const char* get_type_name() {
return "Uint32<2>"; };
789template<>
struct Type_traits<
mi::math::Vector<mi::Uint32,3> >
791 static const char* get_type_name() {
return "Uint32<3>"; };
795template<>
struct Type_traits<
mi::math::Vector<mi::Uint32,4> >
797 static const char* get_type_name() {
return "Uint32<4>"; };
801template<>
struct Type_traits<
mi::math::Vector<mi::Float32,2> >
803 static const char* get_type_name() {
return "Float32<2>"; };
807template<>
struct Type_traits<
mi::math::Vector<mi::Float32,3> >
809 static const char* get_type_name() {
return "Float32<3>"; };
813template<>
struct Type_traits<
mi::math::Vector<mi::Float32,4> >
815 static const char* get_type_name() {
return "Float32<4>"; };
819template<>
struct Type_traits<
mi::math::Vector<mi::Float64,2> >
821 static const char* get_type_name() {
return "Float64<2>"; };
825template<>
struct Type_traits<
mi::math::Vector<mi::Float64,3> >
827 static const char* get_type_name() {
return "Float64<3>"; };
831template<>
struct Type_traits<
mi::math::Vector<mi::Float64,4> >
833 static const char* get_type_name() {
return "Float64<4>"; };
837template<>
struct Type_traits<
mi::math::Matrix<bool,2,2> >
839 static const char* get_type_name() {
return "Boolean<2,2>"; };
843template<>
struct Type_traits<
mi::math::Matrix<bool,2,3> >
845 static const char* get_type_name() {
return "Boolean<2,3>"; };
849template<>
struct Type_traits<
mi::math::Matrix<bool,2,4> >
851 static const char* get_type_name() {
return "Boolean<2,4>"; };
855template<>
struct Type_traits<
mi::math::Matrix<bool,3,2> >
857 static const char* get_type_name() {
return "Boolean<3,2>"; };
861template<>
struct Type_traits<
mi::math::Matrix<bool,3,3> >
863 static const char* get_type_name() {
return "Boolean<3,3>"; };
867template<>
struct Type_traits<
mi::math::Matrix<bool,3,4> >
869 static const char* get_type_name() {
return "Boolean<3,4>"; };
873template<>
struct Type_traits<
mi::math::Matrix<bool,4,2> >
875 static const char* get_type_name() {
return "Boolean<4,2>"; };
879template<>
struct Type_traits<
mi::math::Matrix<bool,4,3> >
881 static const char* get_type_name() {
return "Boolean<4,3>"; };
885template<>
struct Type_traits<
mi::math::Matrix<bool,4,4> >
887 static const char* get_type_name() {
return "Boolean<4,4>"; };
891template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,2,2> >
893 static const char* get_type_name() {
return "Sint32<2,2>"; };
897template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,2,3> >
899 static const char* get_type_name() {
return "Sint32<2,3>"; };
903template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,2,4> >
905 static const char* get_type_name() {
return "Sint32<2,4>"; };
909template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,3,2> >
911 static const char* get_type_name() {
return "Sint32<3,2>"; };
915template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,3,3> >
917 static const char* get_type_name() {
return "Sint32<3,3>"; };
921template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,3,4> >
923 static const char* get_type_name() {
return "Sint32<3,4>"; };
927template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,4,2> >
929 static const char* get_type_name() {
return "Sint32<4,2>"; };
933template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,4,3> >
935 static const char* get_type_name() {
return "Sint32<4,3>"; };
939template<>
struct Type_traits<
mi::math::Matrix<mi::Sint32,4,4> >
941 static const char* get_type_name() {
return "Sint32<4,4>"; };
945template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,2,2> >
947 static const char* get_type_name() {
return "Uint32<2,2>"; };
951template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,2,3> >
953 static const char* get_type_name() {
return "Uint32<2,3>"; };
957template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,2,4> >
959 static const char* get_type_name() {
return "Uint32<2,4>"; };
963template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,3,2> >
965 static const char* get_type_name() {
return "Uint32<3,2>"; };
969template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,3,3> >
971 static const char* get_type_name() {
return "Uint32<3,3>"; };
975template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,3,4> >
977 static const char* get_type_name() {
return "Uint32<3,4>"; };
981template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,4,2> >
983 static const char* get_type_name() {
return "Uint32<4,2>"; };
987template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,4,3> >
989 static const char* get_type_name() {
return "Uint32<4,3>"; };
993template<>
struct Type_traits<
mi::math::Matrix<mi::Uint32,4,4> >
995 static const char* get_type_name() {
return "Uint32<4,4>"; };
999template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,2,2> >
1001 static const char* get_type_name() {
return "Float32<2,2>"; };
1005template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,2,3> >
1007 static const char* get_type_name() {
return "Float32<2,3>"; };
1011template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,2,4> >
1013 static const char* get_type_name() {
return "Float32<2,4>"; };
1017template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,3,2> >
1019 static const char* get_type_name() {
return "Float32<3,2>"; };
1023template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,3,3> >
1025 static const char* get_type_name() {
return "Float32<3,3>"; };
1029template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,3,4> >
1031 static const char* get_type_name() {
return "Float32<3,4>"; };
1035template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,4,2> >
1037 static const char* get_type_name() {
return "Float32<4,2>"; };
1041template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,4,3> >
1043 static const char* get_type_name() {
return "Float32<4,3>"; };
1047template<>
struct Type_traits<
mi::math::Matrix<mi::Float32,4,4> >
1049 static const char* get_type_name() {
return "Float32<4,4>"; };
1053template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,2,2> >
1055 static const char* get_type_name() {
return "Float64<2,2>"; };
1059template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,2,3> >
1061 static const char* get_type_name() {
return "Float64<2,3>"; };
1065template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,2,4> >
1067 static const char* get_type_name() {
return "Float64<2,4>"; };
1071template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,3,2> >
1073 static const char* get_type_name() {
return "Float64<3,2>"; };
1077template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,3,3> >
1079 static const char* get_type_name() {
return "Float64<3,3>"; };
1083template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,3,4> >
1085 static const char* get_type_name() {
return "Float64<3,4>"; };
1089template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,4,2> >
1091 static const char* get_type_name() {
return "Float64<4,2>"; };
1095template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,4,3> >
1097 static const char* get_type_name() {
return "Float64<4,3>"; };
1101template<>
struct Type_traits<
mi::math::Matrix<mi::Float64,4,4> >
1103 static const char* get_type_name() {
return "Float64<4,4>"; };
1109 static const char* get_type_name() {
return "Color"; };
1115 static const char* get_type_name() {
return "Spectrum"; };
1119template<>
struct Type_traits<
mi::math::Bbox<mi::Float32,3> >
1121 static const char* get_type_name() {
return "Bbox3"; };
1126template<
typename I, Size DIM>
struct Vector_type_traits {};
1128template<>
struct Vector_type_traits<bool, 2>
1131template<>
struct Vector_type_traits<bool, 3>
1134template<>
struct Vector_type_traits<bool, 4>
1137template<>
struct Vector_type_traits<
mi::
Sint32, 2>
1140template<>
struct Vector_type_traits<
mi::
Sint32, 3>
1143template<>
struct Vector_type_traits<
mi::
Sint32, 4>
1146template<>
struct Vector_type_traits<
mi::
Uint32, 2>
1149template<>
struct Vector_type_traits<
mi::
Uint32, 3>
1152template<>
struct Vector_type_traits<
mi::
Uint32, 4>
1155template<>
struct Vector_type_traits<
mi::
Float32, 2>
1158template<>
struct Vector_type_traits<
mi::
Float32, 3>
1161template<>
struct Vector_type_traits<
mi::
Float32, 4>
1164template<>
struct Vector_type_traits<
mi::
Float64, 2>
1167template<>
struct Vector_type_traits<
mi::
Float64, 3>
1170template<>
struct Vector_type_traits<
mi::
Float64, 4>
1174template<
typename I, Size ROW, Size COL>
struct Matrix_type_traits {};
1176template<>
struct Matrix_type_traits<bool, 2, 2>
1179template<>
struct Matrix_type_traits<bool, 2, 3>
1182template<>
struct Matrix_type_traits<bool, 2, 4>
1185template<>
struct Matrix_type_traits<bool, 3, 2>
1188template<>
struct Matrix_type_traits<bool, 3, 3>
1191template<>
struct Matrix_type_traits<bool, 3, 4>
1194template<>
struct Matrix_type_traits<bool, 4, 2>
1197template<>
struct Matrix_type_traits<bool, 4, 3>
1200template<>
struct Matrix_type_traits<bool, 4, 4>
1203template<>
struct Matrix_type_traits<
mi::
Sint32, 2, 2>
1206template<>
struct Matrix_type_traits<
mi::
Sint32, 2, 3>
1209template<>
struct Matrix_type_traits<
mi::
Sint32, 2, 4>
1212template<>
struct Matrix_type_traits<
mi::
Sint32, 3, 2>
1215template<>
struct Matrix_type_traits<
mi::
Sint32, 3, 3>
1218template<>
struct Matrix_type_traits<
mi::
Sint32, 3, 4>
1221template<>
struct Matrix_type_traits<
mi::
Sint32, 4, 2>
1224template<>
struct Matrix_type_traits<
mi::
Sint32, 4, 3>
1227template<>
struct Matrix_type_traits<
mi::
Sint32, 4, 4>
1230template<>
struct Matrix_type_traits<
mi::
Float32, 2, 2>
1233template<>
struct Matrix_type_traits<
mi::
Float32, 2, 3>
1236template<>
struct Matrix_type_traits<
mi::
Float32, 2, 4>
1239template<>
struct Matrix_type_traits<
mi::
Float32, 3, 2>
1242template<>
struct Matrix_type_traits<
mi::
Float32, 3, 3>
1245template<>
struct Matrix_type_traits<
mi::
Float32, 3, 4>
1248template<>
struct Matrix_type_traits<
mi::
Float32, 4, 2>
1251template<>
struct Matrix_type_traits<
mi::
Float32, 4, 3>
1254template<>
struct Matrix_type_traits<
mi::
Float32, 4, 4>
1257template<>
struct Matrix_type_traits<
mi::
Float64, 2, 2>
1260template<>
struct Matrix_type_traits<
mi::
Float64, 2, 3>
1263template<>
struct Matrix_type_traits<
mi::
Float64, 2, 4>
1266template<>
struct Matrix_type_traits<
mi::
Float64, 3, 2>
1269template<>
struct Matrix_type_traits<
mi::
Float64, 3, 3>
1272template<>
struct Matrix_type_traits<
mi::
Float64, 3, 4>
1275template<>
struct Matrix_type_traits<
mi::
Float64, 4, 2>
1278template<>
struct Matrix_type_traits<
mi::
Float64, 4, 3>
1281template<>
struct Matrix_type_traits<
mi::
Float64, 4, 4>
1285#if (__cplusplus >= 201103L)
1287template <
typename I,
typename = decltype(Type_traits<I>::get_type_name())>
1288const char* get_type_name()
1290 return Type_traits<I>::get_type_name();
1296 typename I =
typename T::Interface,
1297 typename =
decltype(Type_traits<I>::get_type_name())>
1298const char* get_type_name()
1300 return get_type_name<I>();
An axis-aligned N-dimensional bounding box class template of fixed dimension with supporting function...
This interface represents bounding boxes.
Definition: ibbox.h:28
This interface represents a 2 x 2 matrix of bool.
Definition: imatrix.h:29
This interface represents a 2 x 3 matrix of bool.
Definition: imatrix.h:53
This interface represents a 2 x 4 matrix of bool.
Definition: imatrix.h:75
This interface represents a vector of two bool.
Definition: ivector.h:26
This interface represents a 3 x 2 matrix of bool.
Definition: imatrix.h:97
This interface represents a 3 x 3 matrix of bool.
Definition: imatrix.h:119
This interface represents a 3 x 4 matrix of bool.
Definition: imatrix.h:141
This interface represents a vector of three bool.
Definition: ivector.h:48
This interface represents a 4 x 2 matrix of bool.
Definition: imatrix.h:163
This interface represents a 4 x 3 matrix of bool.
Definition: imatrix.h:185
This interface represents a 4 x 4 matrix of bool.
Definition: imatrix.h:207
This interface represents a vector of four bool.
Definition: ivector.h:70
This interface represents bool.
Definition: inumber.h:122
This interface represents RGBA colors.
Definition: icolor.h:28
This interface represents a 2 x 2 matrix of Float32.
Definition: imatrix.h:631
This interface represents a 2 x 3 matrix of Float32.
Definition: imatrix.h:653
This interface represents a 2 x 4 matrix of Float32.
Definition: imatrix.h:675
This interface represents a vector of two Float32.
Definition: ivector.h:227
This interface represents a 3 x 2 matrix of Float32.
Definition: imatrix.h:697
This interface represents a 3 x 3 matrix of Float32.
Definition: imatrix.h:719
This interface represents a 3 x 4 matrix of Float32.
Definition: imatrix.h:741
This interface represents a vector of three Float32.
Definition: ivector.h:249
This interface represents a 4 x 2 matrix of Float32.
Definition: imatrix.h:763
This interface represents a 4 x 3 matrix of Float32.
Definition: imatrix.h:785
This interface represents a 4 x 4 matrix of Float32.
Definition: imatrix.h:807
This interface represents a vector of four Float32.
Definition: ivector.h:271
This interface represents mi::Float32.
Definition: inumber.h:221
This interface represents a 2 x 2 matrix of Float64.
Definition: imatrix.h:831
This interface represents a 2 x 3 matrix of Float64.
Definition: imatrix.h:853
This interface represents a 2 x 4 matrix of Float64.
Definition: imatrix.h:875
This interface represents a vector of two Float64.
Definition: ivector.h:294
This interface represents a 3 x 2 matrix of Float64.
Definition: imatrix.h:897
This interface represents a 3 x 3 matrix of Float64.
Definition: imatrix.h:919
This interface represents a 3 x 4 matrix of Float64.
Definition: imatrix.h:941
This interface represents a vector of three Float64.
Definition: ivector.h:316
This interface represents a 4 x 2 matrix of Float64.
Definition: imatrix.h:963
This interface represents a 4 x 3 matrix of Float64.
Definition: imatrix.h:985
This interface represents a 4 x 4 matrix of Float64.
Definition: imatrix.h:1007
This interface represents a vector of four Float64.
Definition: ivector.h:338
This interface represents mi::Float64.
Definition: inumber.h:232
This interface represents mi::Sint16.
Definition: inumber.h:188
This interface represents a 2 x 2 matrix of Sint32.
Definition: imatrix.h:231
This interface represents a 2 x 3 matrix of Sint32.
Definition: imatrix.h:253
This interface represents a 2 x 4 matrix of Sint32.
Definition: imatrix.h:275
This interface represents a vector of two Sint32.
Definition: ivector.h:93
This interface represents a 3 x 2 matrix of Sint32.
Definition: imatrix.h:297
This interface represents a 3 x 3 matrix of Sint32.
Definition: imatrix.h:319
This interface represents a 3 x 4 matrix of Sint32.
Definition: imatrix.h:341
This interface represents a vector of three Sint32.
Definition: ivector.h:115
This interface represents a 4 x 2 matrix of Sint32.
Definition: imatrix.h:363
This interface represents a 4 x 3 matrix of Sint32.
Definition: imatrix.h:385
This interface represents a 4 x 4 matrix of Sint32.
Definition: imatrix.h:407
This interface represents a vector of four Sint32.
Definition: ivector.h:137
This interface represents mi::Sint32.
Definition: inumber.h:199
This interface represents mi::Sint64.
Definition: inumber.h:210
This interface represents mi::Sint8.
Definition: inumber.h:177
This interface represents spectrums.
Definition: ispectrum.h:28
A simple string class.
Definition: istring.h:22
This interface represents mi::Uint16.
Definition: inumber.h:144
This interface represents a 2 x 2 matrix of Uint32.
Definition: imatrix.h:431
This interface represents a 2 x 3 matrix of Uint32.
Definition: imatrix.h:453
This interface represents a 2 x 4 matrix of Uint32.
Definition: imatrix.h:475
This interface represents a vector of two Uint32.
Definition: ivector.h:160
This interface represents a 3 x 2 matrix of Uint32.
Definition: imatrix.h:497
This interface represents a 3 x 3 matrix of Uint32.
Definition: imatrix.h:519
This interface represents a 3 x 4 matrix of Uint32.
Definition: imatrix.h:541
This interface represents a vector of three Uint32.
Definition: ivector.h:182
This interface represents a 4 x 2 matrix of Uint32.
Definition: imatrix.h:563
This interface represents a 4 x 3 matrix of Uint32.
Definition: imatrix.h:585
This interface represents a 4 x 4 matrix of Uint32.
Definition: imatrix.h:607
This interface represents a vector of four Uint32.
Definition: ivector.h:204
This interface represents mi::Uint32.
Definition: inumber.h:155
This interface represents mi::Uint64.
Definition: inumber.h:166
This interface represents mi::Uint8.
Definition: inumber.h:133
This interface represents UUIDs.
Definition: iuuid.h:24
This interface represents the void type.
Definition: idata.h:523
Axis-aligned N-dimensional bounding box class template of fixed dimension.
Definition: bbox.h:74
Standard RGBA color class with floating point elements and operations.
Definition: color.h:81
NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:367
Spectrum with floating point elements and operations.
Definition: spectrum.h:53
Fixed-size math vector class template with generic operations.
Definition: vector.h:286
Standard RGBA color class with floating point elements and operations.
long long Sint64
64-bit signed integer.
Definition: types.h:61
unsigned long long Uint64
64-bit unsigned integer.
Definition: types.h:62
signed short Sint16
16-bit signed integer.
Definition: types.h:45
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
unsigned char Uint8
8-bit unsigned integer.
Definition: types.h:47
Sint64 Difference
Signed integral type that is large enough to hold the difference of two pointers.
Definition: types.h:122
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
signed char Sint8
8-bit signed integer.
Definition: types.h:44
double Float64
64-bit float.
Definition: types.h:52
float Float32
32-bit float.
Definition: types.h:51
unsigned short Uint16
16-bit unsigned integer.
Definition: types.h:48
signed int Sint32
32-bit signed integer.
Definition: types.h:46
math::Spectrum Spectrum
Spectrum class.
Definition: typedefs.h:47
math::Color Color
RGBA color class.
Definition: typedefs.h:28
Mixin class template for deriving new interface declarations.
A NxM-dimensional matrix class template of fixed dimensions with supporting functions.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5
Spectrum class with floating point elements and operations.
Type traits relating interfaces, corresponding primitive types, and their type names.
Definition: type_traits.h:162
A 128 bit representation of a universally unique identifier (UUID or GUID).
Definition: uuid.h:26
A 128 bit representation of a universally unique identifier (UUID or GUID).
Math vector class template of fixed dimension with arithmetic operators and generic functions.