[fpc-devel]Compilation of Apples Universal Interfaces
Dr. Rolf Jansen
InstantWare at t-online.de
Mon Aug 16 23:00:50 CEST 2004
Nothing more to say about it, since I see we are in total agreement.
- I will produce a diff file or the changes in the Universal
PInterfaces.
- If I ever submit any change to the MacPas wiki page, I will do it as
a registered user.
- I will update the Xcode-FreePascal site soon with the latest
development.
Thank you very much Olle and Jonas.
Best regards
Rolf
Am 16.08.2004 um 13:50 schrieb Olle Raab:
> 04-08-16 10.31, skrev Dr. Rolf Jansen följande:
>
>> I am with you to keep the number of changes to the PInterfaces as
>> small
>> as possible. However, I would like to make a distinction between buggy
>> or misleading parts of the PInterfaces and those parts which simply
>> belong to another flavour (presumably the Mac one).
>>
>> A. I advocate for debugging the UI´s and not to accommodate
>> for bugs in the Free Pascal mode -Mmacpas.
>
> I do not either want to accomodate for bugs.
>
> My idea is to make fpc in mode macpas emulate Metrowerks Pascal, since
> this
> is the most modern commercial pascal compiler for mac. And the compiler
> today's active pascal programmers uses. Mode macpas should accomodate
> for
> Think Pascal features.
>
> And the Delphi mode of fpc sometimes support things in Delphi which is
> not
> so nice, but not neccesarily bugs, because it should be possible to
> share
> code between FPC and Delphi.
>
> That said, we should of course not support all bad things in
> Metrowerks.
>
> And perhaps it is good to be conservative and not implement everything
> right
> now, at least not today :)
>
>> B. I advocate for improving the Free Pascal mode -Mmacpas in order
>> to allow all Pascal Mac developers a smooth transition.
>>
>> C. I advocate for maintaining and improving the PInterfaces
>> as time goes by since Apple will not do it anymore.
>>
>> Examples for A:
>>
>> IMHO the active LongDouble routines in fp.p and the use of the term
>> "object" at several places belong definitely to category A. In fact,
>> your example "SetDeskCPat" is deactivated with the {$IFC
>> CALL_NOT_IN_CARBON} directive.
>
> Sorry, you are right.
>
>> IT IS the policy of the UI to
>> activate/deactivate not used parts for different platforms/targets -
>> by
>> this way the interfaces became universal.
>
> But this one:
>
> {
> * ScrollWindowRect()
> *
> * Availability:
> * Non-Carbon CFM: not available
> * CarbonLib: in CarbonLib 1.0 and later
> * Mac OS X: in version 10.0 or later
> }
>
> is not deactivated for Non-Carbon CFM. I guess non-carbon calls is
> deactivated, but not everything is properly deactivated, it is instead
> left
> to the linker to complain about.
>
> But ok, at least non carbon code should be deactivated under carbon.
>
>> I doubt that the term LongDouble was ever used by Mac Pascal
>> Programmers. LongDouble was known as extended. So, I suggest not to
>> care about the LongDouble routines, but simply deactivate them for Mac
>> OS X by encapsulating them with the conditional directive {$IFC
>> TARGET_CPU_PPC AND NOT TARGET_API_MAC_OSX}.
>
> OK.
>
> But I will anyway add LongDouble for non Mac OS X. Because it is
> defined by
> Metrowerks.
>
>> I consider "object" to be a reserved word for Mac Pascal. So it is a
>> bug to use it as record field names or in routine declarations as
>> parameter names. There is no other way, "object" must be renamed in
>> the
>> UI´s.
>
> Metrowerks do not treat object as an reserved word, thats why this bug
> is
> not discovered. But I agree it is not nice. So rename.
>
>> Example for B:
>>
>> {$LibExport+} belongs definitely to category B. It might be a good
>> idea
>> to let Free Pascal accept this directive in -Mmacpas in the future,
>> even if it does nothing special but simply ignor it.
>
> OK, its added to the cvs. Its recognized but does nothing.
>
>> Example for C:
>>
>> The changes to the type declaration of CStringPtr/ConstCStringPtr from
>> Ptr to PChar belong to category C. After thinking about it, I aggree
>> with you that this more specific change is better compared to the more
>> general change of Ptr from ^SInt8 to PChar.
>>
>> It might be a good idea to surround changes of category C with the
>> conditional compiler directive {$IFC NOT UNDEFINED FPC}.
>>
>> This would mean in the given case that in MacTypes.p:
>>
>> CStringPtr = Ptr;
>> CStringPtrPtr = ^CStringPtr;
>> ConstCStringPtr = Ptr;
>> ConstCStringPtrPtr = ^ConstCStringPtr;
>>
>> should be changed to:
>>
>> {$IFC UNDEFINED FPC}
>> CStringPtr = Ptr;
>> {$ELSEC}
>> CStringPtr = PChar;
>> {$ENDC}
>> CStringPtrPtr = ^CStringPtr;
>> ConstCStringPtr = CStringPtr;
>> ConstCStringPtrPtr = ^ConstCStringPtr;
>>
>>
>> If we follow these rules then no change of either category will break
>> compatibility to old Mac compilers or different targets.
>
> OK.
>
>> I aggree with you that it would be great if Apple would allow us to
>> distribute a patched version of the PInterfaces. In the meantime we
>> have to go the diff and patch way.
>
> In any case it is nice to have a diff file as a document of the
> changes.
>
> Olle
>
> BTW If you write in the wiki, consider to register as a user, it is
> then
> easier to see who has written what, and to discuss that.
>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
>
__ InstantWare ______________________________________________________
Dr. Rolf Jansen * Stephanienstraße 19 * D-76133 Karlsruhe * Germany
http://InstantWare.bei.t-online.de/
_____________________________________________________________________
More information about the fpc-devel
mailing list