[fpc-pascal] Overloading Inc and Dec procedures?

LacaK lacak at zoznam.sk
Wed Sep 18 13:37:57 CEST 2019


Hi *,

seems, that overloading of Inc, Dec internal compiler procedures is not 
allowed.
Is it by intention or can it be fixed (adding overload keyword to system 
function definitions?).

I would like to add support for:

   procedure Inc(var a: integer; b: single); overload; inline;
   begin
     a := a + Round(b);
   end;
   procedure Inc(var a: single; b: single); overload; inline;
   begin
     a := a + b;
   end;
   procedure Dec(var a: integer; b: single); overload; inline;
   begin
     a := a - Round(b);
   end;
   procedure Dec(var a: single; b: single); overload; inline;
   begin
     a := a - b;
   end;

But nor this approach nor operator overloading is allowed.
(Error message: Wrong number of parameters specified for call to "Inc" 
is emited , when simple Inc(a); is used
I can avoid this error by prefixing System.Inc(), but it will require 
change on many places in code)

I need use addition or subtraction on operands, which left of them can 
be either "integer" or "single" type (specialized generic type)

Example:

var x,y: TAnyNumericType; x1,y1: single; i: integer;
Inc(x, x1); // x,y can be either integer or single
Inc(y, y1);
Inc(i); // Error: Wrong number of parameters specified for call to "Inc"

TIA

-Laco.



More information about the fpc-pascal mailing list