115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot/* ----------------------------------------------------------------------------- 215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot * doperators.swg 315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot * 415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot * Mapping of C++ operator overloading methods to D. 515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot * ----------------------------------------------------------------------------- */ 615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#if (SWIG_D_VERSION == 1) 815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 1015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robottemplate SwigOperatorDefinitions() { 1115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public override int opEquals(Object o) { 1215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (auto rhs = cast(typeof(this))o) { 1315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (swigCPtr == rhs.swigCPtr) return 1; 1415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static if (is(typeof(swigOpEquals(rhs)))) { 1515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return swigOpEquals(rhs) ? 1 : 0; 1615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else { 1715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 0; 1815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 1915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 2015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return super.opEquals(o); 2115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 2215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 2315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// opEquals is emitted in pure C mode as well to define two proxy classes 2415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// pointing to the same struct as equal. 2515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 2615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#ifdef __cplusplus 2715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opPos) *::operator+(); 2815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opPos) *::operator+() const; 2915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opNeg) *::operator-(); 3015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opNeg) *::operator-() const; 3115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opCom) *::operator~(); 3215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opCom) *::operator~() const; 3315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 3415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opAdd) *::operator+; 3515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opAddAssign) *::operator+=; 3615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opSub) *::operator-; 3715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opSubAssign) *::operator-=; 3815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opMul) *::operator*; 3915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opMulAssign) *::operator*=; 4015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opDiv) *::operator/; 4115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opDivAssign) *::operator/=; 4215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opMod) *::operator%; 4315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opModAssign) *::operator%=; 4415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opAnd) *::operator&; 4515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opAndAssign) *::operator&=; 4615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opOr) *::operator|; 4715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opOrAssign) *::operator|=; 4815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opXor) *::operator^; 4915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opXorAssign) *::operator^=; 5015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opShl) *::operator<<; 5115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opShlAssign) *::operator<<=; 5215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opShr) *::operator>>; 5315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opShrAssign) *::operator>>=; 5415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 5515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opIndex) *::operator[](unsigned) const; 5615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// opIndexAssign is not currently generated, it needs more extensive support 5715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// mechanisms. 5815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 5915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opCall) *::operator(); 6015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 6115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// !a is not overrideable in D1. 6215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(LNOT) operator!; 6315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 6415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// opCmp is used in D. 6515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpEquals) *::operator==; 6615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpLt) *::operator<; 6715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpLtEquals) *::operator<=; 6815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpGt) *::operator>; 6915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpGtEquals) *::operator>=; 7015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 7115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// a != b is rewritten as !a.opEquals(b) in D. 7215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(NOTEQUAL) operator!=; 7315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 7415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// The logic operators are not overrideable in D. 7515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(LAND) operator&&; 7615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(LOR) operator||; 7715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 7815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// ++/--a is rewritten as a +/-= 1 in D1,so ignore the prefix operators. 7915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(PLUSPLUS) *::operator++(); 8015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(MINUSMINUS) *::operator--(); 8115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpInc) *::operator++(int); 8215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpDec) *::operator--(int); 8315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 8415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// The C++ assignment operator does not translate well to D where the proxy 8515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// classes have reference semantics. 8615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(EQ) operator=; 8715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 8815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 8915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public override int opCmp(Object o) { 9015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static if (is(typeof(swigOpLt(typeof(this).init) && 9115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot swigOpEquals(typeof(this).init)))) { 9215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (auto rhs = cast(typeof(this))o) { 9315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (swigOpLt(rhs)) { 9415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return -1; 9515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else if (swigOpEquals(rhs)) { 9615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 0; 9715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else { 9815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 1; 9915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return super.opCmp(o); 10315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 10515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public typeof(this) opPostInc(T = int)(T unused = 0) { 10615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static assert( 10715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot is(typeof(swigOpInc(int.init))), 10815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "opPostInc called on " ~ typeof(this).stringof ~ ", but no postfix " ~ 10915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "increment operator exists in the corresponding C++ class." 11015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot ); 11115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return swigOpInc(int.init); 11215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 11315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 11415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public typeof(this) opPostDec(T = int)(T unused = 0) { 11515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static assert( 11615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot is(typeof(swigOpDec(int.init))), 11715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "opPostInc called on " ~ typeof(this).stringof ~ ", but no postfix " ~ 11815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "decrement operator exists in the corresponding C++ class." 11915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot ); 12015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return swigOpDec(int.init); 12115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 12215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 12315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#endif 12415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 12515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 12615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot} 12715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 12815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 12915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#else 13015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 13115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotmixin template SwigOperatorDefinitions() { 13215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public override bool opEquals(Object o) { 13315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (auto rhs = cast(typeof(this))o) { 13415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (swigCPtr == rhs.swigCPtr) return true; 13515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static if (is(typeof(swigOpEquals(rhs)))) { 13615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return swigOpEquals(rhs); 13715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else { 13815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return false; 13915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 14015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 14115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return super.opEquals(o); 14215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 14315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 14415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// opEquals is emitted in pure C mode as well to define two proxy classes 14515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// pointing to the same struct as equal. 14615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 14715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#ifdef __cplusplus 14815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpPos) *::operator+(); 14915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpPos) *::operator+() const; 15015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpNeg) *::operator-(); 15115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpNeg) *::operator-() const; 15215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpCom) *::operator~(); 15315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpCom) *::operator~() const; 15415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpInc) *::operator++(); 15515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpDec) *::operator--(); 15615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(PLUSPLUS) *::operator++(int); 15715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(MINUSMINUS) *::operator--(int); 15815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// The postfix increment/decrement operators are ignored because they are 15915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// rewritten to (auto t = e, ++e, t) in D2. The unary * operator (used for 16015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// pointer dereferencing in C/C++) isn't mapped to opUnary("*") by default, 16115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// despite this would be possible in D2 – the difference in member access 16215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// semantics would only lead to confusion in most cases. 16315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 16415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpAdd) *::operator+; 16515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpSub) *::operator-; 16615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpMul) *::operator*; 16715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpDiv) *::operator/; 16815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpMod) *::operator%; 16915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpAnd) *::operator&; 17015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpOr) *::operator|; 17115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpXor) *::operator^; 17215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpShl) *::operator<<; 17315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpShr) *::operator>>; 17415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 17515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpAddAssign) *::operator+=; 17615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpSubAssign) *::operator-=; 17715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpMulAssign) *::operator*=; 17815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpDivAssign) *::operator/=; 17915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpModAssign) *::operator%=; 18015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpAndAssign) *::operator&=; 18115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpOrAssign) *::operator|=; 18215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpXorAssign) *::operator^=; 18315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpShlAssign) *::operator<<=; 18415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpShrAssign) *::operator>>=; 18515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 18615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opIndex) *::operator[]; 18715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// opIndexAssign is not currently generated, it needs more extensive support 18815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// mechanisms. 18915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 19015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(opCall) *::operator(); 19115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 19215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpEquals) *::operator==; 19315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpLt) *::operator<; 19415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpLtEquals) *::operator<=; 19515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpGt) *::operator>; 19615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%rename(swigOpGtEquals) *::operator>=; 19715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 19815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// a != b is rewritten as !a.opEquals(b) in D. 19915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(NOTEQUAL) operator!=; 20015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 20115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// The logic operators are not overrideable in D. 20215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(LAND) operator&&; 20315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(LOR) operator||; 20415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 20515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// The C++ assignment operator does not translate well to D where the proxy 20615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot// classes have reference semantics. 20715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%ignoreoperator(EQ) operator=; 20815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 20915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 21015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot public override int opCmp(Object o) { 21115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static if (__traits(compiles, swigOpLt(typeof(this).init) && 21215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot swigOpEquals(typeof(this).init))) { 21315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (auto rhs = cast(typeof(this))o) { 21415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (swigOpLt(rhs)) { 21515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return -1; 21615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else if (swigOpEquals(rhs)) { 21715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 0; 21815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else { 21915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 1; 22015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 22115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 22215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 22315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return super.opCmp(o); 22415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 22515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 22615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot private template swigOpBinary(string operator, string name) { 22715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot enum swigOpBinary = `public void opOpAssign(string op, T)(T rhs) if (op == "` ~ operator ~ 22815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot `" && __traits(compiles, swigOp` ~ name ~ `Assign(rhs))) { swigOp` ~ name ~ `Assign(rhs);}` ~ 22915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot `public auto opBinary(string op, T)(T rhs) if (op == "` ~ operator ~ 23015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot `" && __traits(compiles, swigOp` ~ name ~ `(rhs))) { return swigOp` ~ name ~ `(rhs);}`; 23115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 23215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("+", "Add")); 23315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("-", "Sub")); 23415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("*", "Mul")); 23515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("/", "Div")); 23615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("%", "Mod")); 23715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("&", "And")); 23815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("|", "Or")); 23915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("^", "Xor")); 24015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!("<<", "Shl")); 24115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpBinary!(">>", "Shr")); 24215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 24315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot private template swigOpUnary(string operator, string name) { 24415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot enum swigOpUnary = `public auto opUnary(string op)() if (op == "` ~ operator ~ 24515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot `" && __traits(compiles, swigOp` ~ name ~ `())) { return swigOp` ~ name ~ `();}`; 24615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 24715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpUnary!("+", "Pos")); 24815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpUnary!("-", "Neg")); 24915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpUnary!("~", "Com")); 25015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpUnary!("++", "Inc")); 25115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot mixin(swigOpUnary!("--", "Dec")); 25215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 25315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#endif 25415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 25515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%pragma(d) imdmodulecode=%{ 25615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot} 25715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot%} 25815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 25915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#endif 260