[fpc-devel] Abbrevia and Delphi compatibility

2005-02-15 Thread DrDiettrich
After eliminating dozens of bugs now I have a working version of
Abbrevia for Delphi. Unfortunately this version is not usable with FPC,
primarily because FPC doesn't support properties for the Object type.

In my code I like to use Object for records with methods and properties,
which need no dynamic memory allocation. In Abbrevia this feature
allowed to eliminate near 100 methods of various classes, and simplified
more code. After all I found the following essential features missing in
FPC:

1) Properties for Object type.
2) Sets with minimal size, at least with 1 and 2 bytes for replacement
of Byte and Word types.

I consider both features as vital in translations from C to Pascal, and
in the detection and elimination of bugs. Will it be possible to add
these features to FPC, this year?

DoDi


___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Jonas Maebe
On 15 feb 2005, at 02:35, DrDiettrich wrote:
1) Properties for Object type.
I guess this won't be that hard to add, given that we already support 
global properties (so they're not really tied to classes)

2) Sets with minimal size, at least with 1 and 2 bytes for replacement
of Byte and Word types.
This would be quite a bit more work.
Jonas
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Peter Vreman
> After eliminating dozens of bugs now I have a working version of
> Abbrevia for Delphi. Unfortunately this version is not usable with FPC,
> primarily because FPC doesn't support properties for the Object type.
>
> In my code I like to use Object for records with methods and properties,
> which need no dynamic memory allocation. In Abbrevia this feature
> allowed to eliminate near 100 methods of various classes, and simplified
> more code. After all I found the following essential features missing in
> FPC:
>
> 1) Properties for Object type.

Since which Delphi version is this allowed? FPC has an explicit check for
delphi mode to disable property in tp style object.





___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Marco van de Voort
> > After eliminating dozens of bugs now I have a working version of
> > Abbrevia for Delphi. Unfortunately this version is not usable with FPC,
> > primarily because FPC doesn't support properties for the Object type.
> >
> > In my code I like to use Object for records with methods and properties,
> > which need no dynamic memory allocation. In Abbrevia this feature
> > allowed to eliminate near 100 methods of various classes, and simplified
> > more code. After all I found the following essential features missing in
> > FPC:
> >
> > 1) Properties for Object type.
> 
> Since which Delphi version is this allowed? FPC has an explicit check for
> delphi mode to disable property in tp style object.

D6 accepts:

  type x = object
 fblaat : integer;
 property blaat:integer read fblaat write fblaat;
 end;

assignig fblaat and writeln(blaat) also works.

So it seems it works as expected in D6.

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Peter Vreman
> After eliminating dozens of bugs now I have a working version of
> Abbrevia for Delphi. Unfortunately this version is not usable with FPC,
> primarily because FPC doesn't support properties for the Object type.
>
> In my code I like to use Object for records with methods and properties,
> which need no dynamic memory allocation. In Abbrevia this feature
> allowed to eliminate near 100 methods of various classes, and simplified
> more code. After all I found the following essential features missing in
> FPC:
>
> 1) Properties for Object type.

Since which Delphi version is a property allowed in an normal object?
Currently FPC has special code that forbids property in objects for delphi
mode.


> 2) Sets with minimal size, at least with 1 and 2 bytes for replacement
> of Byte and Word types.
>
> I consider both features as vital in translations from C to Pascal, and
> in the detection and elimination of bugs. Will it be possible to add
> these features to FPC, this year?

We can't promise anything.




___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Marco van de Voort
> 2) Sets with minimal size, at least with 1 and 2 bytes for replacement
> of Byte and Word types.
> 
> I consider both features as vital in translations from C to Pascal, and
> in the detection and elimination of bugs. Will it be possible to add
> these features to FPC, this year?

I'm interested in the last one. What is exactly the problem with it, except
foreign data, like API declarations (which are rare anyway), and binary
files?

The C argument is a bit doubtful, since there are more such problems (like
bitpacking, not being able to exactly duplicate any union), so 1:1 remapping
is not really possible anyway.

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Alexey Barkovoy
2) Sets with minimal size, at least with 1 and 2 bytes for replacement
of Byte and Word types.
This is already correctly working (at least in FPC 1.9.x). For example:
type
{$MINENUMSIZE 2}
 enumDMUS_VARIATIONT_TYPES = (
   DMUS_VARIATIONT_SEQUENTIAL   {= 0}, (* Play sequential starting with 
variation 1. *)
   DMUS_VARIATIONT_RANDOM   {= 1}, (* Play randomly. *)
   DMUS_VARIATIONT_RANDOM_START {= 2}, (* Play sequential starting with a 
random variation. *)
   DMUS_VARIATIONT_NO_REPEAT{= 3}, (* Play randomly, but don't play the 
same variation twice. *)
   DMUS_VARIATIONT_RANDOM_ROW   {= 4}  (* Play randomly as a row: don't 
repeat any variation until all have played. *)
 );

