Changeset 1143


Ignore:
Timestamp:
Feb 16, 2012, 2:36:08 AM (8 years ago)
Author:
sam
Message:

math: disallow using vector swizzling components as lvalues until we
switch to C++11.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lol/math/vector.h

    r1142 r1143  
    138138
    139139        XVec2<T,0x00> const xx, rr, ss;
    140         XVec2<T,0x01>       xy, rg, st;
    141         XVec2<T,0x10>       yx, gr, ts;
     140        XVec2<T,0x01> const xy, rg, st; /* lvalue */
     141        XVec2<T,0x10> const yx, gr, ts; /* lvalue */
    142142        XVec2<T,0x11> const yy, gg, tt;
    143143
     
    280280
    281281        XVec2<T,0x00> const xx, rr, ss;
    282         XVec2<T,0x01>       xy, rg, st;
    283         XVec2<T,0x02>       xz, rb, sp;
    284         XVec2<T,0x10>       yx, gr, ts;
     282        XVec2<T,0x01> const xy, rg, st; /* lvalue */
     283        XVec2<T,0x02> const xz, rb, sp; /* lvalue */
     284        XVec2<T,0x10> const yx, gr, ts; /* lvalue */
    285285        XVec2<T,0x11> const yy, gg, tt;
    286         XVec2<T,0x12>       yz, gb, tp;
    287         XVec2<T,0x20>       zx, br, ps;
    288         XVec2<T,0x21>       zy, bg, pt;
     286        XVec2<T,0x12> const yz, gb, tp; /* lvalue */
     287        XVec2<T,0x20> const zx, br, ps; /* lvalue */
     288        XVec2<T,0x21> const zy, bg, pt; /* lvalue */
    289289        XVec2<T,0x22> const zz, bb, pp;
    290290
     
    294294        XVec3<T,0x010> const xyx, rgr, sts;
    295295        XVec3<T,0x011> const xyy, rgg, stt;
    296         XVec3<T,0x012>       xyz, rgb, stp;
     296        XVec3<T,0x012> const xyz, rgb, stp; /* lvalue */
    297297        XVec3<T,0x020> const xzx, rbr, sps;
    298         XVec3<T,0x021>       xzy, rbg, spt;
     298        XVec3<T,0x021> const xzy, rbg, spt; /* lvalue */
    299299        XVec3<T,0x022> const xzz, rbb, spp;
    300300        XVec3<T,0x100> const yxx, grr, tss;
    301301        XVec3<T,0x101> const yxy, grg, tst;
    302         XVec3<T,0x102>       yxz, grb, tsp;
     302        XVec3<T,0x102> const yxz, grb, tsp; /* lvalue */
    303303        XVec3<T,0x110> const yyx, ggr, tts;
    304304        XVec3<T,0x111> const yyy, ggg, ttt;
    305305        XVec3<T,0x112> const yyz, ggb, ttp;
    306         XVec3<T,0x120>       yzx, gbr, tps;
     306        XVec3<T,0x120> const yzx, gbr, tps; /* lvalue */
    307307        XVec3<T,0x121> const yzy, gbg, tpt;
    308308        XVec3<T,0x122> const yzz, gbb, tpp;
    309309        XVec3<T,0x200> const zxx, brr, pss;
    310         XVec3<T,0x201>       zxy, brg, pst;
     310        XVec3<T,0x201> const zxy, brg, pst; /* lvalue */
    311311        XVec3<T,0x202> const zxz, brb, psp;
    312         XVec3<T,0x210>       zyx, bgr, pts;
     312        XVec3<T,0x210> const zyx, bgr, pts; /* lvalue */
    313313        XVec3<T,0x211> const zyy, bgg, ptt;
    314314        XVec3<T,0x212> const zyz, bgb, ptp;
     
    440440
    441441        XVec2<T,0x00> const xx, rr, ss;
    442         XVec2<T,0x01>       xy, rg, st;
    443         XVec2<T,0x02>       xz, rb, sp;
    444         XVec2<T,0x03>       xw, ra, sq;
    445         XVec2<T,0x10>       yx, gr, ts;
     442        XVec2<T,0x01> const xy, rg, st; /* lvalue */
     443        XVec2<T,0x02> const xz, rb, sp; /* lvalue */
     444        XVec2<T,0x03> const xw, ra, sq; /* lvalue */
     445        XVec2<T,0x10> const yx, gr, ts; /* lvalue */
    446446        XVec2<T,0x11> const yy, gg, tt;
    447         XVec2<T,0x12>       yz, gb, tp;
    448         XVec2<T,0x13>       yw, ga, tq;
    449         XVec2<T,0x20>       zx, br, ps;
    450         XVec2<T,0x21>       zy, bg, pt;
     447        XVec2<T,0x12> const yz, gb, tp; /* lvalue */
     448        XVec2<T,0x13> const yw, ga, tq; /* lvalue */
     449        XVec2<T,0x20> const zx, br, ps; /* lvalue */
     450        XVec2<T,0x21> const zy, bg, pt; /* lvalue */
    451451        XVec2<T,0x22> const zz, bb, pp;
    452         XVec2<T,0x23>       zw, ba, pq;
    453         XVec2<T,0x30>       wx, ar, qs;
    454         XVec2<T,0x31>       wy, ag, qt;
    455         XVec2<T,0x32>       wz, ab, qp;
     452        XVec2<T,0x23> const zw, ba, pq; /* lvalue */
     453        XVec2<T,0x30> const wx, ar, qs; /* lvalue */
     454        XVec2<T,0x31> const wy, ag, qt; /* lvalue */
     455        XVec2<T,0x32> const wz, ab, qp; /* lvalue */
    456456        XVec2<T,0x33> const ww, aa, qq;
    457457
     
    462462        XVec3<T,0x010> const xyx, rgr, sts;
    463463        XVec3<T,0x011> const xyy, rgg, stt;
    464         XVec3<T,0x012>       xyz, rgb, stp;
    465         XVec3<T,0x013>       xyw, rga, stq;
     464        XVec3<T,0x012> const xyz, rgb, stp; /* lvalue */
     465        XVec3<T,0x013> const xyw, rga, stq; /* lvalue */
    466466        XVec3<T,0x020> const xzx, rbr, sps;
    467         XVec3<T,0x021>       xzy, rbg, spt;
     467        XVec3<T,0x021> const xzy, rbg, spt; /* lvalue */
    468468        XVec3<T,0x022> const xzz, rbb, spp;
    469         XVec3<T,0x023>       xzw, rba, spq;
     469        XVec3<T,0x023> const xzw, rba, spq; /* lvalue */
    470470        XVec3<T,0x030> const xwx, rar, sqs;
    471         XVec3<T,0x031>       xwy, rag, sqt;
    472         XVec3<T,0x032>       xwz, rab, sqp;
     471        XVec3<T,0x031> const xwy, rag, sqt; /* lvalue */
     472        XVec3<T,0x032> const xwz, rab, sqp; /* lvalue */
    473473        XVec3<T,0x033> const xww, raa, sqq;
    474474        XVec3<T,0x100> const yxx, grr, tss;
    475475        XVec3<T,0x101> const yxy, grg, tst;
    476         XVec3<T,0x102>       yxz, grb, tsp;
    477         XVec3<T,0x103>       yxw, gra, tsq;
     476        XVec3<T,0x102> const yxz, grb, tsp; /* lvalue */
     477        XVec3<T,0x103> const yxw, gra, tsq; /* lvalue */
    478478        XVec3<T,0x110> const yyx, ggr, tts;
    479479        XVec3<T,0x111> const yyy, ggg, ttt;
    480480        XVec3<T,0x112> const yyz, ggb, ttp;
    481481        XVec3<T,0x113> const yyw, gga, ttq;
    482         XVec3<T,0x120>       yzx, gbr, tps;
     482        XVec3<T,0x120> const yzx, gbr, tps; /* lvalue */
    483483        XVec3<T,0x121> const yzy, gbg, tpt;
    484484        XVec3<T,0x122> const yzz, gbb, tpp;
    485         XVec3<T,0x123>       yzw, gba, tpq;
    486         XVec3<T,0x130>       ywx, gar, tqs;
     485        XVec3<T,0x123> const yzw, gba, tpq; /* lvalue */
     486        XVec3<T,0x130> const ywx, gar, tqs; /* lvalue */
    487487        XVec3<T,0x131> const ywy, gag, tqt;
    488         XVec3<T,0x132>       ywz, gab, tqp;
     488        XVec3<T,0x132> const ywz, gab, tqp; /* lvalue */
    489489        XVec3<T,0x133> const yww, gaa, tqq;
    490490        XVec3<T,0x200> const zxx, brr, pss;
    491         XVec3<T,0x201>       zxy, brg, pst;
     491        XVec3<T,0x201> const zxy, brg, pst; /* lvalue */
    492492        XVec3<T,0x202> const zxz, brb, psp;
    493         XVec3<T,0x203>       zxw, bra, psq;
    494         XVec3<T,0x210>       zyx, bgr, pts;
     493        XVec3<T,0x203> const zxw, bra, psq; /* lvalue */
     494        XVec3<T,0x210> const zyx, bgr, pts; /* lvalue */
    495495        XVec3<T,0x211> const zyy, bgg, ptt;
    496496        XVec3<T,0x212> const zyz, bgb, ptp;
    497         XVec3<T,0x213>       zyw, bga, ptq;
     497        XVec3<T,0x213> const zyw, bga, ptq; /* lvalue */
    498498        XVec3<T,0x220> const zzx, bbr, pps;
    499499        XVec3<T,0x221> const zzy, bbg, ppt;
    500500        XVec3<T,0x222> const zzz, bbb, ppp;
    501501        XVec3<T,0x223> const zzw, bba, ppq;
    502         XVec3<T,0x230>       zwx, bar, pqs;
    503         XVec3<T,0x231>       zwy, bag, pqt;
     502        XVec3<T,0x230> const zwx, bar, pqs; /* lvalue */
     503        XVec3<T,0x231> const zwy, bag, pqt; /* lvalue */
    504504        XVec3<T,0x232> const zwz, bab, pqp;
    505505        XVec3<T,0x233> const zww, baa, pqq;
    506506        XVec3<T,0x300> const wxx, arr, qss;
    507         XVec3<T,0x301>       wxy, arg, qst;
    508         XVec3<T,0x302>       wxz, arb, qsp;
     507        XVec3<T,0x301> const wxy, arg, qst; /* lvalue */
     508        XVec3<T,0x302> const wxz, arb, qsp; /* lvalue */
    509509        XVec3<T,0x303> const wxw, ara, qsq;
    510         XVec3<T,0x310>       wyx, agr, qts;
     510        XVec3<T,0x310> const wyx, agr, qts; /* lvalue */
    511511        XVec3<T,0x311> const wyy, agg, qtt;
    512         XVec3<T,0x312>       wyz, agb, qtp;
     512        XVec3<T,0x312> const wyz, agb, qtp; /* lvalue */
    513513        XVec3<T,0x313> const wyw, aga, qtq;
    514         XVec3<T,0x320>       wzx, abr, qps;
    515         XVec3<T,0x321>       wzy, abg, qpt;
     514        XVec3<T,0x320> const wzx, abr, qps; /* lvalue */
     515        XVec3<T,0x321> const wzy, abg, qpt; /* lvalue */
    516516        XVec3<T,0x322> const wzz, abb, qpp;
    517517        XVec3<T,0x323> const wzw, aba, qpq;
     
    548548        XVec4<T,0x0121> const xyzy, rgbg, stpt;
    549549        XVec4<T,0x0122> const xyzz, rgbb, stpp;
    550         XVec4<T,0x0123>       xyzw, rgba, stpq;
     550        XVec4<T,0x0123> const xyzw, rgba, stpq; /* lvalue */
    551551        XVec4<T,0x0130> const xywx, rgar, stqs;
    552552        XVec4<T,0x0131> const xywy, rgag, stqt;
    553         XVec4<T,0x0132>       xywz, rgab, stqp;
     553        XVec4<T,0x0132> const xywz, rgab, stqp; /* lvalue */
    554554        XVec4<T,0x0133> const xyww, rgaa, stqq;
    555555        XVec4<T,0x0200> const xzxx, rbrr, spss;
     
    560560        XVec4<T,0x0211> const xzyy, rbgg, sptt;
    561561        XVec4<T,0x0212> const xzyz, rbgb, sptp;
    562         XVec4<T,0x0213>       xzyw, rbga, sptq;
     562        XVec4<T,0x0213> const xzyw, rbga, sptq; /* lvalue */
    563563        XVec4<T,0x0220> const xzzx, rbbr, spps;
    564564        XVec4<T,0x0221> const xzzy, rbbg, sppt;
     
    566566        XVec4<T,0x0223> const xzzw, rbba, sppq;
    567567        XVec4<T,0x0230> const xzwx, rbar, spqs;
    568         XVec4<T,0x0231>       xzwy, rbag, spqt;
     568        XVec4<T,0x0231> const xzwy, rbag, spqt; /* lvalue */
    569569        XVec4<T,0x0232> const xzwz, rbab, spqp;
    570570        XVec4<T,0x0233> const xzww, rbaa, spqq;
     
    575575        XVec4<T,0x0310> const xwyx, ragr, sqts;
    576576        XVec4<T,0x0311> const xwyy, ragg, sqtt;
    577         XVec4<T,0x0312>       xwyz, ragb, sqtp;
     577        XVec4<T,0x0312> const xwyz, ragb, sqtp; /* lvalue */
    578578        XVec4<T,0x0313> const xwyw, raga, sqtq;
    579579        XVec4<T,0x0320> const xwzx, rabr, sqps;
    580         XVec4<T,0x0321>       xwzy, rabg, sqpt;
     580        XVec4<T,0x0321> const xwzy, rabg, sqpt; /* lvalue */
    581581        XVec4<T,0x0322> const xwzz, rabb, sqpp;
    582582        XVec4<T,0x0323> const xwzw, raba, sqpq;
     
    596596        XVec4<T,0x1021> const yxzy, grbg, tspt;
    597597        XVec4<T,0x1022> const yxzz, grbb, tspp;
    598         XVec4<T,0x1023>       yxzw, grba, tspq;
     598        XVec4<T,0x1023> const yxzw, grba, tspq; /* lvalue */
    599599        XVec4<T,0x1030> const yxwx, grar, tsqs;
    600600        XVec4<T,0x1031> const yxwy, grag, tsqt;
    601         XVec4<T,0x1032>       yxwz, grab, tsqp;
     601        XVec4<T,0x1032> const yxwz, grab, tsqp; /* lvalue */
    602602        XVec4<T,0x1033> const yxww, graa, tsqq;
    603603        XVec4<T,0x1100> const yyxx, ggrr, ttss;
     
    620620        XVec4<T,0x1201> const yzxy, gbrg, tpst;
    621621        XVec4<T,0x1202> const yzxz, gbrb, tpsp;
    622         XVec4<T,0x1203>       yzxw, gbra, tpsq;
     622        XVec4<T,0x1203> const yzxw, gbra, tpsq; /* lvalue */
    623623        XVec4<T,0x1210> const yzyx, gbgr, tpts;
    624624        XVec4<T,0x1211> const yzyy, gbgg, tptt;
     
    629629        XVec4<T,0x1222> const yzzz, gbbb, tppp;
    630630        XVec4<T,0x1223> const yzzw, gbba, tppq;
    631         XVec4<T,0x1230>       yzwx, gbar, tpqs;
     631        XVec4<T,0x1230> const yzwx, gbar, tpqs; /* lvalue */
    632632        XVec4<T,0x1231> const yzwy, gbag, tpqt;
    633633        XVec4<T,0x1232> const yzwz, gbab, tpqp;
     
    635635        XVec4<T,0x1300> const ywxx, garr, tqss;
    636636        XVec4<T,0x1301> const ywxy, garg, tqst;
    637         XVec4<T,0x1302>       ywxz, garb, tqsp;
     637        XVec4<T,0x1302> const ywxz, garb, tqsp; /* lvalue */
    638638        XVec4<T,0x1303> const ywxw, gara, tqsq;
    639639        XVec4<T,0x1310> const ywyx, gagr, tqts;
     
    641641        XVec4<T,0x1312> const ywyz, gagb, tqtp;
    642642        XVec4<T,0x1313> const ywyw, gaga, tqtq;
    643         XVec4<T,0x1320>       ywzx, gabr, tqps;
     643        XVec4<T,0x1320> const ywzx, gabr, tqps; /* lvalue */
    644644        XVec4<T,0x1321> const ywzy, gabg, tqpt;
    645645        XVec4<T,0x1322> const ywzz, gabb, tqpp;
     
    656656        XVec4<T,0x2011> const zxyy, brgg, pstt;
    657657        XVec4<T,0x2012> const zxyz, brgb, pstp;
    658         XVec4<T,0x2013>       zxyw, brga, pstq;
     658        XVec4<T,0x2013> const zxyw, brga, pstq; /* lvalue */
    659659        XVec4<T,0x2020> const zxzx, brbr, psps;
    660660        XVec4<T,0x2021> const zxzy, brbg, pspt;
     
    662662        XVec4<T,0x2023> const zxzw, brba, pspq;
    663663        XVec4<T,0x2030> const zxwx, brar, psqs;
    664         XVec4<T,0x2031>       zxwy, brag, psqt;
     664        XVec4<T,0x2031> const zxwy, brag, psqt; /* lvalue */
    665665        XVec4<T,0x2032> const zxwz, brab, psqp;
    666666        XVec4<T,0x2033> const zxww, braa, psqq;
     
    668668        XVec4<T,0x2101> const zyxy, bgrg, ptst;
    669669        XVec4<T,0x2102> const zyxz, bgrb, ptsp;
    670         XVec4<T,0x2103>       zyxw, bgra, ptsq;
     670        XVec4<T,0x2103> const zyxw, bgra, ptsq; /* lvalue */
    671671        XVec4<T,0x2110> const zyyx, bggr, ptts;
    672672        XVec4<T,0x2111> const zyyy, bggg, pttt;
     
    677677        XVec4<T,0x2122> const zyzz, bgbb, ptpp;
    678678        XVec4<T,0x2123> const zyzw, bgba, ptpq;
    679         XVec4<T,0x2130>       zywx, bgar, ptqs;
     679        XVec4<T,0x2130> const zywx, bgar, ptqs; /* lvalue */
    680680        XVec4<T,0x2131> const zywy, bgag, ptqt;
    681681        XVec4<T,0x2132> const zywz, bgab, ptqp;
     
    698698        XVec4<T,0x2233> const zzww, bbaa, ppqq;
    699699        XVec4<T,0x2300> const zwxx, barr, pqss;
    700         XVec4<T,0x2301>       zwxy, barg, pqst;
     700        XVec4<T,0x2301> const zwxy, barg, pqst; /* lvalue */
    701701        XVec4<T,0x2302> const zwxz, barb, pqsp;
    702702        XVec4<T,0x2303> const zwxw, bara, pqsq;
    703         XVec4<T,0x2310>       zwyx, bagr, pqts;
     703        XVec4<T,0x2310> const zwyx, bagr, pqts; /* lvalue */
    704704        XVec4<T,0x2311> const zwyy, bagg, pqtt;
    705705        XVec4<T,0x2312> const zwyz, bagb, pqtp;
     
    719719        XVec4<T,0x3010> const wxyx, argr, qsts;
    720720        XVec4<T,0x3011> const wxyy, argg, qstt;
    721         XVec4<T,0x3012>       wxyz, argb, qstp;
     721        XVec4<T,0x3012> const wxyz, argb, qstp; /* lvalue */
    722722        XVec4<T,0x3013> const wxyw, arga, qstq;
    723723        XVec4<T,0x3020> const wxzx, arbr, qsps;
    724         XVec4<T,0x3021>       wxzy, arbg, qspt;
     724        XVec4<T,0x3021> const wxzy, arbg, qspt; /* lvalue */
    725725        XVec4<T,0x3022> const wxzz, arbb, qspp;
    726726        XVec4<T,0x3023> const wxzw, arba, qspq;
     
    731731        XVec4<T,0x3100> const wyxx, agrr, qtss;
    732732        XVec4<T,0x3101> const wyxy, agrg, qtst;
    733         XVec4<T,0x3102>       wyxz, agrb, qtsp;
     733        XVec4<T,0x3102> const wyxz, agrb, qtsp; /* lvalue */
    734734        XVec4<T,0x3103> const wyxw, agra, qtsq;
    735735        XVec4<T,0x3110> const wyyx, aggr, qtts;
     
    737737        XVec4<T,0x3112> const wyyz, aggb, qttp;
    738738        XVec4<T,0x3113> const wyyw, agga, qttq;
    739         XVec4<T,0x3120>       wyzx, agbr, qtps;
     739        XVec4<T,0x3120> const wyzx, agbr, qtps; /* lvalue */
    740740        XVec4<T,0x3121> const wyzy, agbg, qtpt;
    741741        XVec4<T,0x3122> const wyzz, agbb, qtpp;
     
    746746        XVec4<T,0x3133> const wyww, agaa, qtqq;
    747747        XVec4<T,0x3200> const wzxx, abrr, qpss;
    748         XVec4<T,0x3201>       wzxy, abrg, qpst;
     748        XVec4<T,0x3201> const wzxy, abrg, qpst; /* lvalue */
    749749        XVec4<T,0x3202> const wzxz, abrb, qpsp;
    750750        XVec4<T,0x3203> const wzxw, abra, qpsq;
    751         XVec4<T,0x3210>       wzyx, abgr, qpts;
     751        XVec4<T,0x3210> const wzyx, abgr, qpts; /* lvalue */
    752752        XVec4<T,0x3211> const wzyy, abgg, qptt;
    753753        XVec4<T,0x3212> const wzyz, abgb, qptp;
     
    10101010/*
    10111011 * Magic vector swizzling (part 2/2)
     1012 * Unfortunately these assignment operators cannot be used for now, because
     1013 * we would also need to override the default copy assignment operator, and
     1014 * in C++98 unions cannot contain such objects. This is why all the swizzling
     1015 * magic objects are marked 'const' even those that could be lvalues.
    10121016 */
    10131017
Note: See TracChangeset for help on using the changeset viewer.