swig/Examples/test-suite/operator_overload_break.i
William S Fulton cf29b90a2b Fix comments and newlines within operator definitions
Fix handling of conversion operators where the operator is split over multiple lines or
has comments within the operator type.

Also fix similar problem with normal operators which gave a syntax error if split over
multiple lines or had a comment within the operator declaration.

Closes #401
2015-05-01 19:22:38 +01:00

72 lines
1.7 KiB
OpenEdge ABL

%module operator_overload_break
#if defined(SWIGPYTHON) || defined(SWIGD)
%warnfilter(SWIGWARN_IGNORE_OPERATOR_PLUSPLUS);
#endif
#if !defined(SWIGLUA) && !defined(SWIGR) && !defined(SWIGPERL)
%rename(Plus) operator +;
%rename(Minus) operator -;
%rename(EqualEqual) operator ==;
%rename(PlusPlusPrefix) operator++();
%rename(PlusPlusPostfix) operator++(int);
#endif
%ignore operator new (size_t);
%ignore operator delete (void *);
%ignore operator delete[] (void *);
%{
#include <iostream>
using namespace std;
%}
%inline %{
class Op
{
public:
Op(int n) {k = n;}
Op(const Op& other) {
std::cerr << "COPY: "<< other.k << std::endl;
k = other.k;
}
bool operator==(const Op& rhs) {
std::cerr << "Op: " << k << std::endl;
std::cerr << "obj: " << rhs.k << std::endl;
return (k == rhs.k);
}
bool operator==(int i) {
std::cerr << "Op: " << k << std::endl;
std::cerr << "other: " << i << std::endl;
return (k == i);
}
Op operator+(const Op& rhs) {return Op(k + rhs.k);}
Op operator+(int rhs) {return Op(k + rhs);}
Op operator-(const Op& rhs) {return Op(k - rhs.k);}
Op operator-(int rhs) {
std::cerr << "sub: " << rhs << std::endl;
return Op(k - rhs);
}
Op __rsub__(int lhs) {
std::cerr << "sub: " << lhs << std::endl;
return Op(lhs - k);
}
Op& operator++() {k++; return *this;}
void PrintK() {std::cerr << k << std::endl;}
int k;
void *operator new
(size_t); // definition split over two lines was giving syntax error
void operator delete /* comment here did not work */ (void *);
void operator
delete[] (void *);
};
%}