glm/wip/sse/glm/core/_swizzle.h
2010-04-14 13:27:44 +01:00

1743 lines
35 KiB
C++

///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2008 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2006-04-20
// Updated : 2006-12-03
// Licence : This source is under GNU LGPL licence
// File : _swizzle.h
///////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef __swizzle_h__
#define __swizzle_h__
namespace glm
{
}
#if defined(GLM_SWIZZLE) && (GLM_SWIZZLE & GLM_SWIZZLE_XYZW)
// 2 components common swizzle operators
#define xx _xx()
#define yx _yx()
#define zx _zx()
#define wx _wx()
#define xy _xy()
#define yy _yy()
#define zy _zy()
#define wy _wy()
#define xz _xz()
#define yz _yz()
#define zz _zz()
#define wz _wz()
#define xw _xw()
#define yw _yw()
#define zw _zw()
#define ww _ww()
// 3 components common swizzle operators
#define xxx _xxx()
#define yxx _yxx()
#define zxx _zxx()
#define wxx _wxx()
#define xyx _xyx()
#define yyx _yyx()
#define zyx _zyx()
#define wyx _wyx()
#define xzx _xzx()
#define yzx _yzx()
#define zzx _zzx()
#define wzx _wzx()
#define xwx _xwx()
#define ywx _ywx()
#define zwx _zwx()
#define wwx _wwx()
#define xxy _xxy()
#define yxy _yxy()
#define zxy _zxy()
#define wxy _wxy()
#define xyy _xyy()
#define yyy _yyy()
#define zyy _zyy()
#define wyy _wyy()
#define xzy _xzy()
#define yzy _yzy()
#define zzy _zzy()
#define wzy _wzy()
#define xwy _xwy()
#define ywy _ywy()
#define zwy _zwy()
#define wwy _wwy()
#define xxz _xxz()
#define yxz _yxz()
#define zxz _zxz()
#define wxz _wxz()
#define xyz _xyz()
#define yyz _yyz()
#define zyz _zyz()
#define wyz _wyz()
#define xzz _xzz()
#define yzz _yzz()
#define zzz _zzz()
#define wzz _wzz()
#define xwz _xwz()
#define ywz _ywz()
#define zwz _zwz()
#define wwz _wwz()
#define xxw _xxw()
#define yxw _yxw()
#define zxw _zxw()
#define wxw _wxw()
#define xyw _xyw()
#define yyw _yyw()
#define zyw _zyw()
#define wyw _wyw()
#define xzw _xzw()
#define yzw _yzw()
#define zzw _zzw()
#define wzw _wzw()
#define xww _xww()
#define yww _yww()
#define zww _zww()
#define www _www()
// 4 components common swizzle operators
#define xxxx _xxxx()
#define yxxx _yxxx()
#define zxxx _zxxx()
#define wxxx _wxxx()
#define xyxx _xyxx()
#define yyxx _yyxx()
#define zyxx _zyxx()
#define wyxx _wyxx()
#define xzxx _xzxx()
#define yzxx _yzxx()
#define zzxx _zzxx()
#define wzxx _wzxx()
#define xwxx _xwxx()
#define ywxx _ywxx()
#define zwxx _zwxx()
#define wwxx _wwxx()
#define xxyx _xxyx()
#define yxyx _yxyx()
#define zxyx _zxyx()
#define wxyx _wxyx()
#define xyyx _xyyx()
#define yyyx _yyyx()
#define zyyx _zyyx()
#define wyyx _wyyx()
#define xzyx _xzyx()
#define yzyx _yzyx()
#define zzyx _zzyx()
#define wzyx _wzyx()
#define xwyx _xwyx()
#define ywyx _ywyx()
#define zwyx _zwyx()
#define wwyx _wwyx()
#define xxzx _xxzx()
#define yxzx _yxzx()
#define zxzx _zxzx()
#define wxzx _wxzx()
#define xyzx _xyzx()
#define yyzx _yyzx()
#define zyzx _zyzx()
#define wyzx _wyzx()
#define xzzx _xzzx()
#define yzzx _yzzx()
#define zzzx _zzzx()
#define wzzx _wzzx()
#define xwzx _xwzx()
#define ywzx _ywzx()
#define zwzx _zwzx()
#define wwzx _wwzx()
#define xxwx _xxwx()
#define yxwx _yxwx()
#define zxwx _zxwx()
#define wxwx _wxwx()
#define xywx _xywx()
#define yywx _yywx()
#define zywx _zywx()
#define wywx _wywx()
#define xzwx _xzwx()
#define yzwx _yzwx()
#define zzwx _zzwx()
#define wzwx _wzwx()
#define xwwx _xwwx()
#define ywwx _ywwx()
#define zwwx _zwwx()
#define wwwx _wwwx()
#define xxxy _xxxy()
#define yxxy _yxxy()
#define zxxy _zxxy()
#define wxxy _wxxy()
#define xyxy _xyxy()
#define yyxy _yyxy()
#define zyxy _zyxy()
#define wyxy _wyxy()
#define xzxy _xzxy()
#define yzxy _yzxy()
#define zzxy _zzxy()
#define wzxy _wzxy()
#define xwxy _xwxy()
#define ywxy _ywxy()
#define zwxy _zwxy()
#define wwxy _wwxy()
#define xxyy _xxyy()
#define yxyy _yxyy()
#define zxyy _zxyy()
#define wxyy _wxyy()
#define xyyy _xyyy()
#define yyyy _yyyy()
#define zyyy _zyyy()
#define wyyy _wyyy()
#define xzyy _xzyy()
#define yzyy _yzyy()
#define zzyy _zzyy()
#define wzyy _wzyy()
#define xwyy _xwyy()
#define ywyy _ywyy()
#define zwyy _zwyy()
#define wwyy _wwyy()
#define xxzy _xxzy()
#define yxzy _yxzy()
#define zxzy _zxzy()
#define wxzy _wxzy()
#define xyzy _xyzy()
#define yyzy _yyzy()
#define zyzy _zyzy()
#define wyzy _wyzy()
#define xzzy _xzzy()
#define yzzy _yzzy()
#define zzzy _zzzy()
#define wzzy _wzzy()
#define xwzy _xwzy()
#define ywzy _ywzy()
#define zwzy _zwzy()
#define wwzy _wwzy()
#define xxwy _xxwy()
#define yxwy _yxwy()
#define zxwy _zxwy()
#define wxwy _wxwy()
#define xywy _xywy()
#define yywy _yywy()
#define zywy _zywy()
#define wywy _wywy()
#define xzwy _xzwy()
#define yzwy _yzwy()
#define zzwy _zzwy()
#define wzwy _wzwy()
#define xwwy _xwwy()
#define ywwy _ywwy()
#define zwwy _zwwy()
#define wwwy _wwwy()
#define xxxz _xxxz()
#define yxxz _yxxz()
#define zxxz _zxxz()
#define wxxz _wxxz()
#define xyxz _xyxz()
#define yyxz _yyxz()
#define zyxz _zyxz()
#define wyxz _wyxz()
#define xzxz _xzxz()
#define yzxz _yzxz()
#define zzxz _zzxz()
#define wzxz _wzxz()
#define xwxz _xwxz()
#define ywxz _ywxz()
#define zwxz _zwxz()
#define wwxz _wwxz()
#define xxyz _xxyz()
#define yxyz _yxyz()
#define zxyz _zxyz()
#define wxyz _wxyz()
#define xyyz _xyyz()
#define yyyz _yyyz()
#define zyyz _zyyz()
#define wyyz _wyyz()
#define xzyz _xzyz()
#define yzyz _yzyz()
#define zzyz _zzyz()
#define wzyz _wzyz()
#define xwyz _xwyz()
#define ywyz _ywyz()
#define zwyz _zwyz()
#define wwyz _wwyz()
#define xxzz _xxzz()
#define yxzz _yxzz()
#define zxzz _zxzz()
#define wxzz _wxzz()
#define xyzz _xyzz()
#define yyzz _yyzz()
#define zyzz _zyzz()
#define wyzz _wyzz()
#define xzzz _xzzz()
#define yzzz _yzzz()
#define zzzz _zzzz()
#define wzzz _wzzz()
#define xwzz _xwzz()
#define ywzz _ywzz()
#define zwzz _zwzz()
#define wwzz _wwzz()
#define xxwz _xxwz()
#define yxwz _yxwz()
#define zxwz _zxwz()
#define wxwz _wxwz()
#define xywz _xywz()
#define yywz _yywz()
#define zywz _zywz()
#define wywz _wywz()
#define xzwz _xzwz()
#define yzwz _yzwz()
#define zzwz _zzwz()
#define wzwz _wzwz()
#define xwwz _xwwz()
#define ywwz _ywwz()
#define zwwz _zwwz()
#define wwwz _wwwz()
#define xxxw _xxxw()
#define yxxw _yxxw()
#define zxxw _zxxw()
#define wxxw _wxxw()
#define xyxw _xyxw()
#define yyxw _yyxw()
#define zyxw _zyxw()
#define wyxw _wyxw()
#define xzxw _xzxw()
#define yzxw _yzxw()
#define zzxw _zzxw()
#define wzxw _wzxw()
#define xwxw _xwxw()
#define ywxw _ywxw()
#define zwxw _zwxw()
#define wwxw _wwxw()
#define xxyw _xxyw()
#define yxyw _yxyw()
#define zxyw _zxyw()
#define wxyw _wxyw()
#define xyyw _xyyw()
#define yyyw _yyyw()
#define zyyw _zyyw()
#define wyyw _wyyw()
#define xzyw _xzyw()
#define yzyw _yzyw()
#define zzyw _zzyw()
#define wzyw _wzyw()
#define xwyw _xwyw()
#define ywyw _ywyw()
#define zwyw _zwyw()
#define wwyw _wwyw()
#define xxzw _xxzw()
#define yxzw _yxzw()
#define zxzw _zxzw()
#define wxzw _wxzw()
#define xyzw _xyzw()
#define yyzw _yyzw()
#define zyzw _zyzw()
#define wyzw _wyzw()
#define xzzw _xzzw()
#define yzzw _yzzw()
#define zzzw _zzzw()
#define wzzw _wzzw()
#define xwzw _xwzw()
#define ywzw _ywzw()
#define zwzw _zwzw()
#define wwzw _wwzw()
#define xxww _xxww()
#define yxww _yxww()
#define zxww _zxww()
#define wxww _wxww()
#define xyww _xyww()
#define yyww _yyww()
#define zyww _zyww()
#define wyww _wyww()
#define xzww _xzww()
#define yzww _yzww()
#define zzww _zzww()
#define wzww _wzww()
#define xwww _xwww()
#define ywww _ywww()
#define zwww _zwww()
#define wwww _wwww()
#endif//defined(GLM_SWIZZLE) && (GLM_SWIZZLE & GLM_SWIZZLE_XYZW)
#if defined(GLM_SWIZZLE) && (GLM_SWIZZLE & GLM_SWIZZLE_RGBA)
// 2 components color swizzle operators
#define rr _xx()
#define gr _yx()
#define br _zx()
#define ar _wx()
#define rg _xy()
#define gg _yy()
#define bg _zy()
#define ag _wy()
#define rb _xz()
#define gb _yz()
#define bb _zz()
#define ab _wz()
#define ra _xw()
#define ga _yw()
#define ba _zw()
#define aa _ww()
// 3 components color swizzle operators
#define rrr _xxx()
#define grr _yxx()
#define brr _zxx()
#define arr _wxx()
#define rgr _xyx()
#define ggr _yyx()
#define bgr _zyx()
#define agr _wyx()
#define rbr _xzx()
#define gbr _yzx()
#define bbr _zzx()
#define abr _wzx()
#define rar _xwx()
#define gar _ywx()
#define bar _zwx()
#define aar _wwx()
#define rrg _xxy()
#define grg _yxy()
#define brg _zxy()
#define arg _wxy()
#define rgg _xyy()
#define ggg _yyy()
#define bgg _zyy()
#define agg _wyy()
#define rbg _xzy()
#define gbg _yzy()
#define bbg _zzy()
#define abg _wzy()
#define rag _xwy()
#define gag _ywy()
#define bag _zwy()
#define aag _wwy()
#define rrb _xxz()
#define grb _yxz()
#define brb _zxz()
#define arb _wxz()
#define rgb _xyz()
#define ggb _yyz()
#define bgb _zyz()
#define agb _wyz()
#define rbb _xzz()
#define gbb _yzz()
#define bbb _zzz()
#define abb _wzz()
#define rab _xwz()
#define gab _ywz()
#define bab _zwz()
#define aab _wwz()
#define rra _xxw()
#define gra _yxw()
#define bra _zxw()
#define ara _wxw()
#define rga _xyw()
#define gga _yyw()
#define bga _zyw()
#define aga _wyw()
#define rba _xzw()
#define gba _yzw()
#define bba _zzw()
#define aba _wzw()
#define raa _xww()
#define gaa _yww()
#define baa _zww()
#define aaa _www()
// 4 components color swizzle operators
#define rrrr _xxxx()
#define grrr _yxxx()
#define brrr _zxxx()
#define arrr _wxxx()
#define rgrr _xyxx()
#define ggrr _yyxx()
#define bgrr _zyxx()
#define agrr _wyxx()
#define rbrr _xzxx()
#define gbrr _yzxx()
#define bbrr _zzxx()
#define abrr _wzxx()
#define rarr _xwxx()
#define garr _ywxx()
#define barr _zwxx()
#define aarr _wwxx()
#define rrgr _xxyx()
#define grgr _yxyx()
#define brgr _zxyx()
#define argr _wxyx()
#define rggr _xyyx()
#define gggr _yyyx()
#define bggr _zyyx()
#define aggr _wyyx()
#define rbgr _xzyx()
#define gbgr _yzyx()
#define bbgr _zzyx()
#define abgr _wzyx()
#define ragr _xwyx()
#define gagr _ywyx()
#define bagr _zwyx()
#define aagr _wwyx()
#define rrbr _xxzx()
#define grbr _yxzx()
#define brbr _zxzx()
#define arbr _wxzx()
#define rgbr _xyzx()
#define ggbr _yyzx()
#define bgbr _zyzx()
#define agbr _wyzx()
#define rbbr _xzzx()
#define gbbr _yzzx()
#define bbbr _zzzx()
#define abbr _wzzx()
#define rabr _xwzx()
#define gabr _ywzx()
#define babr _zwzx()
#define aabr _wwzx()
#define rrar _xxwx()
#define grar _yxwx()
#define brar _zxwx()
#define arar _wxwx()
#define rgar _xywx()
#define ggar _yywx()
#define bgar _zywx()
#define agar _wywx()
#define rbar _xzwx()
#define gbar _yzwx()
#define bbar _zzwx()
#define abar _wzwx()
#define raar _xwwx()
#define gaar _ywwx()
#define baar _zwwx()
#define aaar _wwwx()
#define rrrg _xxxy()
#define grrg _yxxy()
#define brrg _zxxy()
#define arrg _wxxy()
#define rgrg _xyxy()
#define ggrg _yyxy()
#define bgrg _zyxy()
#define agrg _wyxy()
#define rbrg _xzxy()
#define gbrg _yzxy()
#define bbrg _zzxy()
#define abrg _wzxy()
#define rarg _xwxy()
#define garg _ywxy()
#define barg _zwxy()
#define aarg _wwxy()
#define rrgg _xxyy()
#define grgg _yxyy()
#define brgg _zxyy()
#define argg _wxyy()
#define rggg _xyyy()
#define gggg _yyyy()
#define bggg _zyyy()
#define aggg _wyyy()
#define rbgg _xzyy()
#define gbgg _yzyy()
#define bbgg _zzyy()
#define abgg _wzyy()
#define ragg _xwyy()
#define gagg _ywyy()
#define bagg _zwyy()
#define aagg _wwyy()
#define rrbg _xxzy()
#define grbg _yxzy()
#define brbg _zxzy()
#define arbg _wxzy()
#define rgbg _xyzy()
#define ggbg _yyzy()
#define bgbg _zyzy()
#define agbg _wyzy()
#define rbbg _xzzy()
#define gbbg _yzzy()
#define bbbg _zzzy()
#define abbg _wzzy()
#define rabg _xwzy()
#define gabg _ywzy()
#define babg _zwzy()
#define aabg _wwzy()
#define rrag _xxwy()
#define grag _yxwy()
#define brag _zxwy()
#define arag _wxwy()
#define rgag _xywy()
#define ggag _yywy()
#define bgag _zywy()
#define agag _wywy()
#define rbag _xzwy()
#define gbag _yzwy()
#define bbag _zzwy()
#define abag _wzwy()
#define raag _xwwy()
#define gaag _ywwy()
#define baag _zwwy()
#define aaag _wwwy()
#define rrrb _xxxz()
#define grrb _yxxz()
#define brrb _zxxz()
#define arrb _wxxz()
#define rgrb _xyxz()
#define ggrb _yyxz()
#define bgrb _zyxz()
#define agrb _wyxz()
#define rbrb _xzxz()
#define gbrb _yzxz()
#define bbrb _zzxz()
#define abrb _wzxz()
#define rarb _xwxz()
#define garb _ywxz()
#define barb _zwxz()
#define aarb _wwxz()
#define rrgb _xxyz()
#define grgb _yxyz()
#define brgb _zxyz()
#define argb _wxyz()
#define rggb _xyyz()
#define gggb _yyyz()
#define bggb _zyyz()
#define aggb _wyyz()
#define rbgb _xzyz()
#define gbgb _yzyz()
#define bbgb _zzyz()
#define abgb _wzyz()
#define ragb _xwyz()
#define gagb _ywyz()
#define bagb _zwyz()
#define aagb _wwyz()
#define rrbb _xxzz()
#define grbb _yxzz()
#define brbb _zxzz()
#define arbb _wxzz()
#define rgbb _xyzz()
#define ggbb _yyzz()
#define bgbb _zyzz()
#define agbb _wyzz()
#define rbbb _xzzz()
#define gbbb _yzzz()
#define bbbb _zzzz()
#define abbb _wzzz()
#define rabb _xwzz()
#define gabb _ywzz()
#define babb _zwzz()
#define aabb _wwzz()
#define rrab _xxwz()
#define grab _yxwz()
#define brab _zxwz()
#define arab _wxwz()
#define rgab _xywz()
#define ggab _yywz()
#define bgab _zywz()
#define agab _wywz()
#define rbab _xzwz()
#define gbab _yzwz()
#define bbab _zzwz()
#define abab _wzwz()
#define raab _xwwz()
#define gaab _ywwz()
#define baab _zwwz()
#define aaab _wwwz()
#define rrra _xxxw()
#define grra _yxxw()
#define brra _zxxw()
#define arra _wxxw()
#define rgra _xyxw()
#define ggra _yyxw()
#define bgra _zyxw()
#define agra _wyxw()
#define rbra _xzxw()
#define gbra _yzxw()
#define bbra _zzxw()
#define abra _wzxw()
#define rara _xwxw()
#define gara _ywxw()
#define bara _zwxw()
#define aara _wwxw()
#define rrga _xxyw()
#define grga _yxyw()
#define brga _zxyw()
#define arga _wxyw()
#define rgga _xyyw()
#define ggga _yyyw()
#define bgga _zyyw()
#define agga _wyyw()
#define rbga _xzyw()
#define gbga _yzyw()
#define bbga _zzyw()
#define abga _wzyw()
#define raga _xwyw()
#define gaga _ywyw()
#define baga _zwyw()
#define aaga _wwyw()
#define rrba _xxzw()
#define grba _yxzw()
#define brba _zxzw()
#define arba _wxzw()
#define rgba _xyzw()
#define ggba _yyzw()
#define bgba _zyzw()
#define agba _wyzw()
#define rbba _xzzw()
#define gbba _yzzw()
#define bbba _zzzw()
#define abba _wzzw()
#define raba _xwzw()
#define gaba _ywzw()
#define baba _zwzw()
#define aaba _wwzw()
#define rraa _xxww()
#define graa _yxww()
#define braa _zxww()
#define araa _wxww()
#define rgaa _xyww()
#define ggaa _yyww()
#define bgaa _zyww()
#define agaa _wyww()
#define rbaa _xzww()
#define gbaa _yzww()
#define bbaa _zzww()
#define abaa _wzww()
#define raaa _xwww()
#define gaaa _ywww()
#define baaa _zwww()
#define aaaa _wwww()
#endif//defined(GLM_SWIZZLE) && defined(GLM_SWIZZLE_RGBA)
#if defined(GLM_SWIZZLE) && (GLM_SWIZZLE & GLM_SWIZZLE_STQP)
// 2 components texcoord swizzle operators
#define ss _xx()
#define ts _yx()
#define ps _zx()
#define qs _wx()
#define st _xy()
#define tt _yy()
#define pt _zy()
#define qt _qy()
#define sp _xz()
#define tp _yz()
#define pp _zz()
#define qp _qz()
#define sq _xq()
#define tq _yq()
#define pq _zq()
#define qq _qq()
// 3 components tescoord swizzle operators
#define sss _xxx()
#define tss _yxx()
#define pss _zxx()
#define qss _qxx()
#define sts _xyx()
#define tts _yyx()
#define pts _zyx()
#define qts _qyx()
#define sps _xzx()
#define tps _yzx()
#define pps _zzx()
#define qps _qzx()
#define sqs _xqx()
#define tqs _yqx()
#define pqs _zqx()
#define qqs _qqx()
#define sst _xxy()
#define tst _yxy()
#define pst _zxy()
#define qst _qxy()
#define stt _xyy()
#define ttt _yyy()
#define ptt _zyy()
#define qtt _qyy()
#define spt _xzy()
#define tpt _yzy()
#define ppt _zzy()
#define qpt _qzy()
#define sqt _xqy()
#define tqt _yqy()
#define pqt _zqy()
#define qqt _qqy()
#define ssp _xxz()
#define tsp _yxz()
#define psp _zxz()
#define qsp _qxz()
#define stp _xyz()
#define ttp _yyz()
#define ptp _zyz()
#define qtp _qyz()
#define spp _xzz()
#define tpp _yzz()
#define ppp _zzz()
#define qpp _qzz()
#define sqp _xqz()
#define tqp _yqz()
#define pqp _zqz()
#define qqp _qqz()
#define ssq _xxq()
#define tsq _yxq()
#define psq _zxq()
#define qsq _qxq()
#define stq _xyq()
#define ttq _yyq()
#define ptq _zyq()
#define qtq _qyq()
#define spq _xzq()
#define tpq _yzq()
#define ppq _zzq()
#define qpq _qzq()
#define sqq _xqq()
#define tqq _yqq()
#define pqq _zqq()
#define qqq _qqq()
// 4 components tescoord swizzle operators
#define ssss _xxxx()
#define tsss _yxxx()
#define psss _zxxx()
#define qsss _qxxx()
#define stss _xyxx()
#define ttss _yyxx()
#define ptss _zyxx()
#define qtss _qyxx()
#define spss _xzxx()
#define tpss _yzxx()
#define ppss _zzxx()
#define qpss _qzxx()
#define sqss _xqxx()
#define tqss _yqxx()
#define pqss _zqxx()
#define qqss _qqxx()
#define ssts _xxyx()
#define tsts _yxyx()
#define psts _zxyx()
#define qsts _qxyx()
#define stts _xyyx()
#define ttts _yyyx()
#define ptts _zyyx()
#define qtts _qyyx()
#define spts _xzyx()
#define tpts _yzyx()
#define ppts _zzyx()
#define qpts _qzyx()
#define sqts _xqyx()
#define tqts _yqyx()
#define pqts _zqyx()
#define qqts _qqyx()
#define ssps _xxzx()
#define tsps _yxzx()
#define psps _zxzx()
#define qsps _qxzx()
#define stps _xyzx()
#define ttps _yyzx()
#define ptps _zyzx()
#define qtps _qyzx()
#define spps _xzzx()
#define tpps _yzzx()
#define ppps _zzzx()
#define qpps _qzzx()
#define sqps _xqzx()
#define tqps _yqzx()
#define pqps _zqzx()
#define qqps _qqzx()
#define ssqs _xxqx()
#define tsqs _yxqx()
#define psqs _zxqx()
#define qsqs _qxqx()
#define stqs _xyqx()
#define ttqs _yyqx()
#define ptqs _zyqx()
#define qtqs _qyqx()
#define spqs _xzqx()
#define tpqs _yzqx()
#define ppqs _zzqx()
#define qpqs _qzqx()
#define sqqs _xqqx()
#define tqqs _yqqx()
#define pqqs _zqqx()
#define qqqs _qqqx()
#define ssst _xxxy()
#define tsst _yxxy()
#define psst _zxxy()
#define qsst _qxxy()
#define stst _xyxy()
#define ttst _yyxy()
#define ptst _zyxy()
#define qtst _qyxy()
#define spst _xzxy()
#define tpst _yzxy()
#define ppst _zzxy()
#define qpst _qzxy()
#define sqst _xqxy()
#define tqst _yqxy()
#define pqst _zqxy()
#define qqst _qqxy()
#define sstt _xxyy()
#define tstt _yxyy()
#define pstt _zxyy()
#define qstt _qxyy()
#define sttt _xyyy()
#define tttt _yyyy()
#define pttt _zyyy()
#define qttt _qyyy()
#define sptt _xzyy()
#define tptt _yzyy()
#define pptt _zzyy()
#define qptt _qzyy()
#define sqtt _xqyy()
#define tqtt _yqyy()
#define pqtt _zqyy()
#define qqtt _qqyy()
#define sspt _xxzy()
#define tspt _yxzy()
#define pspt _zxzy()
#define qspt _qxzy()
#define stpt _xyzy()
#define ttpt _yyzy()
#define ptpt _zyzy()
#define qtpt _qyzy()
#define sppt _xzzy()
#define tppt _yzzy()
#define pppt _zzzy()
#define qppt _qzzy()
#define sqpt _xqzy()
#define tqpt _yqzy()
#define pqpt _zqzy()
#define qqpt _qqzy()
#define ssqt _xxqy()
#define tsqt _yxqy()
#define psqt _zxqy()
#define qsqt _qxqy()
#define stqt _xyqy()
#define ttqt _yyqy()
#define ptqt _zyqy()
#define qtqt _qyqy()
#define spqt _xzqy()
#define tpqt _yzqy()
#define ppqt _zzqy()
#define qpqt _qzqy()
#define sqqt _xqqy()
#define tqqt _yqqy()
#define pqqt _zqqy()
#define qqqt _qqqy()
#define sssp _xxxz()
#define tssp _yxxz()
#define pssp _zxxz()
#define qssp _qxxz()
#define stsp _xyxz()
#define ttsp _yyxz()
#define ptsp _zyxz()
#define qtsp _qyxz()
#define spsp _xzxz()
#define tpsp _yzxz()
#define ppsp _zzxz()
#define qpsp _qzxz()
#define sqsp _xqxz()
#define tqsp _yqxz()
#define pqsp _zqxz()
#define qqsp _qqxz()
#define sstp _xxyz()
#define tstp _yxyz()
#define pstp _zxyz()
#define qstp _qxyz()
#define sttp _xyyz()
#define tttp _yyyz()
#define pttp _zyyz()
#define qttp _qyyz()
#define sptp _xzyz()
#define tptp _yzyz()
#define pptp _zzyz()
#define qptp _qzyz()
#define sqtp _xqyz()
#define tqtp _yqyz()
#define pqtp _zqyz()
#define qqtp _qqyz()
#define sspp _xxzz()
#define tspp _yxzz()
#define pspp _zxzz()
#define qspp _qxzz()
#define stpp _xyzz()
#define ttpp _yyzz()
#define ptpp _zyzz()
#define qtpp _qyzz()
#define sppp _xzzz()
#define tppp _yzzz()
#define pppp _zzzz()
#define qppp _qzzz()
#define sqpp _xqzz()
#define tqpp _yqzz()
#define pqpp _zqzz()
#define qqpp _qqzz()
#define ssqp _xxqz()
#define tsqp _yxqz()
#define psqp _zxqz()
#define qsqp _qxqz()
#define stqp _xyqz()
#define ttqp _yyqz()
#define ptqp _zyqz()
#define qtqp _qyqz()
#define spqp _xzqz()
#define tpqp _yzqz()
#define ppqp _zzqz()
#define qpqp _qzqz()
#define sqqp _xqqz()
#define tqqp _yqqz()
#define pqqp _zqqz()
#define qqqp _qqqz()
#define sssq _xxxq()
#define tssq _yxxq()
#define pssq _zxxq()
#define qssq _qxxq()
#define stsq _xyxq()
#define ttsq _yyxq()
#define ptsq _zyxq()
#define qtsq _qyxq()
#define spsq _xzxq()
#define tpsq _yzxq()
#define ppsq _zzxq()
#define qpsq _qzxq()
#define sqsq _xqxq()
#define tqsq _yqxq()
#define pqsq _zqxq()
#define qqsq _qqxq()
#define sstq _xxyq()
#define tstq _yxyq()
#define pstq _zxyq()
#define qstq _qxyq()
#define sttq _xyyq()
#define tttq _yyyq()
#define pttq _zyyq()
#define qttq _qyyq()
#define sptq _xzyq()
#define tptq _yzyq()
#define pptq _zzyq()
#define qptq _qzyq()
#define sqtq _xqyq()
#define tqtq _yqyq()
#define pqtq _zqyq()
#define qqtq _qqyq()
#define sspq _xxzq()
#define tspq _yxzq()
#define pspq _zxzq()
#define qspq _qxzq()
#define stpq _xyzq()
#define ttpq _yyzq()
#define ptpq _zyzq()
#define qtpq _qyzq()
#define sppq _xzzq()
#define tppq _yzzq()
#define pppq _zzzq()
#define qppq _qzzq()
#define sqpq _xqzq()
#define tqpq _yqzq()
#define pqpq _zqzq()
#define qqpq _qqzq()
#define ssqq _xxqq()
#define tsqq _yxqq()
#define psqq _zxqq()
#define qsqq _qxqq()
#define stqq _xyqq()
#define ttqq _yyqq()
#define ptqq _zyqq()
#define qtqq _qyqq()
#define spqq _xzqq()
#define tpqq _yzqq()
#define ppqq _zzqq()
#define qpqq _qzqq()
#define sqqq _xqqq()
#define tqqq _yqqq()
#define pqqq _zqqq()
#define qqqq _qqqq()
#endif//defined(GLM_SWIZZLE) && (GLM_SWIZZLE & GLM_SWIZZLE_STQP)
/*
// 2 components color swizzle operators
#define rr _rr()
#define gr _gr()
#define br _br()
#define ar _ar()
#define rg _rg()
#define gg _gg()
#define bg _bg()
#define ag _ag()
#define rb _rb()
#define gb _gb()
#define bb _bb()
#define ab _ab()
#define ra _ra()
#define ga _ga()
#define ba _ba()
#define aa _aa()
// 3 components color swizzle operators
#define rrr _rrr()
#define grr _grr()
#define brr _brr()
#define arr _arr()
#define rgr _rgr()
#define ggr _ggr()
#define bgr _bgr()
#define agr _agr()
#define rbr _rbr()
#define gbr _gbr()
#define bbr _bbr()
#define abr _abr()
#define rar _rar()
#define gar _gar()
#define bar _bar()
#define aar _aar()
#define rrg _rrg()
#define grg _grg()
#define brg _brg()
#define arg _arg()
#define rgg _rgg()
#define ggg _ggg()
#define bgg _bgg()
#define agg _agg()
#define rbg _rbg()
#define gbg _gbg()
#define bbg _bbg()
#define abg _abg()
#define rag _rag()
#define gag _gag()
#define bag _bag()
#define aag _aag()
#define rrb _rrb()
#define grb _grb()
#define brb _brb()
#define arb _arb()
#define rgb _rgb()
#define ggb _ggb()
#define bgb _bgb()
#define agb _agb()
#define rbb _rbb()
#define gbb _gbb()
#define bbb _bbb()
#define abb _abb()
#define rab _rab()
#define gab _gab()
#define bab _bab()
#define aab _aab()
#define rra _rra()
#define gra _gra()
#define bra _bra()
#define ara _ara()
#define rga _rga()
#define gga _gga()
#define bga _bga()
#define aga _aga()
#define rba _rba()
#define gba _gba()
#define bba _bba()
#define aba _aba()
#define raa _raa()
#define gaa _gaa()
#define baa _baa()
#define aaa _aaa()
// 4 components color swizzle operators
#define rrrr _rrrr()
#define grrr _grrr()
#define brrr _brrr()
#define arrr _arrr()
#define rgrr _rgrr()
#define ggrr _ggrr()
#define bgrr _bgrr()
#define agrr _agrr()
#define rbrr _rbrr()
#define gbrr _gbrr()
#define bbrr _bbrr()
#define abrr _abrr()
#define rarr _rarr()
#define garr _garr()
#define barr _barr()
#define aarr _aarr()
#define rrgr _rrgr()
#define grgr _grgr()
#define brgr _brgr()
#define argr _argr()
#define rggr _rggr()
#define gggr _gggr()
#define bggr _bggr()
#define aggr _aggr()
#define rbgr _rbgr()
#define gbgr _gbgr()
#define bbgr _bbgr()
#define abgr _abgr()
#define ragr _ragr()
#define gagr _gagr()
#define bagr _bagr()
#define aagr _aagr()
#define rrbr _rrbr()
#define grbr _grbr()
#define brbr _brbr()
#define arbr _arbr()
#define rgbr _rgbr()
#define ggbr _ggbr()
#define bgbr _bgbr()
#define agbr _agbr()
#define rbbr _rbbr()
#define gbbr _gbbr()
#define bbbr _bbbr()
#define abbr _abbr()
#define rabr _rabr()
#define gabr _gabr()
#define babr _babr()
#define aabr _aabr()
#define rrar _rrar()
#define grar _grar()
#define brar _brar()
#define arar _arar()
#define rgar _rgar()
#define ggar _ggar()
#define bgar _bgar()
#define agar _agar()
#define rbar _rbar()
#define gbar _gbar()
#define bbar _bbar()
#define abar _abar()
#define raar _raar()
#define gaar _gaar()
#define baar _baar()
#define aaar _aaar()
#define rrrg _rrrg()
#define grrg _grrg()
#define brrg _brrg()
#define arrg _arrg()
#define rgrg _rgrg()
#define ggrg _ggrg()
#define bgrg _bgrg()
#define agrg _agrg()
#define rbrg _rbrg()
#define gbrg _gbrg()
#define bbrg _bbrg()
#define abrg _abrg()
#define rarg _rarg()
#define garg _garg()
#define barg _barg()
#define aarg _aarg()
#define rrgg _rrgg()
#define grgg _grgg()
#define brgg _brgg()
#define argg _argg()
#define rggg _rggg()
#define gggg _gggg()
#define bggg _bggg()
#define aggg _aggg()
#define rbgg _rbgg()
#define gbgg _gbgg()
#define bbgg _bbgg()
#define abgg _abgg()
#define ragg _ragg()
#define gagg _gagg()
#define bagg _bagg()
#define aagg _aagg()
#define rrbg _rrbg()
#define grbg _grbg()
#define brbg _brbg()
#define arbg _arbg()
#define rgbg _rgbg()
#define ggbg _ggbg()
#define bgbg _bgbg()
#define agbg _agbg()
#define rbbg _rbbg()
#define gbbg _gbbg()
#define bbbg _bbbg()
#define abbg _abbg()
#define rabg _rabg()
#define gabg _gabg()
#define babg _babg()
#define aabg _aabg()
#define rrag _rrag()
#define grag _grag()
#define brag _brag()
#define arag _arag()
#define rgag _rgag()
#define ggag _ggag()
#define bgag _bgag()
#define agag _agag()
#define rbag _rbag()
#define gbag _gbag()
#define bbag _bbag()
#define abag _abag()
#define raag _raag()
#define gaag _gaag()
#define baag _baag()
#define aaag _aaag()
#define rrrb _rrrb()
#define grrb _grrb()
#define brrb _brrb()
#define arrb _arrb()
#define rgrb _rgrb()
#define ggrb _ggrb()
#define bgrb _bgrb()
#define agrb _agrb()
#define rbrb _rbrb()
#define gbrb _gbrb()
#define bbrb _bbrb()
#define abrb _abrb()
#define rarb _rarb()
#define garb _garb()
#define barb _barb()
#define aarb _aarb()
#define rrgb _rrgb()
#define grgb _grgb()
#define brgb _brgb()
#define argb _argb()
#define rggb _rggb()
#define gggb _gggb()
#define bggb _bggb()
#define aggb _aggb()
#define rbgb _rbgb()
#define gbgb _gbgb()
#define bbgb _bbgb()
#define abgb _abgb()
#define ragb _ragb()
#define gagb _gagb()
#define bagb _bagb()
#define aagb _aagb()
#define rrbb _rrbb()
#define grbb _grbb()
#define brbb _brbb()
#define arbb _arbb()
#define rgbb _rgbb()
#define ggbb _ggbb()
#define bgbb _bgbb()
#define agbb _agbb()
#define rbbb _rbbb()
#define gbbb _gbbb()
#define bbbb _bbbb()
#define abbb _abbb()
#define rabb _rabb()
#define gabb _gabb()
#define babb _babb()
#define aabb _aabb()
#define rrab _rrab()
#define grab _grab()
#define brab _brab()
#define arab _arab()
#define rgab _rgab()
#define ggab _ggab()
#define bgab _bgab()
#define agab _agab()
#define rbab _rbab()
#define gbab _gbab()
#define bbab _bbab()
#define abab _abab()
#define raab _raab()
#define gaab _gaab()
#define baab _baab()
#define aaab _aaab()
#define rrra _rrra()
#define grra _grra()
#define brra _brra()
#define arra _arra()
#define rgra _rgra()
#define ggra _ggra()
#define bgra _bgra()
#define agra _agra()
#define rbra _rbra()
#define gbra _gbra()
#define bbra _bbra()
#define abra _abra()
#define rara _rara()
#define gara _gara()
#define bara _bara()
#define aara _aara()
#define rrga _rrga()
#define grga _grga()
#define brga _brga()
#define arga _arga()
#define rgga _rgga()
#define ggga _ggga()
#define bgga _bgga()
#define agga _agga()
#define rbga _rbga()
#define gbga _gbga()
#define bbga _bbga()
#define abga _abga()
#define raga _raga()
#define gaga _gaga()
#define baga _baga()
#define aaga _aaga()
#define rrba _rrba()
#define grba _grba()
#define brba _brba()
#define arba _arba()
#define rgba _rgba()
#define ggba _ggba()
#define bgba _bgba()
#define agba _agba()
#define rbba _rbba()
#define gbba _gbba()
#define bbba _bbba()
#define abba _abba()
#define raba _raba()
#define gaba _gaba()
#define baba _baba()
#define aaba _aaba()
#define rraa _rraa()
#define graa _graa()
#define braa _braa()
#define araa _araa()
#define rgaa _rgaa()
#define ggaa _ggaa()
#define bgaa _bgaa()
#define agaa _agaa()
#define rbaa _rbaa()
#define gbaa _gbaa()
#define bbaa _bbaa()
#define abaa _abaa()
#define raaa _raaa()
#define gaaa _gaaa()
#define baaa _baaa()
#define aaaa _aaaa()
// 2 components texcoord swizzle operators
#define ss _ss()
#define ts _ts()
#define ps _ps()
#define qs _qs()
#define st _st()
#define tt _tt()
#define pt _pt()
#define qt _qt()
#define sp _sp()
#define tp _tp()
#define pp _pp()
#define qp _qp()
#define sq _sq()
#define tq _tq()
#define pq _pq()
#define qq _qq()
// 3 components tescoord swizzle operators
#define sss _sss()
#define tss _tss()
#define pss _pss()
#define qss _qss()
#define sts _sts()
#define tts _tts()
#define pts _pts()
#define qts _qts()
#define sps _sps()
#define tps _tps()
#define pps _pps()
#define qps _qps()
#define sqs _sqs()
#define tqs _tqs()
#define pqs _pqs()
#define qqs _qqs()
#define sst _sst()
#define tst _tst()
#define pst _pst()
#define qst _qst()
#define stt _stt()
#define ttt _ttt()
#define ptt _ptt()
#define qtt _qtt()
#define spt _spt()
#define tpt _tpt()
#define ppt _ppt()
#define qpt _qpt()
#define sqt _sqt()
#define tqt _tqt()
#define pqt _pqt()
#define qqt _qqt()
#define ssp _ssp()
#define tsp _tsp()
#define psp _psp()
#define qsp _qsp()
#define stp _stp()
#define ttp _ttp()
#define ptp _ptp()
#define qtp _qtp()
#define spp _spp()
#define tpp _tpp()
#define ppp _ppp()
#define qpp _qpp()
#define sqp _sqp()
#define tqp _tqp()
#define pqp _pqp()
#define qqp _qqp()
#define ssq _ssq()
#define tsq _tsq()
#define psq _psq()
#define qsq _qsq()
#define stq _stq()
#define ttq _ttq()
#define ptq _ptq()
#define qtq _qtq()
#define spq _spq()
#define tpq _tpq()
#define ppq _ppq()
#define qpq _qpq()
#define sqq _sqq()
#define tqq _tqq()
#define pqq _pqq()
#define qqq _qqq()
// 4 components tescoord swizzle operators
#define ssss _ssss()
#define tsss _tsss()
#define psss _psss()
#define qsss _qsss()
#define stss _stss()
#define ttss _ttss()
#define ptss _ptss()
#define qtss _qtss()
#define spss _spss()
#define tpss _tpss()
#define ppss _ppss()
#define qpss _qpss()
#define sqss _sqss()
#define tqss _tqss()
#define pqss _pqss()
#define qqss _qqss()
#define ssts _ssts()
#define tsts _tsts()
#define psts _psts()
#define qsts _qsts()
#define stts _stts()
#define ttts _ttts()
#define ptts _ptts()
#define qtts _qtts()
#define spts _spts()
#define tpts _tpts()
#define ppts _ppts()
#define qpts _qpts()
#define sqts _sqts()
#define tqts _tqts()
#define pqts _pqts()
#define qqts _qqts()
#define ssps _ssps()
#define tsps _tsps()
#define psps _psps()
#define qsps _qsps()
#define stps _stps()
#define ttps _ttps()
#define ptps _ptps()
#define qtps _qtps()
#define spps _spps()
#define tpps _tpps()
#define ppps _ppps()
#define qpps _qpps()
#define sqps _sqps()
#define tqps _tqps()
#define pqps _pqps()
#define qqps _qqps()
#define ssqs _ssqs()
#define tsqs _tsqs()
#define psqs _psqs()
#define qsqs _qsqs()
#define stqs _stqs()
#define ttqs _ttqs()
#define ptqs _ptqs()
#define qtqs _qtqs()
#define spqs _spqs()
#define tpqs _tpqs()
#define ppqs _ppqs()
#define qpqs _qpqs()
#define sqqs _sqqs()
#define tqqs _tqqs()
#define pqqs _pqqs()
#define qqqs _qqqs()
#define ssst _ssst()
#define tsst _tsst()
#define psst _psst()
#define qsst _qsst()
#define stst _stst()
#define ttst _ttst()
#define ptst _ptst()
#define qtst _qtst()
#define spst _spst()
#define tpst _tpst()
#define ppst _ppst()
#define qpst _qpst()
#define sqst _sqst()
#define tqst _tqst()
#define pqst _pqst()
#define qqst _qqst()
#define sstt _sstt()
#define tstt _tstt()
#define pstt _pstt()
#define qstt _qstt()
#define sttt _sttt()
#define tttt _tttt()
#define pttt _pttt()
#define qttt _qttt()
#define sptt _sptt()
#define tptt _tptt()
#define pptt _pptt()
#define qptt _qptt()
#define sqtt _sqtt()
#define tqtt _tqtt()
#define pqtt _pqtt()
#define qqtt _qqtt()
#define sspt _sspt()
#define tspt _tspt()
#define pspt _pspt()
#define qspt _qspt()
#define stpt _stpt()
#define ttpt _ttpt()
#define ptpt _ptpt()
#define qtpt _qtpt()
#define sppt _sppt()
#define tppt _tppt()
#define pppt _pppt()
#define qppt _qppt()
#define sqpt _sqpt()
#define tqpt _tqpt()
#define pqpt _pqpt()
#define qqpt _qqpt()
#define ssqt _ssqt()
#define tsqt _tsqt()
#define psqt _psqt()
#define qsqt _qsqt()
#define stqt _stqt()
#define ttqt _ttqt()
#define ptqt _ptqt()
#define qtqt _qtqt()
#define spqt _spqt()
#define tpqt _tpqt()
#define ppqt _ppqt()
#define qpqt _qpqt()
#define sqqt _sqqt()
#define tqqt _tqqt()
#define pqqt _pqqt()
#define qqqt _qqqt()
#define sssp _sssp()
#define tssp _tssp()
#define pssp _pssp()
#define qssp _qssp()
#define stsp _stsp()
#define ttsp _ttsp()
#define ptsp _ptsp()
#define qtsp _qtsp()
#define spsp _spsp()
#define tpsp _tpsp()
#define ppsp _ppsp()
#define qpsp _qpsp()
#define sqsp _sqsp()
#define tqsp _tqsp()
#define pqsp _pqsp()
#define qqsp _qqsp()
#define sstp _sstp()
#define tstp _tstp()
#define pstp _pstp()
#define qstp _qstp()
#define sttp _sttp()
#define tttp _tttp()
#define pttp _pttp()
#define qttp _qttp()
#define sptp _sptp()
#define tptp _tptp()
#define pptp _pptp()
#define qptp _qptp()
#define sqtp _sqtp()
#define tqtp _tqtp()
#define pqtp _pqtp()
#define qqtp _qqtp()
#define sspp _sspp()
#define tspp _tspp()
#define pspp _pspp()
#define qspp _qspp()
#define stpp _stpp()
#define ttpp _ttpp()
#define ptpp _ptpp()
#define qtpp _qtpp()
#define sppp _sppp()
#define tppp _tppp()
#define pppp _pppp()
#define qppp _qppp()
#define sqpp _sqpp()
#define tqpp _tqpp()
#define pqpp _pqpp()
#define qqpp _qqpp()
#define ssqp _ssqp()
#define tsqp _tsqp()
#define psqp _psqp()
#define qsqp _qsqp()
#define stqp _stqp()
#define ttqp _ttqp()
#define ptqp _ptqp()
#define qtqp _qtqp()
#define spqp _spqp()
#define tpqp _tpqp()
#define ppqp _ppqp()
#define qpqp _qpqp()
#define sqqp _sqqp()
#define tqqp _tqqp()
#define pqqp _pqqp()
#define qqqp _qqqp()
#define sssq _sssq()
#define tssq _tssq()
#define pssq _pssq()
#define qssq _qssq()
#define stsq _stsq()
#define ttsq _ttsq()
#define ptsq _ptsq()
#define qtsq _qtsq()
#define spsq _spsq()
#define tpsq _tpsq()
#define ppsq _ppsq()
#define qpsq _qpsq()
#define sqsq _sqsq()
#define tqsq _tqsq()
#define pqsq _pqsq()
#define qqsq _qqsq()
#define sstq _sstq()
#define tstq _tstq()
#define pstq _pstq()
#define qstq _qstq()
#define sttq _sttq()
#define tttq _tttq()
#define pttq _pttq()
#define qttq _qttq()
#define sptq _sptq()
#define tptq _tptq()
#define pptq _pptq()
#define qptq _qptq()
#define sqtq _sqtq()
#define tqtq _tqtq()
#define pqtq _pqtq()
#define qqtq _qqtq()
#define sspq _sspq()
#define tspq _tspq()
#define pspq _pspq()
#define qspq _qspq()
#define stpq _stpq()
#define ttpq _ttpq()
#define ptpq _ptpq()
#define qtpq _qtpq()
#define sppq _sppq()
#define tppq _tppq()
#define pppq _pppq()
#define qppq _qppq()
#define sqpq _sqpq()
#define tqpq _tqpq()
#define pqpq _pqpq()
#define qqpq _qqpq()
#define ssqq _ssqq()
#define tsqq _tsqq()
#define psqq _psqq()
#define qsqq _qsqq()
#define stqq _stqq()
#define ttqq _ttqq()
#define ptqq _ptqq()
#define qtqq _qtqq()
#define spqq _spqq()
#define tpqq _tpqq()
#define ppqq _ppqq()
#define qpqq _qpqq()
#define sqqq _sqqq()
#define tqqq _tqqq()
#define pqqq _pqqq()
#define qqqq _qqqq()
*/
#endif//__swizzle_h__