2011/9/10 Flávio Etrusco <[hidden email]>
> If write a declaration without result it complains about invalid
> syntax; if I add a result it says "impossible operator overload".
> Does FPC allow overloading the += operator? If not, why?
You do not need overload the += operator, just do it in := operator.
> On 10 Sep 2011, at 22:32, Flávio Etrusco wrote:
>> Does FPC allow overloading the += operator? If not, why?
> It is translated into "x:=x+y" at the parser level, and overload resolving happens later. So once you overload "+" (and := if required), "+=" should also work.
Yes, I realize this. I'm revisiting the "StringBuilder" issue, and
"+=" can't be efficiently implemented with two operations (since
concatenating the operand would be unexpected to the user...).
On Mon, Sep 12, 2011 at 2:25 AM, Jürgen Hestermann
<[hidden email]> wrote:
> Flávio Etrusco schrieb:
>> "+=" can't be efficiently implemented with two operations (since
>> concatenating the operand would be unexpected to the user...).
> Why not use "inc(x,y)"?
AFAICS it's not possible either. (Notice I'm talking about operating
on an 'object').
What I meant is:
MyStringBuffer += 'String';
Is replaced with:
MyStringBuffer := MyStringBuffer + 'String';
What if is was:
MyStringBuffer := OtherStringBuffer + 'String';
So concatenating the 'String' in the StringBuffer's internal buffer
would be unexpected IMO (but maybe just making it safe, even though
unexpected, would be ok).
Also, since the assignment operator for same type can't overload, I
can't make adjustments to avoid "sharing" the buffer so I'm left with
using an AnsiString as buffer, or use some self-pointing canary which
must be checked on every buffer operation.