PikeFramework
The following commands can be used to generate a program that uses the Pike framework:
{code}
gcc -c itest.m -o itest.o
gcc itest.o -o itest -framework Pike -framework Foundation
{code}
Here's an example of using the framework to embed a Pike interpreter within your application:
{code}
#import
#import
#import
int main()
{
id i;
struct svalue * sv;
// required for console mode objective c applications
NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc] init];
// these 3 lines set up and start the interpreter.
i = [OCPikeInterpreter sharedInterpreter];
[i setMaster: @"/usr/local/pike/7.7.30/lib/master.pike"];
[i startInterpreter];
// ok, now that we have things set up, let's use it.
// first, an example of calling pike c level apis directly.
f_version(0);
printf("%s\n", Pike_sp[-1].u.string->str);
pop_stack();
// next, we'll demonstrate one of the convenience functions available
sv = [i evalString: @"1+2"];
printf("type: %d, value: %d\n", sv->type, sv->u.integer);
free_svalue(sv);
// finally, we clean up.
[i stopInterpreter];
[innerPool release];
return 0;
}
{code}
The following commands can be used in conjunction with Pike.framework to generate a Bundle that when loaded, fires up a Pike interpreter. I plan on using this in conjunction with the Public.ObjectiveC module to produce bundles that load up like a standard Objective-C bundle, but in which all of the classes are written completely in Pike.
Things that need to be done to achieve this:
1. A Universal Build of Pike.framework would be nice
1. Bundling Public.ObjectiveC in Pike.framework
1. Extending the OC_Bundle.m template to add the bundle's Resource directory to the Pike program path, and fire up Public.ObjectiveC.
I expect #1 to be relatively simple to knock out: build Pike under PPC and Intel and then use lipo to build fat files for the Pike executable and any .so files.
Number 2 and 3 are probably another evening's worth of work, I'd guess. So, not a whole lot of work to be expended before we can do all kinds of crazy stuff with Pike!
{code}
gcc -c ctest.m -o ctest.o
gcc ctest.o -o TestBundle -framework Pike -framework Foundation -flat_namespace -bundle -Wl,-U,_environ
cp TestBundle TestBundle.bundle/Contents/MacOS/
{code}
Powered by PikeWiki2
|
|