Michael Van Canneyt wrote:
>
> On Thu, 25 Jan 2007, Alexandre Leclerc wrote:
>
>> 2007/1/25, Felipe Monteiro de Carvalho
<[EMAIL PROTECTED]>:
>>> On 1/25/07, Alexandre Leclerc <[EMAIL PROTECTED]> wrote:
>>>> Yes, I understand that, but I *need* a scripting engine which is
based
>>>> on Pascal. And ROPS is the only one I found that answered my
>>>> requirements. Also, it's integrated and it's "free", and very fast.
>>>>
>>>> If there was another way, I would use it. But since, I must rely
on a
>>>> stable FPC internal to make it work.
>>> Does this script support other calling conventions?
>>>
>>> You could try using stdcall instead of register. It´s much simpler,
>>> and as stable as it can get.
>>>
>>> I remember writing a simple script engine myself, and then I
choose to
>>> support mostly stdcall.
>> ROPS (RemObjects Pascal Script remobjects.com) is 100% pascal code
>
> Not 100%, there is 1 routine which is assembler, it's the routine
> that sets up the stack when making a call to an imported function.
>
>> that you simply use in your own code. The engine compiles in your
>> application. It then work with the application stack, etc. to execute
>> native pascal functions and script functions. Quite a nice script
>> engine.
>
> I use it since ages, even when it was not owned by remobjects.
You are right about that. There is a routine that does that, but all it
does is copy the prepared data onto the stack (And copy back the
result). Now, there are a few problems with PS related to FPC:
* FPC has changed default calling convention once (or twice?)
* The way "register" works on FPC is slightly different from delphi, in
delphi special types like interfaces, strings and variant results are
passed as var parameters, it seems the easiest fix would be for me to
change PascalScript to process results differently for FreePascal.
How does FPC pass a string/variant/interface result actually? Returned
in AEX?
Once I know this, I should be able to add an FPCFIX define for this. (So
it can be easily undone when FPC supports the same "Register" mode as
Delphi does)