diff --git a/source/blender/python/mathutils/mathutils_Vector.cc b/source/blender/python/mathutils/mathutils_Vector.cc index 0583f6ac3d7..b026eb7345c 100644 --- a/source/blender/python/mathutils/mathutils_Vector.cc +++ b/source/blender/python/mathutils/mathutils_Vector.cc @@ -2636,6 +2636,12 @@ static PyObject *Vector_length_squared_get(VectorObject *self, void * /*closure* return PyFloat_FromDouble(dot_vn_vn(self->vec, self->vec, self->vec_num)); } +/* `Vector.xyzw`, etc.. */ +PyDoc_STRVAR( + /* Wrap. */ + Vector_swizzle_doc, + ":type: :class:`Vector`"); + /** * Python script used to make swizzle array: * @@ -2644,49 +2650,74 @@ static PyObject *Vector_length_squared_get(VectorObject *self, void * /*closure* * SWIZZLE_VALID_AXIS = 0x4 * * axis_dict = {} - * axis_pos = {'x': 0, 'y': 1, 'z': 2, 'w': 3} - * axis_chars = 'xyzw' + * axis_pos = {"x": 0, "y": 1, "z": 2, "w": 3} + * axis_chars = "xyzw" * while len(axis_chars) >= 2: * for axis_0 in axis_chars: * axis_0_pos = axis_pos[axis_0] * for axis_1 in axis_chars: * axis_1_pos = axis_pos[axis_1] * axis_dict[axis_0 + axis_1] = ( - * '((%s | SWIZZLE_VALID_AXIS) | ' - * '((%s | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS))' % - * (axis_0_pos, axis_1_pos)) - * if len(axis_chars) > 2: - * for axis_2 in axis_chars: - * axis_2_pos = axis_pos[axis_2] - * axis_dict[axis_0 + axis_1 + axis_2] = ( - * '((%s | SWIZZLE_VALID_AXIS) | ' - * '((%s | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS) | ' - * '((%s | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 2)))' % - * (axis_0_pos, axis_1_pos, axis_2_pos)) - * if len(axis_chars) > 3: - * for axis_3 in axis_chars: - * axis_3_pos = axis_pos[axis_3] - * axis_dict[axis_0 + axis_1 + axis_2 + axis_3] = ( - * '((%s | SWIZZLE_VALID_AXIS) | ' - * '((%s | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS) | ' - * '((%s | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 2)) | ' - * '((%s | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 3))) ' - * % - * (axis_0_pos, axis_1_pos, axis_2_pos, axis_3_pos)) + * "(({:d} | SWIZZLE_VALID_AXIS) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS))" + * ).format(axis_0_pos, axis_1_pos) + * if len(axis_chars) <= 2: + * continue + * for axis_2 in axis_chars: + * axis_2_pos = axis_pos[axis_2] + * axis_dict[axis_0 + axis_1 + axis_2] = ( + * "(({:d} | SWIZZLE_VALID_AXIS) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 2)))" + * ).format(axis_0_pos, axis_1_pos, axis_2_pos) + * if len(axis_chars) <= 3: + * continue + * for axis_3 in axis_chars: + * axis_3_pos = axis_pos[axis_3] + * axis_dict[axis_0 + axis_1 + axis_2 + axis_3] = ( + * "(({:d} | SWIZZLE_VALID_AXIS) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << SWIZZLE_BITS_PER_AXIS) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 2)) | " + * "(({:d} | SWIZZLE_VALID_AXIS) << (SWIZZLE_BITS_PER_AXIS * 3)))" + * ).format(axis_0_pos, axis_1_pos, axis_2_pos, axis_3_pos) * * axis_chars = axis_chars[:-1] * items = list(axis_dict.items()) * items.sort( - * key=lambda a: a[0].replace('x', '0').replace('y', '1').replace('z', '2').replace('w', '3') + * key=lambda a: a[0].replace("x", "0").replace("y", "1").replace("z", "2").replace("w", "3") * ) * + * for size in range(2, 5): + * for rw_pass in (True, False): + * key_args = ", ".join(list("abcd"[:size])) + * + * print("#define VECTOR_SWIZZLE{:d}_{:s}_DEF(attr, {:s}) \\".format( + * size, + * "RW" if rw_pass else "RO", + * key_args, + * )) + * print(" {{attr, (getter){:s}, (setter){:s}, {:s}, SWIZZLE{:d}({:s}), }}".format( + * "Vector_swizzle_get", + * "Vector_swizzle_set" if rw_pass else "nullptr", + * "Vector_swizzle_doc", + * size, + * key_args, + * )) + * print() + * * unique = set() * for key, val in items: * num = eval(val) - * set_str = 'Vector_swizzle_set' if (len(set(key)) == len(key)) else 'nullptr' - * key_args = ', '.join(["'%s'" % c for c in key.upper()]) - * print('\t{"%s", %s(getter)Vector_swizzle_get, (setter)%s, nullptr, SWIZZLE%d(%s)},' % - * (key, (' ' * (4 - len(key))), set_str, len(key), key_args)) + * key_args = ", ".join(["{:d}".format(axis_pos[c]) for c in key.lower()]) + * macro = "VECTOR_SWIZZLE{:d}_{:s}_DEF".format( + * len(key), + * "RW" if len(set(key)) == len(key) else "RO", + * ) + * print(" {:s}(\"{:s}\", {:s}),".format( + * macro, + * key, + * key_args, + * )) * unique.add(num) * * if len(unique) != len(items): @@ -2833,6 +2864,34 @@ static int Vector_swizzle_set(VectorObject *self, PyObject *value, void *closure #define SWIZZLE3(a, b, c) POINTER_FROM_INT(_SWIZZLE3(a, b, c)) #define SWIZZLE4(a, b, c, d) POINTER_FROM_INT(_SWIZZLE4(a, b, c, d)) +#define VECTOR_SWIZZLE2_RW_DEF(attr, a, b) \ + { \ + attr, (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, Vector_swizzle_doc, \ + SWIZZLE2(a, b), \ + } +#define VECTOR_SWIZZLE2_RO_DEF(attr, a, b) \ + { \ + attr, (getter)Vector_swizzle_get, (setter) nullptr, Vector_swizzle_doc, SWIZZLE2(a, b), \ + } +#define VECTOR_SWIZZLE3_RW_DEF(attr, a, b, c) \ + { \ + attr, (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, Vector_swizzle_doc, \ + SWIZZLE3(a, b, c), \ + } +#define VECTOR_SWIZZLE3_RO_DEF(attr, a, b, c) \ + { \ + attr, (getter)Vector_swizzle_get, (setter) nullptr, Vector_swizzle_doc, SWIZZLE3(a, b, c), \ + } +#define VECTOR_SWIZZLE4_RW_DEF(attr, a, b, c, d) \ + { \ + attr, (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, Vector_swizzle_doc, \ + SWIZZLE4(a, b, c, d), \ + } +#define VECTOR_SWIZZLE4_RO_DEF(attr, a, b, c, d) \ + { \ + attr, (getter)Vector_swizzle_get, (setter) nullptr, Vector_swizzle_doc, SWIZZLE4(a, b, c, d) \ + } + /** \} */ /* -------------------------------------------------------------------- */ @@ -2898,438 +2957,342 @@ static PyGetSetDef Vector_getseters[] = { nullptr}, /* Auto-generated swizzle attributes, see Python script above. */ - {"xx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE2(0, 0)}, - {"xxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 0, 0)}, - {"xxxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 0, 0)}, - {"xxxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 0, 1)}, - {"xxxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 0, 2)}, - {"xxxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 0, 3)}, - {"xxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 0, 1)}, - {"xxyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 1, 0)}, - {"xxyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 1, 1)}, - {"xxyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 1, 2)}, - {"xxyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 1, 3)}, - {"xxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 0, 2)}, - {"xxzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 2, 0)}, - {"xxzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 2, 1)}, - {"xxzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 2, 2)}, - {"xxzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 2, 3)}, - {"xxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 0, 3)}, - {"xxwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 3, 0)}, - {"xxwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 3, 1)}, - {"xxwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 3, 2)}, - {"xxww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 0, 3, 3)}, - {"xy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(0, 1)}, - {"xyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 1, 0)}, - {"xyxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 0, 0)}, - {"xyxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 0, 1)}, - {"xyxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 0, 2)}, - {"xyxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 0, 3)}, - {"xyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 1, 1)}, - {"xyyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 1, 0)}, - {"xyyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 1, 1)}, - {"xyyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 1, 2)}, - {"xyyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 1, 3)}, - {"xyz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 1, 2)}, - {"xyzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 2, 0)}, - {"xyzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 2, 1)}, - {"xyzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 2, 2)}, - {"xyzw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 1, 2, 3)}, - {"xyw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 1, 3)}, - {"xywx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 3, 0)}, - {"xywy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 3, 1)}, - {"xywz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 1, 3, 2)}, - {"xyww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 1, 3, 3)}, - {"xz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(0, 2)}, - {"xzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 2, 0)}, - {"xzxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 0, 0)}, - {"xzxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 0, 1)}, - {"xzxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 0, 2)}, - {"xzxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 0, 3)}, - {"xzy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 2, 1)}, - {"xzyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 1, 0)}, - {"xzyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 1, 1)}, - {"xzyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 1, 2)}, - {"xzyw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 2, 1, 3)}, - {"xzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 2, 2)}, - {"xzzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 2, 0)}, - {"xzzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 2, 1)}, - {"xzzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 2, 2)}, - {"xzzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 2, 3)}, - {"xzw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 2, 3)}, - {"xzwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 3, 0)}, - {"xzwy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 2, 3, 1)}, - {"xzwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 3, 2)}, - {"xzww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 2, 3, 3)}, - {"xw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(0, 3)}, - {"xwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 3, 0)}, - {"xwxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 0, 0)}, - {"xwxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 0, 1)}, - {"xwxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 0, 2)}, - {"xwxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 0, 3)}, - {"xwy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 3, 1)}, - {"xwyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 1, 0)}, - {"xwyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 1, 1)}, - {"xwyz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 3, 1, 2)}, - {"xwyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 1, 3)}, - {"xwz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(0, 3, 2)}, - {"xwzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 2, 0)}, - {"xwzy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(0, 3, 2, 1)}, - {"xwzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 2, 2)}, - {"xwzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 2, 3)}, - {"xww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(0, 3, 3)}, - {"xwwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 3, 0)}, - {"xwwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 3, 1)}, - {"xwwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 3, 2)}, - {"xwww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(0, 3, 3, 3)}, - {"yx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(1, 0)}, - {"yxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 0, 0)}, - {"yxxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 0, 0)}, - {"yxxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 0, 1)}, - {"yxxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 0, 2)}, - {"yxxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 0, 3)}, - {"yxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 0, 1)}, - {"yxyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 1, 0)}, - {"yxyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 1, 1)}, - {"yxyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 1, 2)}, - {"yxyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 1, 3)}, - {"yxz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 0, 2)}, - {"yxzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 2, 0)}, - {"yxzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 2, 1)}, - {"yxzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 2, 2)}, - {"yxzw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 0, 2, 3)}, - {"yxw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 0, 3)}, - {"yxwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 3, 0)}, - {"yxwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 3, 1)}, - {"yxwz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 0, 3, 2)}, - {"yxww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 0, 3, 3)}, - {"yy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE2(1, 1)}, - {"yyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 1, 0)}, - {"yyxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 0, 0)}, - {"yyxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 0, 1)}, - {"yyxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 0, 2)}, - {"yyxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 0, 3)}, - {"yyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 1, 1)}, - {"yyyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 1, 0)}, - {"yyyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 1, 1)}, - {"yyyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 1, 2)}, - {"yyyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 1, 3)}, - {"yyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 1, 2)}, - {"yyzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 2, 0)}, - {"yyzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 2, 1)}, - {"yyzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 2, 2)}, - {"yyzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 2, 3)}, - {"yyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 1, 3)}, - {"yywx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 3, 0)}, - {"yywy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 3, 1)}, - {"yywz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 3, 2)}, - {"yyww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 1, 3, 3)}, - {"yz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(1, 2)}, - {"yzx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 2, 0)}, - {"yzxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 0, 0)}, - {"yzxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 0, 1)}, - {"yzxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 0, 2)}, - {"yzxw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 2, 0, 3)}, - {"yzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 2, 1)}, - {"yzyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 1, 0)}, - {"yzyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 1, 1)}, - {"yzyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 1, 2)}, - {"yzyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 1, 3)}, - {"yzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 2, 2)}, - {"yzzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 2, 0)}, - {"yzzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 2, 1)}, - {"yzzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 2, 2)}, - {"yzzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 2, 3)}, - {"yzw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 2, 3)}, - {"yzwx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 2, 3, 0)}, - {"yzwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 3, 1)}, - {"yzwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 3, 2)}, - {"yzww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 2, 3, 3)}, - {"yw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(1, 3)}, - {"ywx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 3, 0)}, - {"ywxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 0, 0)}, - {"ywxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 0, 1)}, - {"ywxz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 3, 0, 2)}, - {"ywxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 0, 3)}, - {"ywy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 3, 1)}, - {"ywyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 1, 0)}, - {"ywyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 1, 1)}, - {"ywyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 1, 2)}, - {"ywyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 1, 3)}, - {"ywz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(1, 3, 2)}, - {"ywzx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(1, 3, 2, 0)}, - {"ywzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 2, 1)}, - {"ywzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 2, 2)}, - {"ywzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 2, 3)}, - {"yww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(1, 3, 3)}, - {"ywwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 3, 0)}, - {"ywwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 3, 1)}, - {"ywwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 3, 2)}, - {"ywww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(1, 3, 3, 3)}, - {"zx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(2, 0)}, - {"zxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 0, 0)}, - {"zxxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 0, 0)}, - {"zxxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 0, 1)}, - {"zxxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 0, 2)}, - {"zxxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 0, 3)}, - {"zxy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 0, 1)}, - {"zxyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 1, 0)}, - {"zxyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 1, 1)}, - {"zxyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 1, 2)}, - {"zxyw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 0, 1, 3)}, - {"zxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 0, 2)}, - {"zxzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 2, 0)}, - {"zxzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 2, 1)}, - {"zxzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 2, 2)}, - {"zxzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 2, 3)}, - {"zxw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 0, 3)}, - {"zxwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 3, 0)}, - {"zxwy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 0, 3, 1)}, - {"zxwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 3, 2)}, - {"zxww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 0, 3, 3)}, - {"zy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(2, 1)}, - {"zyx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 1, 0)}, - {"zyxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 0, 0)}, - {"zyxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 0, 1)}, - {"zyxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 0, 2)}, - {"zyxw", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 1, 0, 3)}, - {"zyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 1, 1)}, - {"zyyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 1, 0)}, - {"zyyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 1, 1)}, - {"zyyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 1, 2)}, - {"zyyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 1, 3)}, - {"zyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 1, 2)}, - {"zyzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 2, 0)}, - {"zyzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 2, 1)}, - {"zyzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 2, 2)}, - {"zyzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 2, 3)}, - {"zyw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 1, 3)}, - {"zywx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 1, 3, 0)}, - {"zywy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 3, 1)}, - {"zywz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 3, 2)}, - {"zyww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 1, 3, 3)}, - {"zz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE2(2, 2)}, - {"zzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 2, 0)}, - {"zzxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 0, 0)}, - {"zzxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 0, 1)}, - {"zzxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 0, 2)}, - {"zzxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 0, 3)}, - {"zzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 2, 1)}, - {"zzyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 1, 0)}, - {"zzyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 1, 1)}, - {"zzyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 1, 2)}, - {"zzyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 1, 3)}, - {"zzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 2, 2)}, - {"zzzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 2, 0)}, - {"zzzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 2, 1)}, - {"zzzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 2, 2)}, - {"zzzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 2, 3)}, - {"zzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 2, 3)}, - {"zzwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 3, 0)}, - {"zzwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 3, 1)}, - {"zzwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 3, 2)}, - {"zzww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 2, 3, 3)}, - {"zw", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(2, 3)}, - {"zwx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 3, 0)}, - {"zwxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 0, 0)}, - {"zwxy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 3, 0, 1)}, - {"zwxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 0, 2)}, - {"zwxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 0, 3)}, - {"zwy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(2, 3, 1)}, - {"zwyx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(2, 3, 1, 0)}, - {"zwyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 1, 1)}, - {"zwyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 1, 2)}, - {"zwyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 1, 3)}, - {"zwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 3, 2)}, - {"zwzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 2, 0)}, - {"zwzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 2, 1)}, - {"zwzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 2, 2)}, - {"zwzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 2, 3)}, - {"zww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(2, 3, 3)}, - {"zwwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 3, 0)}, - {"zwwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 3, 1)}, - {"zwwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 3, 2)}, - {"zwww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(2, 3, 3, 3)}, - {"wx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(3, 0)}, - {"wxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 0, 0)}, - {"wxxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 0, 0)}, - {"wxxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 0, 1)}, - {"wxxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 0, 2)}, - {"wxxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 0, 3)}, - {"wxy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 0, 1)}, - {"wxyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 1, 0)}, - {"wxyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 1, 1)}, - {"wxyz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 0, 1, 2)}, - {"wxyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 1, 3)}, - {"wxz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 0, 2)}, - {"wxzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 2, 0)}, - {"wxzy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 0, 2, 1)}, - {"wxzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 2, 2)}, - {"wxzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 2, 3)}, - {"wxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 0, 3)}, - {"wxwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 3, 0)}, - {"wxwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 3, 1)}, - {"wxwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 3, 2)}, - {"wxww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 0, 3, 3)}, - {"wy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(3, 1)}, - {"wyx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 1, 0)}, - {"wyxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 0, 0)}, - {"wyxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 0, 1)}, - {"wyxz", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 1, 0, 2)}, - {"wyxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 0, 3)}, - {"wyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 1, 1)}, - {"wyyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 1, 0)}, - {"wyyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 1, 1)}, - {"wyyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 1, 2)}, - {"wyyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 1, 3)}, - {"wyz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 1, 2)}, - {"wyzx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 1, 2, 0)}, - {"wyzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 2, 1)}, - {"wyzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 2, 2)}, - {"wyzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 2, 3)}, - {"wyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 1, 3)}, - {"wywx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 3, 0)}, - {"wywy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 3, 1)}, - {"wywz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 3, 2)}, - {"wyww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 1, 3, 3)}, - {"wz", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE2(3, 2)}, - {"wzx", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 2, 0)}, - {"wzxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 0, 0)}, - {"wzxy", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 2, 0, 1)}, - {"wzxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 0, 2)}, - {"wzxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 0, 3)}, - {"wzy", (getter)Vector_swizzle_get, (setter)Vector_swizzle_set, nullptr, SWIZZLE3(3, 2, 1)}, - {"wzyx", - (getter)Vector_swizzle_get, - (setter)Vector_swizzle_set, - nullptr, - SWIZZLE4(3, 2, 1, 0)}, - {"wzyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 1, 1)}, - {"wzyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 1, 2)}, - {"wzyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 1, 3)}, - {"wzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 2, 2)}, - {"wzzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 2, 0)}, - {"wzzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 2, 1)}, - {"wzzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 2, 2)}, - {"wzzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 2, 3)}, - {"wzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 2, 3)}, - {"wzwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 3, 0)}, - {"wzwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 3, 1)}, - {"wzwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 3, 2)}, - {"wzww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 2, 3, 3)}, - {"ww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE2(3, 3)}, - {"wwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 3, 0)}, - {"wwxx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 0, 0)}, - {"wwxy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 0, 1)}, - {"wwxz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 0, 2)}, - {"wwxw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 0, 3)}, - {"wwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 3, 1)}, - {"wwyx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 1, 0)}, - {"wwyy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 1, 1)}, - {"wwyz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 1, 2)}, - {"wwyw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 1, 3)}, - {"wwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 3, 2)}, - {"wwzx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 2, 0)}, - {"wwzy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 2, 1)}, - {"wwzz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 2, 2)}, - {"wwzw", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 2, 3)}, - {"www", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE3(3, 3, 3)}, - {"wwwx", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 3, 0)}, - {"wwwy", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 3, 1)}, - {"wwwz", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 3, 2)}, - {"wwww", (getter)Vector_swizzle_get, (setter) nullptr, nullptr, SWIZZLE4(3, 3, 3, 3)}, + VECTOR_SWIZZLE2_RO_DEF("xx", 0, 0), + VECTOR_SWIZZLE3_RO_DEF("xxx", 0, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("xxxx", 0, 0, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("xxxy", 0, 0, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("xxxz", 0, 0, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("xxxw", 0, 0, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("xxy", 0, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("xxyx", 0, 0, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("xxyy", 0, 0, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("xxyz", 0, 0, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("xxyw", 0, 0, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("xxz", 0, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("xxzx", 0, 0, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("xxzy", 0, 0, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("xxzz", 0, 0, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("xxzw", 0, 0, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("xxw", 0, 0, 3), + VECTOR_SWIZZLE4_RO_DEF("xxwx", 0, 0, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("xxwy", 0, 0, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("xxwz", 0, 0, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("xxww", 0, 0, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("xy", 0, 1), + VECTOR_SWIZZLE3_RO_DEF("xyx", 0, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("xyxx", 0, 1, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("xyxy", 0, 1, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("xyxz", 0, 1, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("xyxw", 0, 1, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("xyy", 0, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("xyyx", 0, 1, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("xyyy", 0, 1, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("xyyz", 0, 1, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("xyyw", 0, 1, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("xyz", 0, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("xyzx", 0, 1, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("xyzy", 0, 1, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("xyzz", 0, 1, 2, 2), + VECTOR_SWIZZLE4_RW_DEF("xyzw", 0, 1, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("xyw", 0, 1, 3), + VECTOR_SWIZZLE4_RO_DEF("xywx", 0, 1, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("xywy", 0, 1, 3, 1), + VECTOR_SWIZZLE4_RW_DEF("xywz", 0, 1, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("xyww", 0, 1, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("xz", 0, 2), + VECTOR_SWIZZLE3_RO_DEF("xzx", 0, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("xzxx", 0, 2, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("xzxy", 0, 2, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("xzxz", 0, 2, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("xzxw", 0, 2, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("xzy", 0, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("xzyx", 0, 2, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("xzyy", 0, 2, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("xzyz", 0, 2, 1, 2), + VECTOR_SWIZZLE4_RW_DEF("xzyw", 0, 2, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("xzz", 0, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("xzzx", 0, 2, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("xzzy", 0, 2, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("xzzz", 0, 2, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("xzzw", 0, 2, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("xzw", 0, 2, 3), + VECTOR_SWIZZLE4_RO_DEF("xzwx", 0, 2, 3, 0), + VECTOR_SWIZZLE4_RW_DEF("xzwy", 0, 2, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("xzwz", 0, 2, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("xzww", 0, 2, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("xw", 0, 3), + VECTOR_SWIZZLE3_RO_DEF("xwx", 0, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("xwxx", 0, 3, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("xwxy", 0, 3, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("xwxz", 0, 3, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("xwxw", 0, 3, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("xwy", 0, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("xwyx", 0, 3, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("xwyy", 0, 3, 1, 1), + VECTOR_SWIZZLE4_RW_DEF("xwyz", 0, 3, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("xwyw", 0, 3, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("xwz", 0, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("xwzx", 0, 3, 2, 0), + VECTOR_SWIZZLE4_RW_DEF("xwzy", 0, 3, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("xwzz", 0, 3, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("xwzw", 0, 3, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("xww", 0, 3, 3), + VECTOR_SWIZZLE4_RO_DEF("xwwx", 0, 3, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("xwwy", 0, 3, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("xwwz", 0, 3, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("xwww", 0, 3, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("yx", 1, 0), + VECTOR_SWIZZLE3_RO_DEF("yxx", 1, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("yxxx", 1, 0, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("yxxy", 1, 0, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("yxxz", 1, 0, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("yxxw", 1, 0, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("yxy", 1, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("yxyx", 1, 0, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("yxyy", 1, 0, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("yxyz", 1, 0, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("yxyw", 1, 0, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("yxz", 1, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("yxzx", 1, 0, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("yxzy", 1, 0, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("yxzz", 1, 0, 2, 2), + VECTOR_SWIZZLE4_RW_DEF("yxzw", 1, 0, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("yxw", 1, 0, 3), + VECTOR_SWIZZLE4_RO_DEF("yxwx", 1, 0, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("yxwy", 1, 0, 3, 1), + VECTOR_SWIZZLE4_RW_DEF("yxwz", 1, 0, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("yxww", 1, 0, 3, 3), + VECTOR_SWIZZLE2_RO_DEF("yy", 1, 1), + VECTOR_SWIZZLE3_RO_DEF("yyx", 1, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("yyxx", 1, 1, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("yyxy", 1, 1, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("yyxz", 1, 1, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("yyxw", 1, 1, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("yyy", 1, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("yyyx", 1, 1, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("yyyy", 1, 1, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("yyyz", 1, 1, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("yyyw", 1, 1, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("yyz", 1, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("yyzx", 1, 1, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("yyzy", 1, 1, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("yyzz", 1, 1, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("yyzw", 1, 1, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("yyw", 1, 1, 3), + VECTOR_SWIZZLE4_RO_DEF("yywx", 1, 1, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("yywy", 1, 1, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("yywz", 1, 1, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("yyww", 1, 1, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("yz", 1, 2), + VECTOR_SWIZZLE3_RW_DEF("yzx", 1, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("yzxx", 1, 2, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("yzxy", 1, 2, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("yzxz", 1, 2, 0, 2), + VECTOR_SWIZZLE4_RW_DEF("yzxw", 1, 2, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("yzy", 1, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("yzyx", 1, 2, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("yzyy", 1, 2, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("yzyz", 1, 2, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("yzyw", 1, 2, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("yzz", 1, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("yzzx", 1, 2, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("yzzy", 1, 2, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("yzzz", 1, 2, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("yzzw", 1, 2, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("yzw", 1, 2, 3), + VECTOR_SWIZZLE4_RW_DEF("yzwx", 1, 2, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("yzwy", 1, 2, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("yzwz", 1, 2, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("yzww", 1, 2, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("yw", 1, 3), + VECTOR_SWIZZLE3_RW_DEF("ywx", 1, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("ywxx", 1, 3, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("ywxy", 1, 3, 0, 1), + VECTOR_SWIZZLE4_RW_DEF("ywxz", 1, 3, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("ywxw", 1, 3, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("ywy", 1, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("ywyx", 1, 3, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("ywyy", 1, 3, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("ywyz", 1, 3, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("ywyw", 1, 3, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("ywz", 1, 3, 2), + VECTOR_SWIZZLE4_RW_DEF("ywzx", 1, 3, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("ywzy", 1, 3, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("ywzz", 1, 3, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("ywzw", 1, 3, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("yww", 1, 3, 3), + VECTOR_SWIZZLE4_RO_DEF("ywwx", 1, 3, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("ywwy", 1, 3, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("ywwz", 1, 3, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("ywww", 1, 3, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("zx", 2, 0), + VECTOR_SWIZZLE3_RO_DEF("zxx", 2, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("zxxx", 2, 0, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("zxxy", 2, 0, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("zxxz", 2, 0, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("zxxw", 2, 0, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("zxy", 2, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("zxyx", 2, 0, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("zxyy", 2, 0, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("zxyz", 2, 0, 1, 2), + VECTOR_SWIZZLE4_RW_DEF("zxyw", 2, 0, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("zxz", 2, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("zxzx", 2, 0, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("zxzy", 2, 0, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("zxzz", 2, 0, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("zxzw", 2, 0, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("zxw", 2, 0, 3), + VECTOR_SWIZZLE4_RO_DEF("zxwx", 2, 0, 3, 0), + VECTOR_SWIZZLE4_RW_DEF("zxwy", 2, 0, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("zxwz", 2, 0, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("zxww", 2, 0, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("zy", 2, 1), + VECTOR_SWIZZLE3_RW_DEF("zyx", 2, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("zyxx", 2, 1, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("zyxy", 2, 1, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("zyxz", 2, 1, 0, 2), + VECTOR_SWIZZLE4_RW_DEF("zyxw", 2, 1, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("zyy", 2, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("zyyx", 2, 1, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("zyyy", 2, 1, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("zyyz", 2, 1, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("zyyw", 2, 1, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("zyz", 2, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("zyzx", 2, 1, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("zyzy", 2, 1, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("zyzz", 2, 1, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("zyzw", 2, 1, 2, 3), + VECTOR_SWIZZLE3_RW_DEF("zyw", 2, 1, 3), + VECTOR_SWIZZLE4_RW_DEF("zywx", 2, 1, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("zywy", 2, 1, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("zywz", 2, 1, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("zyww", 2, 1, 3, 3), + VECTOR_SWIZZLE2_RO_DEF("zz", 2, 2), + VECTOR_SWIZZLE3_RO_DEF("zzx", 2, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("zzxx", 2, 2, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("zzxy", 2, 2, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("zzxz", 2, 2, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("zzxw", 2, 2, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("zzy", 2, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("zzyx", 2, 2, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("zzyy", 2, 2, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("zzyz", 2, 2, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("zzyw", 2, 2, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("zzz", 2, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("zzzx", 2, 2, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("zzzy", 2, 2, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("zzzz", 2, 2, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("zzzw", 2, 2, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("zzw", 2, 2, 3), + VECTOR_SWIZZLE4_RO_DEF("zzwx", 2, 2, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("zzwy", 2, 2, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("zzwz", 2, 2, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("zzww", 2, 2, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("zw", 2, 3), + VECTOR_SWIZZLE3_RW_DEF("zwx", 2, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("zwxx", 2, 3, 0, 0), + VECTOR_SWIZZLE4_RW_DEF("zwxy", 2, 3, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("zwxz", 2, 3, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("zwxw", 2, 3, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("zwy", 2, 3, 1), + VECTOR_SWIZZLE4_RW_DEF("zwyx", 2, 3, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("zwyy", 2, 3, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("zwyz", 2, 3, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("zwyw", 2, 3, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("zwz", 2, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("zwzx", 2, 3, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("zwzy", 2, 3, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("zwzz", 2, 3, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("zwzw", 2, 3, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("zww", 2, 3, 3), + VECTOR_SWIZZLE4_RO_DEF("zwwx", 2, 3, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("zwwy", 2, 3, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("zwwz", 2, 3, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("zwww", 2, 3, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("wx", 3, 0), + VECTOR_SWIZZLE3_RO_DEF("wxx", 3, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("wxxx", 3, 0, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("wxxy", 3, 0, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("wxxz", 3, 0, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("wxxw", 3, 0, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("wxy", 3, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("wxyx", 3, 0, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("wxyy", 3, 0, 1, 1), + VECTOR_SWIZZLE4_RW_DEF("wxyz", 3, 0, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("wxyw", 3, 0, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("wxz", 3, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("wxzx", 3, 0, 2, 0), + VECTOR_SWIZZLE4_RW_DEF("wxzy", 3, 0, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("wxzz", 3, 0, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("wxzw", 3, 0, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("wxw", 3, 0, 3), + VECTOR_SWIZZLE4_RO_DEF("wxwx", 3, 0, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("wxwy", 3, 0, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("wxwz", 3, 0, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("wxww", 3, 0, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("wy", 3, 1), + VECTOR_SWIZZLE3_RW_DEF("wyx", 3, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("wyxx", 3, 1, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("wyxy", 3, 1, 0, 1), + VECTOR_SWIZZLE4_RW_DEF("wyxz", 3, 1, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("wyxw", 3, 1, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("wyy", 3, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("wyyx", 3, 1, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("wyyy", 3, 1, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("wyyz", 3, 1, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("wyyw", 3, 1, 1, 3), + VECTOR_SWIZZLE3_RW_DEF("wyz", 3, 1, 2), + VECTOR_SWIZZLE4_RW_DEF("wyzx", 3, 1, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("wyzy", 3, 1, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("wyzz", 3, 1, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("wyzw", 3, 1, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("wyw", 3, 1, 3), + VECTOR_SWIZZLE4_RO_DEF("wywx", 3, 1, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("wywy", 3, 1, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("wywz", 3, 1, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("wyww", 3, 1, 3, 3), + VECTOR_SWIZZLE2_RW_DEF("wz", 3, 2), + VECTOR_SWIZZLE3_RW_DEF("wzx", 3, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("wzxx", 3, 2, 0, 0), + VECTOR_SWIZZLE4_RW_DEF("wzxy", 3, 2, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("wzxz", 3, 2, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("wzxw", 3, 2, 0, 3), + VECTOR_SWIZZLE3_RW_DEF("wzy", 3, 2, 1), + VECTOR_SWIZZLE4_RW_DEF("wzyx", 3, 2, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("wzyy", 3, 2, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("wzyz", 3, 2, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("wzyw", 3, 2, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("wzz", 3, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("wzzx", 3, 2, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("wzzy", 3, 2, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("wzzz", 3, 2, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("wzzw", 3, 2, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("wzw", 3, 2, 3), + VECTOR_SWIZZLE4_RO_DEF("wzwx", 3, 2, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("wzwy", 3, 2, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("wzwz", 3, 2, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("wzww", 3, 2, 3, 3), + VECTOR_SWIZZLE2_RO_DEF("ww", 3, 3), + VECTOR_SWIZZLE3_RO_DEF("wwx", 3, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("wwxx", 3, 3, 0, 0), + VECTOR_SWIZZLE4_RO_DEF("wwxy", 3, 3, 0, 1), + VECTOR_SWIZZLE4_RO_DEF("wwxz", 3, 3, 0, 2), + VECTOR_SWIZZLE4_RO_DEF("wwxw", 3, 3, 0, 3), + VECTOR_SWIZZLE3_RO_DEF("wwy", 3, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("wwyx", 3, 3, 1, 0), + VECTOR_SWIZZLE4_RO_DEF("wwyy", 3, 3, 1, 1), + VECTOR_SWIZZLE4_RO_DEF("wwyz", 3, 3, 1, 2), + VECTOR_SWIZZLE4_RO_DEF("wwyw", 3, 3, 1, 3), + VECTOR_SWIZZLE3_RO_DEF("wwz", 3, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("wwzx", 3, 3, 2, 0), + VECTOR_SWIZZLE4_RO_DEF("wwzy", 3, 3, 2, 1), + VECTOR_SWIZZLE4_RO_DEF("wwzz", 3, 3, 2, 2), + VECTOR_SWIZZLE4_RO_DEF("wwzw", 3, 3, 2, 3), + VECTOR_SWIZZLE3_RO_DEF("www", 3, 3, 3), + VECTOR_SWIZZLE4_RO_DEF("wwwx", 3, 3, 3, 0), + VECTOR_SWIZZLE4_RO_DEF("wwwy", 3, 3, 3, 1), + VECTOR_SWIZZLE4_RO_DEF("wwwz", 3, 3, 3, 2), + VECTOR_SWIZZLE4_RO_DEF("wwww", 3, 3, 3, 3), #undef AXIS_FROM_CHAR #undef SWIZZLE1 @@ -3341,6 +3304,13 @@ static PyGetSetDef Vector_getseters[] = { #undef _SWIZZLE3 #undef _SWIZZLE4 +#undef VECTOR_SWIZZLE2_RW_DEF +#undef VECTOR_SWIZZLE2_RO_DEF +#undef VECTOR_SWIZZLE3_RW_DEF +#undef VECTOR_SWIZZLE3_RO_DEF +#undef VECTOR_SWIZZLE4_RW_DEF +#undef VECTOR_SWIZZLE4_RO_DEF + {nullptr, nullptr, nullptr, nullptr, nullptr} /* Sentinel */ };