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