OS X Externals

Frank D. Engel, Jr. fde101 at fjrhome.net
Wed Oct 13 09:22:06 EDT 2004


I don't mind copying it when built; it should not need to be redone too 
often after I have it working; there are two functions which I 
translated to C from Transcript in order to improve performance (they 
are quite slow under Transcript, since they need to look at each byte 
in the text of an image).

Toward the beginning of the C source code, I placed this line:

char Xname[] = "PostgreSQL BLOB encoding functions external v0.0";

(I previously posted the Transcript versions of the functions)

At the end of external.c, I placed this code:

Xternal Xtable[] = {
     {"dbblob", XFUNCTION, 0, dbBLOB, dbabort},
	{"dbunblob", XFUNCTION, 0, dbUNBLOB, dbabort},
	{"", XNONE, 0, NULL, NULL}
};


Note that the 'dbabort' function simply contains an fprintf function 
call (outputs to stderr).

What else would be needed to get this working?  I created an Xcode 
project using the "Carbon Bundle" template, and did simple changes to 
get the project to build with the following files listed when the 
project icon is selected in the left-hand pane:

bytea-funcs.bundle (the target)
Carbon.framework (from OS X)
external.c (my code)
InfoPList.strings (provided by Xcode, then modified)
XCmdGlue.c (from the SDK)
XCmdGlue.h (from the SDK)
XCmdName.h (from the SDK)

I also have XCmdFunc.c (from the SDK) copied into the project directory.

Toward the end of XCmdGlue.c, there was a line:

#include "XCmdFunc.c"

I commented that line out because I could not get the project to build 
otherwise.  After commenting out that line, the project now builds 
without errors or warnings, but does not work.  Could this be related 
to the problem, and if so, how can I get the project to build with the 
line uncommented?  My own code does not call any of the functions 
provided by the engine; I tried to keep it as simple as I could.

On Oct 13, 2004, at 9:04 AM, Thierry Arbellot wrote:

> OK
>
> If you don't want to copy the bundle every-time you rebuild it, use 
> the full path to the folder where XCode build the bundle.
> And each time you rebuild the bundle, you should close the stack, 
> remove it from memory then reopen it.
>
> Another thing to check: have you add the 2 functions in the Xtable 
> array declared in the external.c source file ?
>
> On Wednesday, Oct 13, 2004, at 14:40 Europe/Paris, Frank D. Engel, Jr. 
> wrote:
>
>> No, just the name.  However, I have now tried using the EnhancedQT 
>> external, just to see how that one worked (place it where in order 
>> for it to work), and placing it in the Rev folder causes it to work, 
>> even w/o the full path in "the externals of this stack", and the 
>> externalFunctions does return a list of functions.
>>
>> I placed my external in the same place, but have an empty list of 
>> externalFunctions.  Apparently something is wrong, either in my C 
>> source code, or in the build process.
>>
>> On Oct 13, 2004, at 5:10 AM, Thierry Arbellot wrote:
>>
>>>
>>> On Tuesday, Oct 12, 2004, at 23:44 Europe/Paris, Frank D. Engel, Jr. 
>>> wrote:
>>>
>>>> I am trying to build an external for OS X (which I will eventually 
>>>> need to get working under Windows as well).  There should be no 
>>>> outside dependencies from the external itself, other than the 
>>>> standard libc.  The external contains two functions.
>>>>
>>>> I tried various things, and finally ended up with a .bundle file, 
>>>> courtesy of XCode.  I tried several different placements of the 
>>>> file, and have the name of the bundle in the externals property of 
>>>> my main stack, but using 'answer the externalFunctions of this 
>>>> stack' from the msgbox always results in an empty message box (just 
>>>> the ever-present OK button).
>>>>
>>>> I cannot tell if Rev is not finding my external, if my external was 
>>>> not built correctly (found but considered corrupt and silently 
>>>> ignored), or if it is somehow being considered an 'empty' external 
>>>> (a valid external with no functions).
>>>>
>>>> Could anyone help me to debug this problem?  Thank you!
>>>>
>>>> -----------------------------------------------------------
>>>> Frank D. Engel, Jr.  <fde101 at fjrhome.net>
>>>>
>>>
>>> Frank,
>>>
>>> Have you set the full path to the bundle in the externals property 
>>> of the main stack ?
>>>
>>> Thierry
>>>
>>> _______________________________________________
>>> use-revolution mailing list
>>> use-revolution at lists.runrev.com
>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>>
>>>
>> -----------------------------------------------------------
>> Frank D. Engel, Jr.  <fde101 at fjrhome.net>
>>
>> $ ln -s /usr/share/kjvbible /usr/manual
>> $ true | cat /usr/manual | grep "John 3:16"
>> John 3:16 For God so loved the world, that he gave his only begotten 
>> Son, that whosoever believeth in him should not perish, but have 
>> everlasting life.
>> $
>>
>>
>>
>> ___________________________________________________________
>> $0 Web Hosting with up to 120MB web space, 1000 MB Transfer
>> 10 Personalized POP and Web E-mail Accounts, and much more.
>> Signup at www.doteasy.com
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
-----------------------------------------------------------
Frank D. Engel, Jr.  <fde101 at fjrhome.net>

$ ln -s /usr/share/kjvbible /usr/manual
$ true | cat /usr/manual | grep "John 3:16"
John 3:16 For God so loved the world, that he gave his only begotten 
Son, that whosoever believeth in him should not perish, but have 
everlasting life.
$


More information about the use-livecode mailing list