On 8 Jan 2015 at 23:12, Pierre Muller wrote:
For gpc mailing list:
[...]
The problem is that GPC and Free Pascal support several
pascal 'dialects'. But this requires command line options.
The -Mobjfpc option is required for Free Pascal compiler
to understand class type definition, but is rejected in default mode.
I expect GNU GPC to also reject class in 'normal' mode...
Maybe someone on the gpc mailing list knows if classes are supported
by GPC and if it requires a special compiler option.
Pierre Muller
FYI: Here is the example code that is included in the bug report.
$ cat ~/pas/test/test-class-pascal.pas
type
TA = class
public
x, y : integer;
constructor Create;
function check(b : TA) : boolean;
destructor Done; virtual;
end;
constructor TA.Create;
begin
x:=-1;
y:=-1;
end;
destructor TA.Done;
begin
end;
function TA.check (b : TA) : boolean;
begin
check:=(x < b.x);
end;
var
a, b : TA;
begin
a:=TA.Create;
b:=TA.Create;
a.x := 67;
a.y := 33;
a.check (b);
end.
Supply "--extended-syntax" and GPC will accept "class" (and if you are going to use "Result" then you will need to add "--implicit-result").
However, I do not believe that the "class" will be treated much differently from a bog-standard Borland Pascal "object" - for example, not having (or not calling) a constructor will not crash the program (as it should do, with Delphi-style classes).
Best regards, The Chief -------- Prof. Abimbola A. Olowofoyeku (The African Chief) web: http://www.greatchief.plus.com/
Prof. Abimbola A. Olowofoyeku (The African Chief) wrote:
Supply "--extended-syntax" and GPC will accept "class" (and if you are going to use "Result" then you will need to add "--implicit-result").
However, I do not believe that the "class" will be treated much differently from a bog-standard Borland Pascal "object" - for example, not having (or not calling) a constructor will not crash the program (as it should do, with Delphi-style classes).
Well, GPC intenally converts classes to _pointers_ to objcts. Not initializing class means using nil pointer, so expect crash. Generally, thare are differences between GPC classes and Delphi classes, but they are more subtle. For examples root class in Delphi has more methods than corresponding GPC class. But basic semantics should agree.
On 10 Jan 2015 at 3:17, Waldek Hebisch wrote:
Prof. Abimbola A. Olowofoyeku (The African Chief) wrote:
Supply "--extended-syntax" and GPC will accept "class" (and if you are going to use "Result" then you will need to add "--implicit-result").
However, I do not believe that the "class" will be treated much differently from a bog-standard Borland Pascal "object" - for example, not having (or not calling) a constructor will not crash the program (as it should do, with Delphi-style classes).
Well, GPC intenally converts classes to _pointers_ to objcts. Not initializing class means using nil pointer, so expect crash.
[...]
I stand corrected!
Best regards, The Chief -------- Prof. Abimbola A. Olowofoyeku (The African Chief) web: http://www.greatchief.plus.com/