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;
170 template<>
struct Type_traits<mi::ISint8>
172 static const char* get_type_name() {
return "Sint8"; }
176 template<>
struct Type_traits<mi::ISint16>
178 static const char* get_type_name() {
return "Sint16"; }
182 template<>
struct Type_traits<mi::ISint32>
184 static const char* get_type_name() {
return "Sint32"; }
188 template<>
struct Type_traits<mi::ISint64>
190 static const char* get_type_name() {
return "Sint64"; }
194 template<>
struct Type_traits<mi::IUint8>
196 static const char* get_type_name() {
return "Uint8"; }
200 template<>
struct Type_traits<mi::IUint16>
202 static const char* get_type_name() {
return "Uint16"; }
206 template<>
struct Type_traits<mi::IUint32>
208 static const char* get_type_name() {
return "Uint32"; }
212 template<>
struct Type_traits<mi::IUint64>
214 static const char* get_type_name() {
return "Uint64"; }
218 template<>
struct Type_traits<mi::IFloat32>
220 static const char* get_type_name() {
return "Float32"; }
224 template<>
struct Type_traits<mi::IFloat64>
226 static const char* get_type_name() {
return "Float64"; }
230 template<>
struct Type_traits<mi::ISize>
232 static const char* get_type_name() {
return "Size"; }
236 template<>
struct Type_traits<mi::IDifference>
238 static const char* get_type_name() {
return "Difference"; }
242 template<>
struct Type_traits<mi::IString>
244 static const char* get_type_name() {
return "String"; }
245 typedef const char* Primitive_type;
248 template<>
struct Type_traits<mi::IUuid>
250 static const char* get_type_name() {
return "Uuid"; }
254 template<>
struct Type_traits<mi::IVoid>
256 static const char* get_type_name() {
return "Void"; }
257 typedef void Primitive_type;
260 template<>
struct Type_traits<mi::IRef>
262 static const char* get_type_name() {
return "Ref"; }
263 typedef const char* Primitive_type;
266 template<>
struct Type_traits<mi::IBoolean_2>
268 static const char* get_type_name() {
return "Boolean<2>"; }
272 template<>
struct Type_traits<mi::IBoolean_3>
274 static const char* get_type_name() {
return "Boolean<3>"; }
278 template<>
struct Type_traits<mi::IBoolean_4>
280 static const char* get_type_name() {
return "Boolean<4>"; }
284 template<>
struct Type_traits<mi::ISint32_2>
286 static const char* get_type_name() {
return "Sint32<2>"; }
290 template<>
struct Type_traits<mi::ISint32_3>
292 static const char* get_type_name() {
return "Sint32<3>"; }
296 template<>
struct Type_traits<mi::ISint32_4>
298 static const char* get_type_name() {
return "Sint32<4>"; }
302 template<>
struct Type_traits<mi::IUint32_2>
304 static const char* get_type_name() {
return "Uint32<2>"; }
308 template<>
struct Type_traits<mi::IUint32_3>
310 static const char* get_type_name() {
return "Uint32<3>"; }
314 template<>
struct Type_traits<mi::IUint32_4>
316 static const char* get_type_name() {
return "Uint32<4>"; }
320 template<>
struct Type_traits<mi::IFloat32_2>
322 static const char* get_type_name() {
return "Float32<2>"; }
326 template<>
struct Type_traits<mi::IFloat32_3>
328 static const char* get_type_name() {
return "Float32<3>"; }
332 template<>
struct Type_traits<mi::IFloat32_4>
334 static const char* get_type_name() {
return "Float32<4>"; }
338 template<>
struct Type_traits<mi::IFloat64_2>
340 static const char* get_type_name() {
return "Float64<2>"; }
344 template<>
struct Type_traits<mi::IFloat64_3>
346 static const char* get_type_name() {
return "Float64<3>"; }
350 template<>
struct Type_traits<mi::IFloat64_4>
352 static const char* get_type_name() {
return "Float64<4>"; }
356 template<>
struct Type_traits<mi::IBoolean_2_2>
358 static const char* get_type_name() {
return "Boolean<2,2>"; }
362 template<>
struct Type_traits<mi::IBoolean_2_3>
364 static const char* get_type_name() {
return "Boolean<2,3>"; }
368 template<>
struct Type_traits<mi::IBoolean_2_4>
370 static const char* get_type_name() {
return "Boolean<2,4>"; }
374 template<>
struct Type_traits<mi::IBoolean_3_2>
376 static const char* get_type_name() {
return "Boolean<3,2>"; }
380 template<>
struct Type_traits<mi::IBoolean_3_3>
382 static const char* get_type_name() {
return "Boolean<3,3>"; }
386 template<>
struct Type_traits<mi::IBoolean_3_4>
388 static const char* get_type_name() {
return "Boolean<3,4>"; }
392 template<>
struct Type_traits<mi::IBoolean_4_2>
394 static const char* get_type_name() {
return "Boolean<4,2>"; }
398 template<>
struct Type_traits<mi::IBoolean_4_3>
400 static const char* get_type_name() {
return "Boolean<4,3>"; }
404 template<>
struct Type_traits<mi::IBoolean_4_4>
406 static const char* get_type_name() {
return "Boolean<4,4>"; }
410 template<>
struct Type_traits<mi::ISint32_2_2>
412 static const char* get_type_name() {
return "Sint32<2,2>"; }
416 template<>
struct Type_traits<mi::ISint32_2_3>
418 static const char* get_type_name() {
return "Sint32<2,3>"; }
422 template<>
struct Type_traits<mi::ISint32_2_4>
424 static const char* get_type_name() {
return "Sint32<2,4>"; }
428 template<>
struct Type_traits<mi::ISint32_3_2>
430 static const char* get_type_name() {
return "Sint32<3,2>"; }
434 template<>
struct Type_traits<mi::ISint32_3_3>
436 static const char* get_type_name() {
return "Sint32<3,3>"; }
440 template<>
struct Type_traits<mi::ISint32_3_4>
442 static const char* get_type_name() {
return "Sint32<3,4>"; }
446 template<>
struct Type_traits<mi::ISint32_4_2>
448 static const char* get_type_name() {
return "Sint32<4,2>"; }
452 template<>
struct Type_traits<mi::ISint32_4_3>
454 static const char* get_type_name() {
return "Sint32<4,3>"; }
458 template<>
struct Type_traits<mi::ISint32_4_4>
460 static const char* get_type_name() {
return "Sint32<4,4>"; }
464 template<>
struct Type_traits<mi::IUint32_2_2>
466 static const char* get_type_name() {
return "Uint32<2,2>"; }
470 template<>
struct Type_traits<mi::IUint32_2_3>
472 static const char* get_type_name() {
return "Uint32<2,3>"; }
476 template<>
struct Type_traits<mi::IUint32_2_4>
478 static const char* get_type_name() {
return "Uint32<2,4>"; }
482 template<>
struct Type_traits<mi::IUint32_3_2>
484 static const char* get_type_name() {
return "Uint32<3,2>"; }
488 template<>
struct Type_traits<mi::IUint32_3_3>
490 static const char* get_type_name() {
return "Uint32<3,3>"; }
494 template<>
struct Type_traits<mi::IUint32_3_4>
496 static const char* get_type_name() {
return "Uint32<3,4>"; }
500 template<>
struct Type_traits<mi::IUint32_4_2>
502 static const char* get_type_name() {
return "Uint32<4,2>"; }
506 template<>
struct Type_traits<mi::IUint32_4_3>
508 static const char* get_type_name() {
return "Uint32<4,3>"; }
512 template<>
struct Type_traits<mi::IUint32_4_4>
514 static const char* get_type_name() {
return "Uint32<4,4>"; }
518 template<>
struct Type_traits<mi::IFloat32_2_2>
520 static const char* get_type_name() {
return "Float32<2,2>"; }
524 template<>
struct Type_traits<mi::IFloat32_2_3>
526 static const char* get_type_name() {
return "Float32<2,3>"; }
530 template<>
struct Type_traits<mi::IFloat32_2_4>
532 static const char* get_type_name() {
return "Float32<2,4>"; }
536 template<>
struct Type_traits<mi::IFloat32_3_2>
538 static const char* get_type_name() {
return "Float32<3,2>"; }
542 template<>
struct Type_traits<mi::IFloat32_3_3>
544 static const char* get_type_name() {
return "Float32<3,3>"; }
548 template<>
struct Type_traits<mi::IFloat32_3_4>
550 static const char* get_type_name() {
return "Float32<3,4>"; }
554 template<>
struct Type_traits<mi::IFloat32_4_2>
556 static const char* get_type_name() {
return "Float32<4,2>"; }
560 template<>
struct Type_traits<mi::IFloat32_4_3>
562 static const char* get_type_name() {
return "Float32<4,3>"; }
566 template<>
struct Type_traits<mi::IFloat32_4_4>
568 static const char* get_type_name() {
return "Float32<4,4>"; }
572 template<>
struct Type_traits<mi::IFloat64_2_2>
574 static const char* get_type_name() {
return "Float64<2,2>"; }
578 template<>
struct Type_traits<mi::IFloat64_2_3>
580 static const char* get_type_name() {
return "Float64<2,3>"; }
584 template<>
struct Type_traits<mi::IFloat64_2_4>
586 static const char* get_type_name() {
return "Float64<2,4>"; }
590 template<>
struct Type_traits<mi::IFloat64_3_2>
592 static const char* get_type_name() {
return "Float64<3,2>"; }
596 template<>
struct Type_traits<mi::IFloat64_3_3>
598 static const char* get_type_name() {
return "Float64<3,3>"; }
602 template<>
struct Type_traits<mi::IFloat64_3_4>
604 static const char* get_type_name() {
return "Float64<3,4>"; }
608 template<>
struct Type_traits<mi::IFloat64_4_2>
610 static const char* get_type_name() {
return "Float64<4,2>"; }
614 template<>
struct Type_traits<mi::IFloat64_4_3>
616 static const char* get_type_name() {
return "Float64<4,3>"; }
620 template<>
struct Type_traits<mi::IFloat64_4_4>
622 static const char* get_type_name() {
return "Float64<4,4>"; }
626 template<>
struct Type_traits<mi::IColor>
628 static const char* get_type_name() {
return "Color"; }
632 template<>
struct Type_traits<mi::IColor3>
634 static const char* get_type_name() {
return "Color3"; }
638 template<>
struct Type_traits<mi::ISpectrum>
640 static const char* get_type_name() {
return "Spectrum"; }
644 template<>
struct Type_traits<mi::IBbox3>
646 static const char* get_type_name() {
return "Bbox3"; }
651 template<>
struct Type_traits<bool>
653 static const char* get_type_name() {
return "Boolean"; };
657 template<>
struct Type_traits<mi::
Sint8>
659 static const char* get_type_name() {
return "Sint8"; };
663 template<>
struct Type_traits<mi::
Sint16>
665 static const char* get_type_name() {
return "Sint16"; };
669 template<>
struct Type_traits<mi::
Sint32>
671 static const char* get_type_name() {
return "Sint32"; };
675 template<>
struct Type_traits<mi::
Sint64>
677 static const char* get_type_name() {
return "Sint64"; };
681 template<>
struct Type_traits<mi::
Uint8>
683 static const char* get_type_name() {
return "Uint8"; };
687 template<>
struct Type_traits<mi::
Uint16>
689 static const char* get_type_name() {
return "Uint16"; };
693 template<>
struct Type_traits<mi::
Uint32>
695 static const char* get_type_name() {
return "Uint32"; };
699 template<>
struct Type_traits<mi::
Uint64>
701 static const char* get_type_name() {
return "Uint64"; };
705 template<>
struct Type_traits<mi::
Float32>
707 static const char* get_type_name() {
return "Float32"; };
711 template<>
struct Type_traits<mi::
Float64>
713 static const char* get_type_name() {
return "Float64"; };
717 template<>
struct Type_traits<const char*>
719 static const char* get_type_name() {
return "String"; };
723 template<>
struct Type_traits<std::string>
725 static const char* get_type_name() {
return "String"; };
729 template<std::
size_t N>
struct Type_traits<char[N]>
731 static const char* get_type_name() {
return "String"; };
735 template<>
struct Type_traits<mi::base::Uuid>
737 static const char* get_type_name() {
return "Uuid"; };
741 template<>
struct Type_traits<void>
743 static const char* get_type_name() {
return "Void"; };
747 template<>
struct Type_traits<mi::math::Vector<bool,2> >
749 static const char* get_type_name() {
return "Boolean<2>"; };
753 template<>
struct Type_traits<mi::math::Vector<bool,3> >
755 static const char* get_type_name() {
return "Boolean<3>"; };
759 template<>
struct Type_traits<mi::math::Vector<bool,4> >
761 static const char* get_type_name() {
return "Boolean<4>"; };
765 template<>
struct Type_traits<mi::math::Vector<mi::Sint32,2> >
767 static const char* get_type_name() {
return "Sint32<2>"; };
771 template<>
struct Type_traits<mi::math::Vector<mi::Sint32,3> >
773 static const char* get_type_name() {
return "Sint32<3>"; };
777 template<>
struct Type_traits<mi::math::Vector<mi::Sint32,4> >
779 static const char* get_type_name() {
return "Sint32<4>"; };
783 template<>
struct Type_traits<mi::math::Vector<mi::Uint32,2> >
785 static const char* get_type_name() {
return "Uint32<2>"; };
789 template<>
struct Type_traits<mi::math::Vector<mi::Uint32,3> >
791 static const char* get_type_name() {
return "Uint32<3>"; };
795 template<>
struct Type_traits<mi::math::Vector<mi::Uint32,4> >
797 static const char* get_type_name() {
return "Uint32<4>"; };
801 template<>
struct Type_traits<mi::math::Vector<mi::Float32,2> >
803 static const char* get_type_name() {
return "Float32<2>"; };
807 template<>
struct Type_traits<mi::math::Vector<mi::Float32,3> >
809 static const char* get_type_name() {
return "Float32<3>"; };
813 template<>
struct Type_traits<mi::math::Vector<mi::Float32,4> >
815 static const char* get_type_name() {
return "Float32<4>"; };
819 template<>
struct Type_traits<mi::math::Vector<mi::Float64,2> >
821 static const char* get_type_name() {
return "Float64<2>"; };
825 template<>
struct Type_traits<mi::math::Vector<mi::Float64,3> >
827 static const char* get_type_name() {
return "Float64<3>"; };
831 template<>
struct Type_traits<mi::math::Vector<mi::Float64,4> >
833 static const char* get_type_name() {
return "Float64<4>"; };
837 template<>
struct Type_traits<mi::math::Matrix<bool,2,2> >
839 static const char* get_type_name() {
return "Boolean<2,2>"; };
843 template<>
struct Type_traits<mi::math::Matrix<bool,2,3> >
845 static const char* get_type_name() {
return "Boolean<2,3>"; };
849 template<>
struct Type_traits<mi::math::Matrix<bool,2,4> >
851 static const char* get_type_name() {
return "Boolean<2,4>"; };
855 template<>
struct Type_traits<mi::math::Matrix<bool,3,2> >
857 static const char* get_type_name() {
return "Boolean<3,2>"; };
861 template<>
struct Type_traits<mi::math::Matrix<bool,3,3> >
863 static const char* get_type_name() {
return "Boolean<3,3>"; };
867 template<>
struct Type_traits<mi::math::Matrix<bool,3,4> >
869 static const char* get_type_name() {
return "Boolean<3,4>"; };
873 template<>
struct Type_traits<mi::math::Matrix<bool,4,2> >
875 static const char* get_type_name() {
return "Boolean<4,2>"; };
879 template<>
struct Type_traits<mi::math::Matrix<bool,4,3> >
881 static const char* get_type_name() {
return "Boolean<4,3>"; };
885 template<>
struct Type_traits<mi::math::Matrix<bool,4,4> >
887 static const char* get_type_name() {
return "Boolean<4,4>"; };
891 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,2,2> >
893 static const char* get_type_name() {
return "Sint32<2,2>"; };
897 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,2,3> >
899 static const char* get_type_name() {
return "Sint32<2,3>"; };
903 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,2,4> >
905 static const char* get_type_name() {
return "Sint32<2,4>"; };
909 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,3,2> >
911 static const char* get_type_name() {
return "Sint32<3,2>"; };
915 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,3,3> >
917 static const char* get_type_name() {
return "Sint32<3,3>"; };
921 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,3,4> >
923 static const char* get_type_name() {
return "Sint32<3,4>"; };
927 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,4,2> >
929 static const char* get_type_name() {
return "Sint32<4,2>"; };
933 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,4,3> >
935 static const char* get_type_name() {
return "Sint32<4,3>"; };
939 template<>
struct Type_traits<mi::math::Matrix<mi::Sint32,4,4> >
941 static const char* get_type_name() {
return "Sint32<4,4>"; };
945 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,2,2> >
947 static const char* get_type_name() {
return "Uint32<2,2>"; };
951 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,2,3> >
953 static const char* get_type_name() {
return "Uint32<2,3>"; };
957 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,2,4> >
959 static const char* get_type_name() {
return "Uint32<2,4>"; };
963 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,3,2> >
965 static const char* get_type_name() {
return "Uint32<3,2>"; };
969 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,3,3> >
971 static const char* get_type_name() {
return "Uint32<3,3>"; };
975 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,3,4> >
977 static const char* get_type_name() {
return "Uint32<3,4>"; };
981 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,4,2> >
983 static const char* get_type_name() {
return "Uint32<4,2>"; };
987 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,4,3> >
989 static const char* get_type_name() {
return "Uint32<4,3>"; };
993 template<>
struct Type_traits<mi::math::Matrix<mi::Uint32,4,4> >
995 static const char* get_type_name() {
return "Uint32<4,4>"; };
999 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,2,2> >
1001 static const char* get_type_name() {
return "Float32<2,2>"; };
1005 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,2,3> >
1007 static const char* get_type_name() {
return "Float32<2,3>"; };
1011 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,2,4> >
1013 static const char* get_type_name() {
return "Float32<2,4>"; };
1017 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,3,2> >
1019 static const char* get_type_name() {
return "Float32<3,2>"; };
1023 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,3,3> >
1025 static const char* get_type_name() {
return "Float32<3,3>"; };
1029 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,3,4> >
1031 static const char* get_type_name() {
return "Float32<3,4>"; };
1035 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,4,2> >
1037 static const char* get_type_name() {
return "Float32<4,2>"; };
1041 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,4,3> >
1043 static const char* get_type_name() {
return "Float32<4,3>"; };
1047 template<>
struct Type_traits<mi::math::Matrix<mi::Float32,4,4> >
1049 static const char* get_type_name() {
return "Float32<4,4>"; };
1053 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,2,2> >
1055 static const char* get_type_name() {
return "Float64<2,2>"; };
1059 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,2,3> >
1061 static const char* get_type_name() {
return "Float64<2,3>"; };
1065 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,2,4> >
1067 static const char* get_type_name() {
return "Float64<2,4>"; };
1071 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,3,2> >
1073 static const char* get_type_name() {
return "Float64<3,2>"; };
1077 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,3,3> >
1079 static const char* get_type_name() {
return "Float64<3,3>"; };
1083 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,3,4> >
1085 static const char* get_type_name() {
return "Float64<3,4>"; };
1089 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,4,2> >
1091 static const char* get_type_name() {
return "Float64<4,2>"; };
1095 template<>
struct Type_traits<mi::math::Matrix<mi::Float64,4,3> >
1097 static const char* get_type_name() {
return "Float64<4,3>"; };
1101 template<>
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"; };
1119 template<>
struct Type_traits<mi::math::Bbox<mi::Float32,3> >
1121 static const char* get_type_name() {
return "Bbox3"; };
1126 template<
typename I, Size DIM>
struct Vector_type_traits {};
1128 template<>
struct Vector_type_traits<bool, 2>
1131 template<>
struct Vector_type_traits<bool, 3>
1134 template<>
struct Vector_type_traits<bool, 4>
1137 template<>
struct Vector_type_traits<mi::
Sint32, 2>
1140 template<>
struct Vector_type_traits<mi::
Sint32, 3>
1143 template<>
struct Vector_type_traits<mi::
Sint32, 4>
1146 template<>
struct Vector_type_traits<mi::
Uint32, 2>
1149 template<>
struct Vector_type_traits<mi::
Uint32, 3>
1152 template<>
struct Vector_type_traits<mi::
Uint32, 4>
1155 template<>
struct Vector_type_traits<mi::
Float32, 2>
1158 template<>
struct Vector_type_traits<mi::
Float32, 3>
1161 template<>
struct Vector_type_traits<mi::
Float32, 4>
1164 template<>
struct Vector_type_traits<mi::
Float64, 2>
1167 template<>
struct Vector_type_traits<mi::
Float64, 3>
1170 template<>
struct Vector_type_traits<mi::
Float64, 4>
1174 template<
typename I, Size ROW, Size COL>
struct Matrix_type_traits {};
1176 template<>
struct Matrix_type_traits<bool, 2, 2>
1179 template<>
struct Matrix_type_traits<bool, 2, 3>
1182 template<>
struct Matrix_type_traits<bool, 2, 4>
1185 template<>
struct Matrix_type_traits<bool, 3, 2>
1188 template<>
struct Matrix_type_traits<bool, 3, 3>
1191 template<>
struct Matrix_type_traits<bool, 3, 4>
1194 template<>
struct Matrix_type_traits<bool, 4, 2>
1197 template<>
struct Matrix_type_traits<bool, 4, 3>
1200 template<>
struct Matrix_type_traits<bool, 4, 4>
1203 template<>
struct Matrix_type_traits<mi::
Sint32, 2, 2>
1206 template<>
struct Matrix_type_traits<mi::
Sint32, 2, 3>
1209 template<>
struct Matrix_type_traits<mi::
Sint32, 2, 4>
1212 template<>
struct Matrix_type_traits<mi::
Sint32, 3, 2>
1215 template<>
struct Matrix_type_traits<mi::
Sint32, 3, 3>
1218 template<>
struct Matrix_type_traits<mi::
Sint32, 3, 4>
1221 template<>
struct Matrix_type_traits<mi::
Sint32, 4, 2>
1224 template<>
struct Matrix_type_traits<mi::
Sint32, 4, 3>
1227 template<>
struct Matrix_type_traits<mi::
Sint32, 4, 4>
1230 template<>
struct Matrix_type_traits<mi::
Float32, 2, 2>
1233 template<>
struct Matrix_type_traits<mi::
Float32, 2, 3>
1236 template<>
struct Matrix_type_traits<mi::
Float32, 2, 4>
1239 template<>
struct Matrix_type_traits<mi::
Float32, 3, 2>
1242 template<>
struct Matrix_type_traits<mi::
Float32, 3, 3>
1245 template<>
struct Matrix_type_traits<mi::
Float32, 3, 4>
1248 template<>
struct Matrix_type_traits<mi::
Float32, 4, 2>
1251 template<>
struct Matrix_type_traits<mi::
Float32, 4, 3>
1254 template<>
struct Matrix_type_traits<mi::
Float32, 4, 4>
1257 template<>
struct Matrix_type_traits<mi::
Float64, 2, 2>
1260 template<>
struct Matrix_type_traits<mi::
Float64, 2, 3>
1263 template<>
struct Matrix_type_traits<mi::
Float64, 2, 4>
1266 template<>
struct Matrix_type_traits<mi::
Float64, 3, 2>
1269 template<>
struct Matrix_type_traits<mi::
Float64, 3, 3>
1272 template<>
struct Matrix_type_traits<mi::
Float64, 3, 4>
1275 template<>
struct Matrix_type_traits<mi::
Float64, 4, 2>
1278 template<>
struct Matrix_type_traits<mi::
Float64, 4, 3>
1281 template<>
struct Matrix_type_traits<mi::
Float64, 4, 4>
1288 #endif // MI_NEURAYLIB_TYPE_TRAITS_H