XCMD -> Revolution External shim kit?
benr at cogapp.com
Mon Mar 12 04:50:18 CDT 2007
I know - and I agree - most of the XCMDs one used to use can be recoded in
Transcript, often with no loss of speed, sometimes even an increase, and
obviously with a gain in portability.
But I am left with a couple of XCMDs that I don't want to be ported to
transcript, because their value is that they share code with applications
written in C/C++, and I want to be sure that the XCMD produces exactly the
same behaviour as the application. When I switched to Revolution, they
crashed until I understood that Rev supports v1 of the HC external interface,
not v2; so I added a bit of shim code for the missing function that this
external happened to be calling (StrToRect). Unfortunately, when Rev 2.0
arrived, these were orphaned; I've been hanging on to these with the app in
Rev 1.1 but now I really need to move the code into a Revolution external, so
I can bring the whole shebang up to date.
Looking at the code, there are a lot of functions passing the XCmdPtr around,
so that callbacks can be made, and results returned. Of course it would be
perfectly possible to sit down and rewrite the whole code to avoid all this.
But it looks to me as if it would be approximately the same effort - perhaps
even slightly less - to instead extend the shim, so it implements the HC v1
callbacks that are missing, translates the HC Set/Get global functions into
the Rev equivalents, and converts the input arguments and parameters.
The result would be a shell Revolution External project, into which one could
drop the code from an old HC external, and make it available to modern
versions of Rev with very little effort.
I don't imagine that I'm the first person to have the need to convert an old
external... so has anyone else produced such a shim kit? If not, is there
anyone else who has code that would benefit from it?
More information about the use-livecode