@@ -355,6 +355,70 @@ template <class T> class IMATH_EXPORT_TEMPLATE_TYPE Vec2
355355 IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T lengthTiny () const IMATH_NOEXCEPT;
356356};
357357
358+ // ----------------------------------------------------------------------------
359+ // Specializations for Vec2<short>, Vec2<int>
360+ //
361+ // Normalize and length don't make sense for integer vectors, so disable them.
362+ // ----------------------------------------------------------------------------
363+
364+ // / @cond Doxygen_Suppress
365+
366+ // Vec2<short>
367+ template <>
368+ IMATH_HOSTDEVICE short Vec2<short >::length () const IMATH_NOEXCEPT = delete ;
369+ template <>
370+ IMATH_HOSTDEVICE const Vec2<short >&
371+ Vec2<short >::normalize () IMATH_NOEXCEPT = delete ;
372+ template <> const Vec2<short >& Vec2<short >::normalizeExc () = delete ;
373+ template <>
374+ IMATH_HOSTDEVICE const Vec2<short >&
375+ Vec2<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
376+ template <>
377+ IMATH_HOSTDEVICE Vec2<short >
378+ Vec2<short >::normalized () const IMATH_NOEXCEPT = delete ;
379+ template <> Vec2<short > Vec2<short >::normalizedExc () const = delete ;
380+ template <>
381+ IMATH_HOSTDEVICE Vec2<short >
382+ Vec2<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
383+
384+ // Vec2<int>
385+ template <>
386+ IMATH_HOSTDEVICE int Vec2<int >::length () const IMATH_NOEXCEPT = delete ;
387+ template <>
388+ IMATH_HOSTDEVICE const Vec2<int >&
389+ Vec2<int >::normalize () IMATH_NOEXCEPT = delete ;
390+ template <> const Vec2<int >& Vec2<int >::normalizeExc () = delete ;
391+ template <>
392+ IMATH_HOSTDEVICE const Vec2<int >&
393+ Vec2<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
394+ template <>
395+ IMATH_HOSTDEVICE Vec2<int >
396+ Vec2<int >::normalized () const IMATH_NOEXCEPT = delete ;
397+ template <> Vec2<int > Vec2<int >::normalizedExc () const = delete ;
398+ template <>
399+ IMATH_HOSTDEVICE Vec2<int >
400+ Vec2<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
401+
402+ // Vec2<int64_t>
403+ template <>
404+ IMATH_HOSTDEVICE int64_t Vec2<int64_t >::length () const IMATH_NOEXCEPT = delete ;
405+ template <>
406+ IMATH_HOSTDEVICE const Vec2<int64_t >&
407+ Vec2<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
408+ template <> const Vec2<int64_t >& Vec2<int64_t >::normalizeExc () = delete ;
409+ template <>
410+ IMATH_HOSTDEVICE const Vec2<int64_t >&
411+ Vec2<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
412+ template <>
413+ IMATH_HOSTDEVICE Vec2<int64_t >
414+ Vec2<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
415+ template <> Vec2<int64_t > Vec2<int64_t >::normalizedExc () const = delete ;
416+ template <>
417+ IMATH_HOSTDEVICE Vec2<int64_t >
418+ Vec2<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
419+
420+ // / @endcond Doxygen_Suppress
421+
358422// /
359423// / 3-element vector
360424// /
@@ -688,6 +752,70 @@ template <class T> class IMATH_EXPORT_TEMPLATE_TYPE Vec3
688752 IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T lengthTiny () const IMATH_NOEXCEPT;
689753};
690754
755+ // ----------------------------------------------------------------------------
756+ // Specializations for Vec3<short>, Vec3<int>
757+ //
758+ // Normalize and length don't make sense for integer vectors, so disable them.
759+ // ----------------------------------------------------------------------------
760+
761+ // / @cond Doxygen_Suppress
762+
763+ // Vec3<short>
764+ template <>
765+ IMATH_HOSTDEVICE short Vec3<short >::length () const IMATH_NOEXCEPT = delete ;
766+ template <>
767+ IMATH_HOSTDEVICE const Vec3<short >&
768+ Vec3<short >::normalize () IMATH_NOEXCEPT = delete ;
769+ template <> const Vec3<short >& Vec3<short >::normalizeExc () = delete ;
770+ template <>
771+ IMATH_HOSTDEVICE const Vec3<short >&
772+ Vec3<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
773+ template <>
774+ IMATH_HOSTDEVICE Vec3<short >
775+ Vec3<short >::normalized () const IMATH_NOEXCEPT = delete ;
776+ template <> Vec3<short > Vec3<short >::normalizedExc () const = delete ;
777+ template <>
778+ IMATH_HOSTDEVICE Vec3<short >
779+ Vec3<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
780+
781+ // Vec3<int>
782+ template <>
783+ IMATH_HOSTDEVICE int Vec3<int >::length () const IMATH_NOEXCEPT = delete ;
784+ template <>
785+ IMATH_HOSTDEVICE const Vec3<int >&
786+ Vec3<int >::normalize () IMATH_NOEXCEPT = delete ;
787+ template <> const Vec3<int >& Vec3<int >::normalizeExc () = delete ;
788+ template <>
789+ IMATH_HOSTDEVICE const Vec3<int >&
790+ Vec3<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
791+ template <>
792+ IMATH_HOSTDEVICE Vec3<int >
793+ Vec3<int >::normalized () const IMATH_NOEXCEPT = delete ;
794+ template <> Vec3<int > Vec3<int >::normalizedExc () const = delete ;
795+ template <>
796+ IMATH_HOSTDEVICE Vec3<int >
797+ Vec3<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
798+
799+ // Vec3<int64_t>
800+ template <>
801+ IMATH_HOSTDEVICE int64_t Vec3<int64_t >::length () const IMATH_NOEXCEPT = delete ;
802+ template <>
803+ IMATH_HOSTDEVICE const Vec3<int64_t >&
804+ Vec3<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
805+ template <> const Vec3<int64_t >& Vec3<int64_t >::normalizeExc () = delete ;
806+ template <>
807+ IMATH_HOSTDEVICE const Vec3<int64_t >&
808+ Vec3<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
809+ template <>
810+ IMATH_HOSTDEVICE Vec3<int64_t >
811+ Vec3<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
812+ template <> Vec3<int64_t > Vec3<int64_t >::normalizedExc () const = delete ;
813+ template <>
814+ IMATH_HOSTDEVICE Vec3<int64_t >
815+ Vec3<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
816+
817+ // / @endcond Doxygen_Suppress
818+
691819// /
692820// / 4-element vector
693821// /
@@ -1002,6 +1130,70 @@ template <class T> class IMATH_EXPORT_TEMPLATE_TYPE Vec4
10021130 IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T lengthTiny () const IMATH_NOEXCEPT;
10031131};
10041132
1133+ // ----------------------------------------------------------------------------
1134+ // Specializations for Vec4<short>, Vec4<int>
1135+ //
1136+ // Normalize and length don't make sense for integer vectors, so disable them.
1137+ // ----------------------------------------------------------------------------
1138+
1139+ // / @cond Doxygen_Suppress
1140+
1141+ // Vec4<short>
1142+ template <>
1143+ IMATH_HOSTDEVICE short Vec4<short >::length () const IMATH_NOEXCEPT = delete ;
1144+ template <>
1145+ IMATH_HOSTDEVICE const Vec4<short >&
1146+ Vec4<short >::normalize () IMATH_NOEXCEPT = delete ;
1147+ template <> const Vec4<short >& Vec4<short >::normalizeExc () = delete ;
1148+ template <>
1149+ IMATH_HOSTDEVICE const Vec4<short >&
1150+ Vec4<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1151+ template <>
1152+ IMATH_HOSTDEVICE Vec4<short >
1153+ Vec4<short >::normalized () const IMATH_NOEXCEPT = delete ;
1154+ template <> Vec4<short > Vec4<short >::normalizedExc () const = delete ;
1155+ template <>
1156+ IMATH_HOSTDEVICE Vec4<short >
1157+ Vec4<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1158+
1159+ // Vec4<int>
1160+ template <>
1161+ IMATH_HOSTDEVICE int Vec4<int >::length () const IMATH_NOEXCEPT = delete ;
1162+ template <>
1163+ IMATH_HOSTDEVICE const Vec4<int >&
1164+ Vec4<int >::normalize () IMATH_NOEXCEPT = delete ;
1165+ template <> const Vec4<int >& Vec4<int >::normalizeExc () = delete ;
1166+ template <>
1167+ IMATH_HOSTDEVICE const Vec4<int >&
1168+ Vec4<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1169+ template <>
1170+ IMATH_HOSTDEVICE Vec4<int >
1171+ Vec4<int >::normalized () const IMATH_NOEXCEPT = delete ;
1172+ template <> Vec4<int > Vec4<int >::normalizedExc () const = delete ;
1173+ template <>
1174+ IMATH_HOSTDEVICE Vec4<int >
1175+ Vec4<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1176+
1177+ // Vec4<int64_t>
1178+ template <>
1179+ IMATH_HOSTDEVICE int64_t Vec4<int64_t >::length () const IMATH_NOEXCEPT = delete ;
1180+ template <>
1181+ IMATH_HOSTDEVICE const Vec4<int64_t >&
1182+ Vec4<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
1183+ template <> const Vec4<int64_t >& Vec4<int64_t >::normalizeExc () = delete ;
1184+ template <>
1185+ IMATH_HOSTDEVICE const Vec4<int64_t >&
1186+ Vec4<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1187+ template <>
1188+ IMATH_HOSTDEVICE Vec4<int64_t >
1189+ Vec4<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
1190+ template <> Vec4<int64_t > Vec4<int64_t >::normalizedExc () const = delete ;
1191+ template <>
1192+ IMATH_HOSTDEVICE Vec4<int64_t >
1193+ Vec4<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1194+
1195+ // / @endcond Doxygen_Suppress
1196+
10051197// / Stream output, as "(x y)"
10061198template <class T > std::ostream& operator << (std::ostream& s, const Vec2<T>& v);
10071199
@@ -1084,178 +1276,6 @@ typedef Vec4<float> V4f;
10841276// / Vec4 of double
10851277typedef Vec4<double > V4d;
10861278
1087- // ----------------------------------------------------------------------------
1088- // Specializations for VecN<short>, VecN<int>
1089- //
1090- // Normalize and length don't make sense for integer vectors, so disable them.
1091- // ----------------------------------------------------------------------------
1092-
1093- // / @cond Doxygen_Suppress
1094-
1095- // Vec2<short>
1096- template <>
1097- IMATH_HOSTDEVICE short Vec2<short >::length () const IMATH_NOEXCEPT = delete ;
1098- template <>
1099- IMATH_HOSTDEVICE const Vec2<short >&
1100- Vec2<short >::normalize () IMATH_NOEXCEPT = delete ;
1101- template <> const Vec2<short >& Vec2<short >::normalizeExc () = delete ;
1102- template <>
1103- IMATH_HOSTDEVICE const Vec2<short >&
1104- Vec2<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1105- template <>
1106- IMATH_HOSTDEVICE Vec2<short >
1107- Vec2<short >::normalized () const IMATH_NOEXCEPT = delete ;
1108- template <> Vec2<short > Vec2<short >::normalizedExc () const = delete ;
1109- template <>
1110- IMATH_HOSTDEVICE Vec2<short >
1111- Vec2<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1112-
1113- // Vec2<int>
1114- template <>
1115- IMATH_HOSTDEVICE int Vec2<int >::length () const IMATH_NOEXCEPT = delete ;
1116- template <>
1117- IMATH_HOSTDEVICE const Vec2<int >&
1118- Vec2<int >::normalize () IMATH_NOEXCEPT = delete ;
1119- template <> const Vec2<int >& Vec2<int >::normalizeExc () = delete ;
1120- template <>
1121- IMATH_HOSTDEVICE const Vec2<int >&
1122- Vec2<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1123- template <>
1124- IMATH_HOSTDEVICE Vec2<int >
1125- Vec2<int >::normalized () const IMATH_NOEXCEPT = delete ;
1126- template <> Vec2<int > Vec2<int >::normalizedExc () const = delete ;
1127- template <>
1128- IMATH_HOSTDEVICE Vec2<int >
1129- Vec2<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1130-
1131- // Vec2<int64_t>
1132- template <>
1133- IMATH_HOSTDEVICE int64_t Vec2<int64_t >::length () const IMATH_NOEXCEPT = delete ;
1134- template <>
1135- IMATH_HOSTDEVICE const Vec2<int64_t >&
1136- Vec2<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
1137- template <> const Vec2<int64_t >& Vec2<int64_t >::normalizeExc () = delete ;
1138- template <>
1139- IMATH_HOSTDEVICE const Vec2<int64_t >&
1140- Vec2<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1141- template <>
1142- IMATH_HOSTDEVICE Vec2<int64_t >
1143- Vec2<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
1144- template <> Vec2<int64_t > Vec2<int64_t >::normalizedExc () const = delete ;
1145- template <>
1146- IMATH_HOSTDEVICE Vec2<int64_t >
1147- Vec2<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1148-
1149- // Vec3<short>
1150- template <>
1151- IMATH_HOSTDEVICE short Vec3<short >::length () const IMATH_NOEXCEPT = delete ;
1152- template <>
1153- IMATH_HOSTDEVICE const Vec3<short >&
1154- Vec3<short >::normalize () IMATH_NOEXCEPT = delete ;
1155- template <> const Vec3<short >& Vec3<short >::normalizeExc () = delete ;
1156- template <>
1157- IMATH_HOSTDEVICE const Vec3<short >&
1158- Vec3<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1159- template <>
1160- IMATH_HOSTDEVICE Vec3<short >
1161- Vec3<short >::normalized () const IMATH_NOEXCEPT = delete ;
1162- template <> Vec3<short > Vec3<short >::normalizedExc () const = delete ;
1163- template <>
1164- IMATH_HOSTDEVICE Vec3<short >
1165- Vec3<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1166-
1167- // Vec3<int>
1168- template <>
1169- IMATH_HOSTDEVICE int Vec3<int >::length () const IMATH_NOEXCEPT = delete ;
1170- template <>
1171- IMATH_HOSTDEVICE const Vec3<int >&
1172- Vec3<int >::normalize () IMATH_NOEXCEPT = delete ;
1173- template <> const Vec3<int >& Vec3<int >::normalizeExc () = delete ;
1174- template <>
1175- IMATH_HOSTDEVICE const Vec3<int >&
1176- Vec3<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1177- template <>
1178- IMATH_HOSTDEVICE Vec3<int >
1179- Vec3<int >::normalized () const IMATH_NOEXCEPT = delete ;
1180- template <> Vec3<int > Vec3<int >::normalizedExc () const = delete ;
1181- template <>
1182- IMATH_HOSTDEVICE Vec3<int >
1183- Vec3<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1184-
1185- // Vec3<int64_t>
1186- template <>
1187- IMATH_HOSTDEVICE int64_t Vec3<int64_t >::length () const IMATH_NOEXCEPT = delete ;
1188- template <>
1189- IMATH_HOSTDEVICE const Vec3<int64_t >&
1190- Vec3<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
1191- template <> const Vec3<int64_t >& Vec3<int64_t >::normalizeExc () = delete ;
1192- template <>
1193- IMATH_HOSTDEVICE const Vec3<int64_t >&
1194- Vec3<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1195- template <>
1196- IMATH_HOSTDEVICE Vec3<int64_t >
1197- Vec3<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
1198- template <> Vec3<int64_t > Vec3<int64_t >::normalizedExc () const = delete ;
1199- template <>
1200- IMATH_HOSTDEVICE Vec3<int64_t >
1201- Vec3<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1202-
1203- // Vec4<short>
1204- template <>
1205- IMATH_HOSTDEVICE short Vec4<short >::length () const IMATH_NOEXCEPT = delete ;
1206- template <>
1207- IMATH_HOSTDEVICE const Vec4<short >&
1208- Vec4<short >::normalize () IMATH_NOEXCEPT = delete ;
1209- template <> const Vec4<short >& Vec4<short >::normalizeExc () = delete ;
1210- template <>
1211- IMATH_HOSTDEVICE const Vec4<short >&
1212- Vec4<short >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1213- template <>
1214- IMATH_HOSTDEVICE Vec4<short >
1215- Vec4<short >::normalized () const IMATH_NOEXCEPT = delete ;
1216- template <> Vec4<short > Vec4<short >::normalizedExc () const = delete ;
1217- template <>
1218- IMATH_HOSTDEVICE Vec4<short >
1219- Vec4<short >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1220-
1221- // Vec4<int>
1222- template <>
1223- IMATH_HOSTDEVICE int Vec4<int >::length () const IMATH_NOEXCEPT = delete ;
1224- template <>
1225- IMATH_HOSTDEVICE const Vec4<int >&
1226- Vec4<int >::normalize () IMATH_NOEXCEPT = delete ;
1227- template <> const Vec4<int >& Vec4<int >::normalizeExc () = delete ;
1228- template <>
1229- IMATH_HOSTDEVICE const Vec4<int >&
1230- Vec4<int >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1231- template <>
1232- IMATH_HOSTDEVICE Vec4<int >
1233- Vec4<int >::normalized () const IMATH_NOEXCEPT = delete ;
1234- template <> Vec4<int > Vec4<int >::normalizedExc () const = delete ;
1235- template <>
1236- IMATH_HOSTDEVICE Vec4<int >
1237- Vec4<int >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1238-
1239- // Vec4<int64_t>
1240- template <>
1241- IMATH_HOSTDEVICE int64_t Vec4<int64_t >::length () const IMATH_NOEXCEPT = delete ;
1242- template <>
1243- IMATH_HOSTDEVICE const Vec4<int64_t >&
1244- Vec4<int64_t >::normalize () IMATH_NOEXCEPT = delete ;
1245- template <> const Vec4<int64_t >& Vec4<int64_t >::normalizeExc () = delete ;
1246- template <>
1247- IMATH_HOSTDEVICE const Vec4<int64_t >&
1248- Vec4<int64_t >::normalizeNonNull () IMATH_NOEXCEPT = delete ;
1249- template <>
1250- IMATH_HOSTDEVICE Vec4<int64_t >
1251- Vec4<int64_t >::normalized () const IMATH_NOEXCEPT = delete ;
1252- template <> Vec4<int64_t > Vec4<int64_t >::normalizedExc () const = delete ;
1253- template <>
1254- IMATH_HOSTDEVICE Vec4<int64_t >
1255- Vec4<int64_t >::normalizedNonNull () const IMATH_NOEXCEPT = delete ;
1256-
1257- // / @endcond Doxygen_Suppress
1258-
12591279// ------------------------
12601280// Implementation of Vec2:
12611281// ------------------------
0 commit comments