Skip to content

Commit 1aefc99

Browse files
committed
Move =delete of vector length/normalize methods to just after class
Signed-off-by: Cary Phillips <cary@ilm.com>
1 parent c005e35 commit 1aefc99

1 file changed

Lines changed: 192 additions & 172 deletions

File tree

src/Imath/ImathVec.h

Lines changed: 192 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -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)"
10061198
template <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
10851277
typedef 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

Comments
 (0)