1 /* ------------------------------------------------------------ 2 * Overloaded operator support 3 * ------------------------------------------------------------ */ 4 5 #ifdef __cplusplus 6 7 // operators supported in Octave, and the methods they are routed to 8 9 // __brace__ a{args} 10 // __brace_asgn__ a{args} = rhs 11 // __paren__ a(args) 12 // __paren_asgn__ a(args) = rhs 13 // __str__ generates string rep 14 15 // __not__ !a 16 // __uplus__ +a 17 // __uminus__ -a 18 // __transpose__ a.' 19 // __hermitian__ a' 20 // __incr__ a++ 21 // __decr__ a-- 22 // __add__ a + b 23 // __sub__ a - b 24 // __mul__ a * b 25 // __div__ a / b 26 // __pow__ a ^ b 27 // __ldiv__ a \ b 28 // __lshift__ a << b 29 // __rshift__ a >> b 30 // __lt__ a < b 31 // __le__ a <= b 32 // __eq__ a == b 33 // __ge__ a >= b 34 // __gt__ a > b 35 // __ne__ a != b 36 // __el_mul__ a .* b 37 // __el_div__ a ./ b 38 // __el_pow__ a .^ b 39 // __el_ldiv__ a .\ b 40 // __el_and__ a & b 41 // __el_or__ a | b 42 43 // operators supported in C++, and the methods that route to them 44 45 %rename(__add__) *::operator+; 46 %rename(__add__) *::operator+(); 47 %rename(__add__) *::operator+() const; 48 %rename(__sub__) *::operator-; 49 %rename(__uminus__) *::operator-(); 50 %rename(__uminus__) *::operator-() const; 51 %rename(__mul__) *::operator*; 52 %rename(__div__) *::operator/; 53 %rename(__mod__) *::operator%; 54 %rename(__lshift__) *::operator<<; 55 %rename(__rshift__) *::operator>>; 56 %rename(__el_and__) *::operator&&; 57 %rename(__el_or__) *::operator||; 58 %rename(__xor__) *::operator^; 59 %rename(__invert__) *::operator~; 60 %rename(__lt__) *::operator<; 61 %rename(__le__) *::operator<=; 62 %rename(__gt__) *::operator>; 63 %rename(__ge__) *::operator>=; 64 %rename(__eq__) *::operator==; 65 %rename(__ne__) *::operator!=; 66 %rename(__not__) *::operator!; 67 %rename(__incr__) *::operator++; 68 %rename(__decr__) *::operator--; 69 %rename(__paren__) *::operator(); 70 %rename(__brace__) *::operator[]; 71 72 // Ignored inplace operators 73 %ignoreoperator(PLUSEQ) operator+=; 74 %ignoreoperator(MINUSEQ) operator-=; 75 %ignoreoperator(MULEQ) operator*=; 76 %ignoreoperator(DIVEQ) operator/=; 77 %ignoreoperator(MODEQ) operator%=; 78 %ignoreoperator(LSHIFTEQ) operator<<=; 79 %ignoreoperator(RSHIFTEQ) operator>>=; 80 %ignoreoperator(ANDEQ) operator&=; 81 %ignoreoperator(OREQ) operator|=; 82 %ignoreoperator(XOREQ) operator^=; 83 84 // Ignored operators 85 %ignoreoperator(EQ) operator=; 86 %ignoreoperator(ARROWSTAR) operator->*; 87 88 #endif /* __cplusplus */ 89