[fpc-devel] type question

Peter Vreman peter at freepascal.org
Sun Oct 15 00:23:16 CEST 2006


At 23:00 14-10-2006, you wrote:
>On Saturday 14 October 2006 17:38, Peter Vreman wrote:
> > > On Saturday 14 October 2006 15:55, Marc Weustink wrote:
> > >> Hi,
> > >>
> > >> if I define 2 types like:
> > >>
> > >> type
> > >>   MyA = type string;
> > >>   MyB = type string;
> > >>
> > >> are MyA and MyB considered as the same type ?
> > >
> > > No, you are explicitly marking them as a new type. This is a very cool
> > > feature
> > > of Pascal you wont find in many other languages.
> > >
> > > (For instance, you could use it to create a new integer-type for little-
> > > and
> > > big-endian numbers, ensuring that you _never_ directly assign a
> > > little-endian
> > > number to a big-endian one, or vice versa)
> >
> > For the compiler the types are not equal anymore, but they are still
> > compatible for implicit type conversion. This has mainly impact on
> > overload choosing and parameter passing. Normal assignments using ':=' are
> > not affected because of the still available implicit type conversion.
>
>I really feel there should be a way to make two types completely incompatible.
>
>How exactly does the compiler figure out the rules for implicit conversion?
>
>In the case of wrapper integers in records, are 4-byte records handled as
>efficiently by the compiler as 4-byte integers? I suspect it's some radically
>different code that handles it.

Only by making it a record. Conversion of atomic types 
(string,integer,etc) are always handled internally by the compiler.


Peter




More information about the fpc-devel mailing list