begin
 WriteLn(SizeOf(enumDMUS_VARIATIONT_TYPES));
end.
will write "2" 

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Marco van de Voort
> D6 accepts:
> 
>   type x = object
>  fblaat : integer;
>  property blaat:integer read fblaat write fblaat;
>  end;
> 
> assignig fblaat and writeln(blaat) also works.
> 
> So it seems it works as expected in D6.

Same with FPC, the below program prints 1234 (recent 1.9.7):

{$mode delphi}

 type x = object
 fblaat : integer;
 procedure fillblaat;
 property blaat:integer read fblaat write fblaat;
 end;


procedure x.fillblaat;

begin
  fblaat:=1234; // this 1234 is printed.
end;

var y:x;

begin
  y.fblaat:=1234;
  y.fillblaat;  // this can be omitted and it still works
  writeln(y.blaat); 
end.


___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Peter Vreman
> After eliminating dozens of bugs now I have a working version of
> Abbrevia for Delphi. Unfortunately this version is not usable with FPC,
> primarily because FPC doesn't support properties for the Object type.
>
> In my code I like to use Object for records with methods and properties,
> which need no dynamic memory allocation. In Abbrevia this feature
> allowed to eliminate near 100 methods of various classes, and simplified
> more code. After all I found the following essential features missing in
> FPC:
>
> 1) Properties for Object type.

Since which Delphi version is this allowed? FPC has an explicit check for
delphi mode to disable property in tp style object.




___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Jonas Maebe
On 16 feb 2005, at 13:24, Alexey Barkovoy wrote:
2) Sets with minimal size, at least with 1 and 2 bytes for 
replacement
of Byte and Word types.
This is already correctly working (at least in FPC 1.9.x). For example:
No, those are enumerations, not sets.
Jonas
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-17 Thread DrDiettrich
Marco van de Voort wrote:
> 
> > 2) Sets with minimal size, at least with 1 and 2 bytes for replacement
> > of Byte and Word types.
> >
> > I consider both features as vital in translations from C to Pascal, and
> > in the detection and elimination of bugs. Will it be possible to add
> > these features to FPC, this year?
> 
> I'm interested in the last one. What is exactly the problem with it, except
> foreign data, like API declarations (which are rare anyway), and binary
> files?

The size restriction applies almost only to filed records, whereas
in-memory data structures usually can be realigned at will.

The use of enums and sets allows for safer code, instead of working with
bitmasks and general ordinal data types and constants. According (set)
variables can be found in many data structures, so that it would be nice
to retype such fields as appropriate sets in Pascal code.
 
> The C argument is a bit doubtful, since there are more such problems (like
> bitpacking, not being able to exactly duplicate any union), so 1:1 remapping
> is not really possible anyway.

Even C bitfields can be emulated perfectly in Pascal, with Object types
and properties.
Named C unions can be emulated by variant records in Pascal, only
anonymous unions sometimes require changes to the code, or the use of
objects with properties. But also some (legacy) Pascal constructs (file
open mode...) could be much nicer and safer with structured data types.

DoDi



___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-17 Thread DrDiettrich
Peter Vreman wrote:

> > 1) Properties for Object type.
> 
> Since which Delphi version is a property allowed in an normal object?

I'm not sure, but at least D4 supports such properties.

> Currently FPC has special code that forbids property in objects for delphi
> mode.

Then it would be sufficient to remove that special code?

BTW, I didn't find object properties mentioned in the FPC documentation
(HTML). Properties only are described for Class types?


> We can't promise anything.

Granted ;-)

DoDi



___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re[2]: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Pavel V. Ozerski
Hello Jonas,

Wednesday, February 16, 2005, 11:24:00 AM, you wrote:

>> 1) Properties for Object type.

Should already work with {$mode Delphi} - if this feature is not
broken again now.



___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re[2]: [fpc-devel] Abbrevia and Delphi compatibility

2005-02-16 Thread Pavel V. Ozerski
Hello Marco,

Wednesday, February 16, 2005, 1:32:58 PM, you wrote:
>Currently FPC has special code that forbids property in objects for delphi
>mode.

At least Delphi versions from 2 to 7 support propereties for old-style
objects. This feature is used BTW in KOL library. Some years ago I
implemented a patch for FPC 1.1 which resolved this feature for Delphi
compatible mode but suppressed for all others. I hope that this
feature is not removed also now (but I have not latest FPC builds
now).



___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel