/* Automatically generated by
	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1950 uuid: b4089b49-1494-49d2-8966-57cba5c92194
   from
	ObjectiveCPlugin ObjectiveC-Plugin-John M McIntosh.20 uuid: 945d3486-9e4a-487b-a4e0-b19a75c8042f
 */
static char __buildInfo[] = "ObjectiveCPlugin ObjectiveC-Plugin-John M McIntosh.20 uuid: 945d3486-9e4a-487b-a4e0-b19a75c8042f " __DATE__ ;



#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

/* Default EXPORT macro that does nothing (see comment in sq.h): */
#define EXPORT(returnType) returnType

/* Do not include the entire sq.h file but just those parts needed. */
#include "sqConfig.h"			/* Configuration options */
#include "sqVirtualMachine.h"	/*  The virtual machine proxy definition */
#include "sqPlatformSpecific.h"	/* Platform specific definitions */

#define true 1
#define false 0
#define null 0  /* using 'null' because nil is predefined in Think C */
#ifdef SQUEAK_BUILTIN_PLUGIN
# undef EXPORT
# define EXPORT(returnType) static returnType
#endif

#include "sqMemoryAccess.h"


/*** Function Prototypes ***/
EXPORT(const char*) getModuleName(void);
static sqInt initialiseModule(void);
EXPORT(sqInt) primitiveCallbackLeave(void);
EXPORT(sqInt) primitiveGetAddressFromEntryPointString(void);
EXPORT(sqInt) primitiveGetAutoReleasePool(void);
EXPORT(sqInt) primitiveGetClass(void);
EXPORT(sqInt) primitiveGetDescription(void);
EXPORT(sqInt) primitiveGetMethodSignatureForSelector(void);
EXPORT(sqInt) primitiveGetNSStringForString(void);
EXPORT(sqInt) primitiveGetObjCClassForString(void);
EXPORT(sqInt) primitiveGetSelectorForString(void);
EXPORT(sqInt) primitiveGetSuperClass(void);
EXPORT(sqInt) primitiveIsEqual(void);
EXPORT(sqInt) primitiveMethodSignatureGetArgumentType(void);
EXPORT(sqInt) primitiveMethodSignatureGetMethodReturnLength(void);
EXPORT(sqInt) primitiveMethodSignatureGetNumberOfArguments(void);
EXPORT(sqInt) primitiveMethodSignatureGetReturnType(void);
EXPORT(sqInt) primitiveNSInvocationCalloc(void);
EXPORT(sqInt) primitiveNSInvocationFree(void);
EXPORT(sqInt) primitiveNSInvocationGetArgument(void);
EXPORT(sqInt) primitiveNSInvocationGetCharPointerType(void);
EXPORT(sqInt) primitiveNSInvocationGetClassType(void);
EXPORT(sqInt) primitiveNSInvocationGetCType(void);
EXPORT(sqInt) primitiveNSInvocationGetDoubleType(void);
EXPORT(sqInt) primitiveNSInvocationGetFloatType(void);
EXPORT(sqInt) primitiveNSInvocationGetIntType(void);
EXPORT(sqInt) primitiveNSInvocationGetLongLongType(void);
EXPORT(sqInt) primitiveNSInvocationGetLongType(void);
EXPORT(sqInt) primitiveNSInvocationGetObjectType(void);
EXPORT(sqInt) primitiveNSInvocationGetReturnValue(void);
EXPORT(sqInt) primitiveNSInvocationGetSelectorType(void);
EXPORT(sqInt) primitiveNSInvocationGetShortType(void);
EXPORT(sqInt) primitiveNSInvocationGetStructureType(void);
EXPORT(sqInt) primitiveNSInvocationMalloc(void);
EXPORT(sqInt) primitiveNSInvocationSetCType(void);
EXPORT(sqInt) primitiveNSInvocationSetDoubleType(void);
EXPORT(sqInt) primitiveNSInvocationSetFloatType(void);
EXPORT(sqInt) primitiveNSInvocationSetIntType(void);
EXPORT(sqInt) primitiveNSInvocationSetLongLongType(void);
EXPORT(sqInt) primitiveNSInvocationSetLongType(void);
EXPORT(sqInt) primitiveNSInvocationSetPointerType(void);
EXPORT(sqInt) primitiveNSInvocationSetRetained(void);
EXPORT(sqInt) primitiveNSInvocationSetSelector(void);
EXPORT(sqInt) primitiveNSInvocationSetShortType(void);
EXPORT(sqInt) primitiveNSInvocationSetStringType(void);
EXPORT(sqInt) primitiveNSInvocationSetStructureType(void);
EXPORT(sqInt) primitiveNSInvocationSetVoidPointerType(void);
EXPORT(sqInt) primitiveNSInvocationWithMethodSignature(void);
EXPORT(sqInt) primitiveNSLog(void);
EXPORT(sqInt) primitiveNSStringToUTF8(void);
EXPORT(sqInt) primitivePerformSelector(void);
EXPORT(sqInt) primitivePerformSelectorOnMainThreadWithWaitTilDone(void);
EXPORT(sqInt) primitivePerformSelectorWith(void);
EXPORT(sqInt) primitivePerformSelectorWithWith(void);
EXPORT(sqInt) primitiveSELGetName(void);
EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
static sqInt shutdownModule(void);
static sqInt sqAssert(sqInt aBool);
static sqInt stringFromCString(const char *aCString);


/*** Variables ***/

#if !defined(SQUEAK_BUILTIN_PLUGIN)
static void * (*arrayValueOf)(sqInt oop);
static sqInt (*booleanValueOf)(sqInt obj);
static sqInt (*byteSizeOf)(sqInt oop);
static sqInt (*callbackLeave)(sqInt cbID);
static sqInt (*classByteArray)(void);
static sqInt (*classCharacter)(void);
static sqInt (*classString)(void);
static sqInt (*failed)(void);
static sqInt (*falseObject)(void);
static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
static void * (*firstIndexableField)(sqInt oop);
static sqInt (*floatObjectOf)(double  aFloat);
static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size);
static sqInt (*isBytes)(sqInt oop);
static sqInt (*pop)(sqInt nItems);
static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
static sqInt (*positive32BitIntegerFor)(unsigned int integerValue);
static sqInt (*positive64BitIntegerFor)(usqLong integerValue);
static usqLong (*positive64BitValueOf)(sqInt oop);
static sqInt (*signed32BitIntegerFor)(sqInt integerValue);
static sqInt (*signed64BitIntegerFor)(sqLong integerValue);
static sqLong (*signed64BitValueOf)(sqInt oop);
static sqInt (*slotSizeOf)(sqInt oop);
static double (*stackFloatValue)(sqInt offset);
static sqInt (*stackIntegerValue)(sqInt offset);
static sqInt (*stackValue)(sqInt offset);
static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
static sqInt (*success)(sqInt aBoolean);
static sqInt (*trueObject)(void);
#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
extern void * arrayValueOf(sqInt oop);
extern sqInt booleanValueOf(sqInt obj);
extern sqInt byteSizeOf(sqInt oop);
extern sqInt callbackLeave(sqInt cbID);
extern sqInt classByteArray(void);
extern sqInt classCharacter(void);
extern sqInt classString(void);
extern sqInt failed(void);
extern sqInt falseObject(void);
extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
extern void * firstIndexableField(sqInt oop);
extern sqInt floatObjectOf(double  aFloat);
extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size);
extern sqInt isBytes(sqInt oop);
extern sqInt pop(sqInt nItems);
extern sqInt popthenPush(sqInt nItems, sqInt oop);
extern sqInt positive32BitIntegerFor(unsigned int integerValue);
extern sqInt positive64BitIntegerFor(usqLong integerValue);
extern usqLong positive64BitValueOf(sqInt oop);
extern sqInt signed32BitIntegerFor(sqInt integerValue);
extern sqInt signed64BitIntegerFor(sqLong integerValue);
extern sqLong signed64BitValueOf(sqInt oop);
extern sqInt slotSizeOf(sqInt oop);
extern double stackFloatValue(sqInt offset);
extern sqInt stackIntegerValue(sqInt offset);
extern sqInt stackValue(sqInt offset);
extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
extern sqInt success(sqInt aBoolean);
extern sqInt trueObject(void);
extern
#endif
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
	"ObjectiveCPlugin ObjectiveC-Plugin-John M McIntosh.20 (i)"
#else
	"ObjectiveCPlugin ObjectiveC-Plugin-John M McIntosh.20 (e)"
#endif
;



/*	Note: This is hardcoded so it can be run from Squeak.
	The module name is used for validating a module *after*
	it is loaded to check if it does really contain the module
	we're thinking it contains. This is important! */

	/* InterpreterPlugin>>#getModuleName */
EXPORT(const char*)
getModuleName(void)
{
	return moduleName;
}


/*	Initialise the module */

	/* ObjectiveCPlugin>>#initialiseModule */
static sqInt
initialiseModule(void)
{
	return 1;
}

	/* ObjectiveCPlugin>>#primitiveCallbackLeave: */
EXPORT(sqInt)
primitiveCallbackLeave(void)
{
	sqInt aNumber;

	aNumber = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	if (aNumber == 0) {
if (failed()) {
			return null;
		}
		pop(1);
		return null;
	}
	callbackLeave(aNumber);
	if (failed()) {
		return null;
	}
	pop(1);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetAddressFromEntryPointString: */
EXPORT(sqInt)
primitiveGetAddressFromEntryPointString(void)
{
	char *aEntryPointName;
	char entryPointName[256];
	sqInt entryPointNameLength;
	void * fn;
	sqInt _return_value;

	success(isBytes(stackValue(0)));
	aEntryPointName = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	entryPointNameLength = slotSizeOf(((sqInt)(long)(aEntryPointName) - BaseHeaderSize));
	if (entryPointNameLength > 0xFF) {
if (failed()) {
			return null;
		}
		_return_value = positive64BitIntegerFor(0);
		if (failed()) {
			return null;
		}
		popthenPush(2, _return_value);
		return null;
	}
	strlcpy(entryPointName, aEntryPointName, entryPointNameLength + 1);
	fn = dlsym(-2, entryPointName);
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) fn));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetAutoReleasePool */
EXPORT(sqInt)
primitiveGetAutoReleasePool(void)
{
	NSAutoreleasePool * pool;
	sqInt _return_value;

	pool = null;
	    NS_DURING;
	pool = [NSAutoreleasePool new];
	    NS_HANDLER 
		pool = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) pool));
	if (failed()) {
		return null;
	}
	popthenPush(1, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetClass: */
EXPORT(sqInt)
primitiveGetClass(void)
{
	sqInt aClassOrInstanceOop;
	Class classObject;
	id classOrInstanceObject;
	sqInt _return_value;

	aClassOrInstanceOop = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	classObject = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	classObject = [classOrInstanceObject class];
	    NS_HANDLER 
		classObject = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) classObject));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetDescription: */
EXPORT(sqInt)
primitiveGetDescription(void)
{
	sqInt aClassOrInstanceOop;
	id classOrInstanceObject;
	sqInt len;
	sqInt newString;
	NSString* nsStringObject;
	const char * utf8String;
	sqInt utf8StringOop;

	nsStringObject = 0;
	aClassOrInstanceOop = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	utf8String = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	nsStringObject = [classOrInstanceObject description];
				utf8String = [nsStringObject UTF8String];
	    NS_HANDLER 
		utf8String = nil;
	    NS_ENDHANDLER;
	if (!utf8String) {
success(0);
		return null;
	}
	/* begin stringFromCString: */
	len = ((sqInt) (strlen(utf8String)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), utf8String, len);
	utf8StringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(2, utf8StringOop);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetMethodSignatureForSelector:on: */
EXPORT(sqInt)
primitiveGetMethodSignatureForSelector(void)
{
	sqInt aClassOrInstanceOop;
	sqInt aSelectorOop;
	id classOrInstanceObject;
	NSMethodSignature * messageSignatureObject;
	SEL selectorObject;
	sqInt _return_value;

	aSelectorOop = stackValue(1);
	aClassOrInstanceOop = stackValue(0);
	if (failed()) {
		return null;
	}
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	messageSignatureObject = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	messageSignatureObject = [classOrInstanceObject methodSignatureForSelector: selectorObject];
	    NS_HANDLER 
	messageSignatureObject = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) messageSignatureObject));
	if (failed()) {
		return null;
	}
	popthenPush(3, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetNSStringForString:encoding: */
EXPORT(sqInt)
primitiveGetNSStringForString(void)
{
	sqInt anEncoding;
	char* aString;
	NSString* aStringAsNSString;
	sqInt aStringOop;
	NSUInteger encoding;
	sqInt stringLength;
	sqInt _return_value;

	aStringOop = stackValue(1);
	anEncoding = stackValue(0);
	if (failed()) {
		return null;
	}
	encoding = ((NSUInteger) (positive64BitValueOf(anEncoding)));
	aString = firstIndexableField(aStringOop);
	stringLength = byteSizeOf(aStringOop);
	aStringAsNSString = 0;
	    NS_DURING;
	aStringAsNSString = [[NSString alloc] initWithBytes: aString length: stringLength encoding: encoding];
	    NS_HANDLER 
				aStringAsNSString = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) aStringAsNSString));
	if (failed()) {
		return null;
	}
	popthenPush(3, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetObjCClassForString: */
EXPORT(sqInt)
primitiveGetObjCClassForString(void)
{
	char *aClassName;
	sqInt classNameLength;
	NSString* classNameNSString;
	Class classObject;
	sqInt _return_value;

	success(isBytes(stackValue(0)));
	aClassName = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	classNameLength = slotSizeOf(((sqInt)(long)(aClassName) - BaseHeaderSize));
	classNameNSString = [[NSString alloc] initWithBytes: aClassName length: classNameLength encoding: NSUTF8StringEncoding];
	    NS_DURING;
	classObject = NSClassFromString(classNameNSString);
	    NS_HANDLER 
	classObject = nil;
	    NS_ENDHANDLER;
	[classNameNSString release];
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) classObject));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetSelectorFromString: */
EXPORT(sqInt)
primitiveGetSelectorForString(void)
{
	char *aSelectorName;
	sqInt selectorLength;
	NSString * selectorNSString;
	SEL selectorObject;
	sqInt _return_value;

	success(isBytes(stackValue(0)));
	aSelectorName = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	selectorLength = slotSizeOf(((sqInt)(long)(aSelectorName) - BaseHeaderSize));
	selectorNSString = [[NSString alloc] initWithBytes: aSelectorName length: selectorLength encoding: NSUTF8StringEncoding];
	    NS_DURING;
	selectorObject = NSSelectorFromString(selectorNSString);
	    NS_HANDLER 
	selectorObject = nil;
	    NS_ENDHANDLER;
	[selectorNSString release];
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) selectorObject));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveGetSuperClass: */
EXPORT(sqInt)
primitiveGetSuperClass(void)
{
	sqInt aClassOrInstanceOop;
	Class classObject;
	id classOrInstanceObject;
	sqInt _return_value;

	aClassOrInstanceOop = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	classObject = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	classObject = [classOrInstanceObject superclass];
	    NS_HANDLER 
		classObject = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) classObject));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveIsEqual:to: */
EXPORT(sqInt)
primitiveIsEqual(void)
{
	sqInt anOop1;
	sqInt anOop2;
	id oop1;
	id oop2;
	BOOL result;
	sqInt _return_value;

	anOop1 = stackValue(1);
	anOop2 = stackValue(0);
	if (failed()) {
		return null;
	}
	oop1 = ((id) (positive64BitValueOf(anOop1)));
	oop2 = ((id) (positive64BitValueOf(anOop2)));
	if (failed()) {
		return null;
	}
	result = 0;
	    NS_DURING;
	result = [oop1 isEqual: oop2];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = (((result == 1)) ? trueObject() : falseObject());
	if (failed()) {
		return null;
	}
	popthenPush(3, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveMethodSignatureGetArgumentType:atIndex: */
EXPORT(sqInt)
primitiveMethodSignatureGetArgumentType(void)
{
	sqInt aIndexNumber;
	sqInt aMethodSignatureOop;
	sqInt len;
	sqInt newString;
	NSMethodSignature* nsMethodSignatureObject;
	const char * string;
	sqInt stringOop;

	aMethodSignatureOop = stackValue(1);
	aIndexNumber = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	nsMethodSignatureObject = ((NSMethodSignature *) (positive64BitValueOf(aMethodSignatureOop)));
	string = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	string = [nsMethodSignatureObject getArgumentTypeAtIndex: aIndexNumber];
	    NS_HANDLER 
		string = nil;
	    NS_ENDHANDLER;
	if (!string) {
success(0);
		return null;
	}
	/* begin stringFromCString: */
	len = ((sqInt) (strlen(string)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), string, len);
	stringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(3, stringOop);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveMethodSignatureGetMethodReturnLength: */
EXPORT(sqInt)
primitiveMethodSignatureGetMethodReturnLength(void)
{
	sqInt aMethodSignatureOop;
	NSUInteger methodReturnLength;
	NSMethodSignature* nsMethodSignatureObject;
	sqInt _return_value;

	aMethodSignatureOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsMethodSignatureObject = ((NSMethodSignature *) (positive64BitValueOf(aMethodSignatureOop)));
	methodReturnLength = 0;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	methodReturnLength = [nsMethodSignatureObject methodReturnLength];
	    NS_HANDLER 
		methodReturnLength = 0xFFFFFFFF;
	    NS_ENDHANDLER;
	if (methodReturnLength == 0xFFFFFFFFU) {
success(0);
		return null;
	}
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) methodReturnLength));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveMethodSignatureGetNumberOfArguments: */
EXPORT(sqInt)
primitiveMethodSignatureGetNumberOfArguments(void)
{
	sqInt aMethodSignatureOop;
	NSMethodSignature* nsMethodSignatureObject;
	NSUInteger numberOfArguments;
	sqInt _return_value;

	aMethodSignatureOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsMethodSignatureObject = ((NSMethodSignature *) (positive64BitValueOf(aMethodSignatureOop)));
	numberOfArguments = 9999999;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	numberOfArguments = [nsMethodSignatureObject numberOfArguments];
	    NS_HANDLER 
		numberOfArguments = 9999999;
	    NS_ENDHANDLER;
	if (numberOfArguments == 9999999) {
success(0);
		return null;
	}
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) numberOfArguments));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveMethodSignatureGetReturnType: */
EXPORT(sqInt)
primitiveMethodSignatureGetReturnType(void)
{
	sqInt aMethodSignatureOop;
	sqInt len;
	sqInt newString;
	NSMethodSignature* nsMethodSignatureObject;
	const char * string;
	sqInt stringOop;

	aMethodSignatureOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsMethodSignatureObject = ((NSMethodSignature *) (positive64BitValueOf(aMethodSignatureOop)));
	string = null;
	if (failed()) {
		return null;
	}
	    NS_DURING;
	string = [nsMethodSignatureObject methodReturnType];
	    NS_HANDLER 
		string = nil;
	    NS_ENDHANDLER;
	if (!string) {
success(0);
		return null;
	}
	/* begin stringFromCString: */
	len = ((sqInt) (strlen(string)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), string, len);
	stringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(2, stringOop);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationCalloc: */
EXPORT(sqInt)
primitiveNSInvocationCalloc(void)
{
	void* pointer;
	sqInt size;
	sqInt _return_value;

	pointer = 0;
	size = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	pointer = calloc(size,1);
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) pointer));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationFree: */
EXPORT(sqInt)
primitiveNSInvocationFree(void)
{
	sqInt pointer;
	void* pointerToFree;

	pointer = stackValue(0);
	if (failed()) {
		return null;
	}
	pointerToFree = ((void *) (positive64BitValueOf(pointer)));
	if (failed()) {
		return null;
	}
	free((void*)pointerToFree);
	if (failed()) {
		return null;
	}
	pop(1);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetArgument:buffer:atIndex: */
EXPORT(sqInt)
primitiveNSInvocationGetArgument(void)
{
	sqInt aMethodSignatureOop;
	void * buffer;
	sqInt bufferOop;
	sqInt index;
	NSInvocation* nsInvocationInstance;

	aMethodSignatureOop = stackValue(2);
	bufferOop = stackValue(1);
	index = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	buffer = ((void *) (positive64BitValueOf(bufferOop)));
	if (failed()) {
		return null;
	}
	    NS_DURING;
	[nsInvocationInstance getArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	pop(3);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetCharPointerType: */
EXPORT(sqInt)
primitiveNSInvocationGetCharPointerType(void)
{
	char * buffer;
	sqInt bufferAddressOop;
	char ** bufferPointer;
	sqInt len;
	sqInt newString;
	sqInt stringOop;

	buffer = 0;
	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	bufferPointer = ((char **) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	buffer = *bufferPointer;
	/* begin stringFromCString: */
	len = ((sqInt) (strlen(buffer)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), buffer, len);
	stringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(2, stringOop);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetClassType: */
EXPORT(sqInt)
primitiveNSInvocationGetClassType(void)
{
	Class * buffer;
	sqInt bufferAddressOop;
	Class data;
	sqInt _return_value;

	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((Class *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	data = *buffer;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) data));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetCType:signed: */
EXPORT(sqInt)
primitiveNSInvocationGetCType(void)
{
	char * buffer;
	sqInt bufferAddressOop;
	sqInt newCharacterOop;
	sqInt signedBoolean;
	char targetOopData;

	bufferAddressOop = stackValue(1);
	signedBoolean = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	buffer = ((char *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	newCharacterOop = instantiateClassindexableSize(classCharacter(), 1);
	targetOopData = 0;
	if (signedBoolean) {
targetOopData = *(char*) buffer;
		storeIntegerofObjectwithValue(0, newCharacterOop, ((sqInt) targetOopData));
	}
	else {
targetOopData = *(char*) buffer;
		storeIntegerofObjectwithValue(0, newCharacterOop, ((usqInt) targetOopData));
	}
	if (failed()) {
		return null;
	}
	popthenPush(3, newCharacterOop);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetDoubleType: */
EXPORT(sqInt)
primitiveNSInvocationGetDoubleType(void)
{
	double * buffer;
	sqInt bufferAddressOop;
	double data;
	sqInt _return_value;

	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((double *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	data = *buffer;
	if (failed()) {
		return null;
	}
	_return_value = floatObjectOf(data);
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetFloatType: */
EXPORT(sqInt)
primitiveNSInvocationGetFloatType(void)
{
	float * buffer;
	sqInt bufferAddressOop;
	float data;
	sqInt _return_value;

	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((float *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	data = *buffer;
	if (failed()) {
		return null;
	}
	_return_value = floatObjectOf(data);
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetIntType:signed: */
EXPORT(sqInt)
primitiveNSInvocationGetIntType(void)
{
	int * buffer;
	sqInt bufferAddressOop;
	int data;
	sqInt signedBoolean;
	unsigned int unsignedData;
	sqInt _return_value;

	bufferAddressOop = stackValue(1);
	signedBoolean = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	buffer = ((int *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	unsignedData = (data = 0);
	if (signedBoolean) {
data = *buffer;
		if (failed()) {
			return null;
		}
		_return_value = signed32BitIntegerFor(((sqInt) data));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
	else {
unsignedData = *(unsigned int *)buffer;
		if (failed()) {
			return null;
		}
		_return_value = positive32BitIntegerFor(((usqInt) unsignedData));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetLongLongType:signed: */
EXPORT(sqInt)
primitiveNSInvocationGetLongLongType(void)
{
	long long * buffer;
	sqInt bufferAddressOop;
	long long data;
	sqInt signedBoolean;
	unsigned long long unsignedData;
	sqInt _return_value;

	bufferAddressOop = stackValue(1);
	signedBoolean = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	buffer = ((long long *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	unsignedData = (data = 0);
	if (signedBoolean) {
data = *buffer;
		if (failed()) {
			return null;
		}
		_return_value = signed64BitIntegerFor(((long long) data));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
	else {
unsignedData = * (unsigned long long*) buffer;
		if (failed()) {
			return null;
		}
		_return_value = positive64BitIntegerFor(((unsigned long long) unsignedData));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetLongType:signed: */
EXPORT(sqInt)
primitiveNSInvocationGetLongType(void)
{
	long * buffer;
	sqInt bufferAddressOop;
	long data;
	sqInt signedBoolean;
	unsigned long unsignedData;
	sqInt _return_value;

	bufferAddressOop = stackValue(1);
	signedBoolean = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	buffer = ((long *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	unsignedData = (data = 0);
	if (signedBoolean) {
data = *buffer;
		if (failed()) {
			return null;
		}
		_return_value = signed64BitIntegerFor(((sqInt) data));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
	else {
unsignedData = *(unsigned long *) buffer;
		if (failed()) {
			return null;
		}
		_return_value = positive64BitIntegerFor(((usqInt) unsignedData));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetObjectType: */
EXPORT(sqInt)
primitiveNSInvocationGetObjectType(void)
{
	id * buffer;
	sqInt bufferAddressOop;
	id data;
	sqInt _return_value;

	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((id *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	data = *buffer;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) data));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetReturnValue:on: */
EXPORT(sqInt)
primitiveNSInvocationGetReturnValue(void)
{
	sqInt aNSinvokeOops;
	void * buffer;
	sqInt bufferAddressOop;
	NSInvocation *nsInvoke;

	bufferAddressOop = stackValue(1);
	aNSinvokeOops = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((void *) (positive64BitValueOf(bufferAddressOop)));
	nsInvoke = ((NSInvocation *) (positive64BitValueOf(aNSinvokeOops)));
	if (failed()) {
		return null;
	}
	    NS_DURING;
	[nsInvoke getReturnValue: buffer];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	pop(2);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetSelectorType: */
EXPORT(sqInt)
primitiveNSInvocationGetSelectorType(void)
{
	SEL * buffer;
	sqInt bufferAddressOop;
	SEL data;
	sqInt _return_value;

	bufferAddressOop = stackValue(0);
	if (failed()) {
		return null;
	}
	buffer = ((SEL *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	data = *buffer;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) data));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetShortType:signed: */
EXPORT(sqInt)
primitiveNSInvocationGetShortType(void)
{
	short * buffer;
	sqInt bufferAddressOop;
	short data;
	sqInt signedBoolean;
	unsigned short unsignedData;
	sqInt _return_value;

	bufferAddressOop = stackValue(1);
	signedBoolean = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	buffer = ((short *) (positive64BitValueOf(bufferAddressOop)));
	unsignedData = (data = 0);
	if (failed()) {
		return null;
	}
	if (signedBoolean) {
data = *buffer;
		if (failed()) {
			return null;
		}
		_return_value = signed32BitIntegerFor(((sqInt) data));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
	else {
unsignedData = *(unsigned short *)buffer;
		if (failed()) {
			return null;
		}
		_return_value = positive32BitIntegerFor(((usqInt) unsignedData));
		if (failed()) {
			return null;
		}
		popthenPush(3, _return_value);
		return null;
	}
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationGetStructureType:length: */
EXPORT(sqInt)
primitiveNSInvocationGetStructureType(void)
{
	sqInt bufferAddressOop;
	char ** bufferPointer;
	sqInt length;
	sqInt newByteArray;

	bufferAddressOop = stackValue(1);
	length = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	bufferPointer = ((void *) (positive64BitValueOf(bufferAddressOop)));
	if (failed()) {
		return null;
	}
	newByteArray = instantiateClassindexableSize(classByteArray(), length);
	memcpy(arrayValueOf(newByteArray), bufferPointer, length);
	if (failed()) {
		return null;
	}
	popthenPush(3, newByteArray);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationMalloc: */
EXPORT(sqInt)
primitiveNSInvocationMalloc(void)
{
	void* pointer;
	sqInt size;
	sqInt _return_value;

	pointer = 0;
	size = stackIntegerValue(0);
	if (failed()) {
		return null;
	}
	pointer = malloc(size);
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) pointer));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetCType:signed:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetCType(void)
{
	sqInt aMethodSignatureOop;
	unsigned char aUnsignedValue;
	char aValue;
	void * buffer;
	sqInt index;
	sqInt newCharacterOop;
	NSInvocation* nsInvocationInstance;
	sqInt signedBoolean;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(3);
	signedBoolean = booleanValueOf(stackValue(2));
	index = stackIntegerValue(1);
	newCharacterOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	aValue = fetchIntegerofObject(0, newCharacterOop);
	aUnsignedValue = fetchIntegerofObject(0, newCharacterOop);
	if (signedBoolean) {
buffer = malloc(sizeof(char));
					*(char*) buffer = (char) aValue;
	}
	else {
buffer = malloc(sizeof(unsigned char));
					*(unsigned char*)buffer = (unsigned char) aUnsignedValue;
	}
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetDoubleType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetDoubleType(void)
{
	sqInt aMethodSignatureOop;
	double aValue;
	void * buffer;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	aValue = stackFloatValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	buffer = malloc(sizeof(double));
				*(double*) buffer = (double) aValue;
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetFloatType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetFloatType(void)
{
	sqInt aMethodSignatureOop;
	double aValue;
	void * buffer;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	aValue = stackFloatValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	buffer = malloc(sizeof(float));
				*(float*) buffer = (float) aValue;
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetIntType:signed:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetIntType(void)
{
	sqInt aMethodSignatureOop;
	int aValue;
	void * buffer;
	sqInt index;
	sqInt intValue;
	NSInvocation* nsInvocationInstance;
	sqInt signedBoolean;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(3);
	signedBoolean = booleanValueOf(stackValue(2));
	index = stackIntegerValue(1);
	intValue = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	if (signedBoolean) {
aValue = ((int) (signed64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(int));
						*(int*) buffer = (int) aValue;
	}
	else {
aValue = ((unsigned int) (positive64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(unsigned int));
					*(unsigned int*)buffer = (unsigned int) aValue;
	}
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetLongLongType:signed:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetLongLongType(void)
{
	sqInt aMethodSignatureOop;
	long long aValue;
	void * buffer;
	sqInt index;
	sqInt intValue;
	NSInvocation* nsInvocationInstance;
	sqInt signedBoolean;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(3);
	signedBoolean = booleanValueOf(stackValue(2));
	index = stackIntegerValue(1);
	intValue = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	if (signedBoolean) {
aValue = ((long long) (signed64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(long long));
						*(long long*) buffer = (long long) aValue;
	}
	else {
aValue = ((unsigned long long) (positive64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(unsigned long long));
					*(unsigned long long*)buffer = (unsigned long long) aValue;
	}
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetLongType:signed:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetLongType(void)
{
	sqInt aMethodSignatureOop;
	long aValue;
	void * buffer;
	sqInt index;
	sqInt intValue;
	NSInvocation* nsInvocationInstance;
	sqInt signedBoolean;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(3);
	signedBoolean = booleanValueOf(stackValue(2));
	index = stackIntegerValue(1);
	intValue = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	if (signedBoolean) {
aValue = ((long) (signed64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(long));
						*(long*) buffer = (long) aValue;
	}
	else {
aValue = ((unsigned long) (positive64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(unsigned long));
					*(unsigned long*)buffer = (unsigned long) aValue;
	}
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetPointerType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetPointerType(void)
{
	sqInt aMethodSignatureOop;
	void * aValue;
	void ** buffer;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt pointerValue;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	pointerValue = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	aValue = ((char *) (positive64BitValueOf(pointerValue)));
	if (failed()) {
		return null;
	}
	buffer = malloc(sizeof(void*));
		*buffer = aValue;
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetRetained: */
EXPORT(sqInt)
primitiveNSInvocationSetRetained(void)
{
	sqInt aMethodSignatureOop;
	NSInvocation* nsInvocationInstance;

	aMethodSignatureOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	    NS_DURING;
	[nsInvocationInstance retainArguments];
	    NS_HANDLER;
	success(0);
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	pop(1);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetSelector:target:on: */
EXPORT(sqInt)
primitiveNSInvocationSetSelector(void)
{
	sqInt aNSinvokeOops;
	sqInt aSelectorOop;
	NSInvocation *nsInvoke;
	id object1;
	sqInt object1Oops;
	SEL selectorObject;

	aSelectorOop = stackValue(2);
	object1Oops = stackValue(1);
	aNSinvokeOops = stackValue(0);
	if (failed()) {
		return null;
	}
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	object1 = ((id) (positive64BitValueOf(object1Oops)));
	nsInvoke = ((NSInvocation *) (positive64BitValueOf(aNSinvokeOops)));
	if (failed()) {
		return null;
	}
	    NS_DURING;
	[nsInvoke setSelector: selectorObject];
	[nsInvoke setTarget:  object1];
	    NS_HANDLER;
	success(0);
	if (1) {
if (failed()) {
			return null;
		}
		pop(3);
		return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	pop(3);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetShortType:signed:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetShortType(void)
{
	sqInt aMethodSignatureOop;
	short aValue;
	void * buffer;
	sqInt index;
	sqInt intValue;
	NSInvocation* nsInvocationInstance;
	sqInt signedBoolean;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(3);
	signedBoolean = booleanValueOf(stackValue(2));
	index = stackIntegerValue(1);
	intValue = stackValue(0);
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	if (signedBoolean) {
aValue = ((short) (signed64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(short));
						*(short*) buffer = (short) aValue;
	}
	else {
aValue = ((unsigned short) (positive64BitValueOf(intValue)));
		if (failed()) {
			return null;
		}
		buffer = malloc(sizeof(unsigned short));
					*(unsigned short*)buffer = (unsigned short) aValue;
	}
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetStringType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetStringType(void)
{
	sqInt aMethodSignatureOop;
	char *aValue;
	char * buffer;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt stringSize;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	success(isBytes(stackValue(0)));
	aValue = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	stringSize = slotSizeOf(((sqInt)(long)(aValue) - BaseHeaderSize));
	buffer = malloc(stringSize + 1);
		memcpy(buffer,aValue,stringSize);
		buffer[stringSize] = 0x00;
	    NS_DURING;
	[nsInvocationInstance setArgument: &buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetStructureType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetStructureType(void)
{
	sqInt aMethodSignatureOop;
	char *aValue;
	void * buffer;
	sqInt byteArraySize;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	success(isBytes(stackValue(0)));
	aValue = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	byteArraySize = slotSizeOf(((sqInt)(long)(aValue) - BaseHeaderSize));
	buffer = malloc(byteArraySize);
		memcpy(buffer,aValue,byteArraySize);
	    NS_DURING;
	[nsInvocationInstance setArgument: buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationSetVoidPointerType:index:value: */
EXPORT(sqInt)
primitiveNSInvocationSetVoidPointerType(void)
{
	sqInt aMethodSignatureOop;
	char *aValue;
	void * buffer;
	sqInt byteArraySize;
	sqInt index;
	NSInvocation* nsInvocationInstance;
	sqInt _return_value;

	buffer = 0;
	aMethodSignatureOop = stackValue(2);
	index = stackIntegerValue(1);
	success(isBytes(stackValue(0)));
	aValue = ((char *) (firstIndexableField(stackValue(0))));
	if (failed()) {
		return null;
	}
	nsInvocationInstance = ((NSInvocation *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	byteArraySize = slotSizeOf(((sqInt)(long)(aValue) - BaseHeaderSize));
	buffer = malloc(byteArraySize);
		memcpy(buffer,aValue,byteArraySize);
	    NS_DURING;
	[nsInvocationInstance setArgument: &buffer atIndex: index];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) buffer));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSInvocationWithMethodSignature: */
EXPORT(sqInt)
primitiveNSInvocationWithMethodSignature(void)
{
	sqInt aMethodSignatureOop;
	NSMethodSignature * methodSignatureOop;
	NSInvocation* nsInvocationOops;
	sqInt _return_value;

	aMethodSignatureOop = stackValue(0);
	if (failed()) {
		return null;
	}
	methodSignatureOop = ((NSMethodSignature *) (positive64BitValueOf(aMethodSignatureOop)));
	if (failed()) {
		return null;
	}
	nsInvocationOops = 0;
	    NS_DURING;
	nsInvocationOops = [NSInvocation invocationWithMethodSignature: methodSignatureOop];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) nsInvocationOops));
	if (failed()) {
		return null;
	}
	popthenPush(2, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSLog: */
EXPORT(sqInt)
primitiveNSLog(void)
{
	sqInt aNSStringOOP;
	id oop1;

	aNSStringOOP = stackValue(0);
	if (failed()) {
		return null;
	}
	oop1 = ((id) (positive64BitValueOf(aNSStringOOP)));
	if (failed()) {
		return null;
	}
	NSLog(oop1);
	if (failed()) {
		return null;
	}
	pop(1);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveNSStringToUTF8: */
EXPORT(sqInt)
primitiveNSStringToUTF8(void)
{
	sqInt aNSStringOop;
	sqInt len;
	sqInt newString;
	NSString* nsStringObject;
	const char * utf8String;
	sqInt utf8StringOop;

	aNSStringOop = stackValue(0);
	if (failed()) {
		return null;
	}
	nsStringObject = ((NSString *) (positive64BitValueOf(aNSStringOop)));
	if (failed()) {
		return null;
	}
	utf8String = null;
	    NS_DURING;
	utf8String = [nsStringObject UTF8String];
	    NS_HANDLER 
		utf8String = nil;
	    NS_ENDHANDLER;
	if (!utf8String) {
success(0);
		return null;
	}
	/* begin stringFromCString: */
	len = ((sqInt) (strlen(utf8String)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), utf8String, len);
	utf8StringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(2, utf8StringOop);
	return null;
}


/*	- (id)performSelector:(SEL)aSelector */

	/* ObjectiveCPlugin>>#primitivePerformSelector:on: */
EXPORT(sqInt)
primitivePerformSelector(void)
{
	sqInt aClassOrInstanceOop;
	sqInt aSelectorOop;
	id classOrInstanceObject;
	id returnValue;
	SEL selectorObject;
	sqInt _return_value;

	aSelectorOop = stackValue(1);
	aClassOrInstanceOop = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	if (failed()) {
		return null;
	}
	returnValue = null;
	    NS_DURING;
	returnValue = [classOrInstanceObject performSelector: selectorObject];
	    NS_HANDLER 
		returnValue = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) returnValue));
	if (failed()) {
		return null;
	}
	popthenPush(3, _return_value);
	return null;
}


/*	- (id)performSelector:(SEL)aSelector */

	/* ObjectiveCPlugin>>#primitivePerformSelectorOnMainThreadWithWaitTilDone:on:with:returnValue:waitTilDone: */
EXPORT(sqInt)
primitivePerformSelectorOnMainThreadWithWaitTilDone(void)
{
	sqInt aClassOrInstanceOop;
	sqInt anObject1;
	sqInt aReturnValueAddress;
	sqInt aSelectorOop;
	id classOrInstanceObject;
	sqInt doneFlag;
	id object1;
	void *returnAddress;
	SEL selectorObject;

	aSelectorOop = stackValue(4);
	aClassOrInstanceOop = stackValue(3);
	anObject1 = stackValue(2);
	aReturnValueAddress = stackValue(1);
	doneFlag = booleanValueOf(stackValue(0));
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	object1 = ((id) (positive64BitValueOf(anObject1)));
	returnAddress = ((void *) (positive64BitValueOf(aReturnValueAddress)));
	if (failed()) {
		return null;
	}
	    NS_DURING;
	[classOrInstanceObject performSelectorOnMainThread: selectorObject withObject: object1 waitUntilDone: doneFlag  ];
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	    NS_DURING;
	if (returnAddress != 0) {
[classOrInstanceObject getReturnValue: returnAddress];
	}
	    NS_HANDLER;
	success(0);
	if (1) {
return null;
	}
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	pop(5);
	return null;
}


/*	- (id)performSelector:(SEL)aSelector */

	/* ObjectiveCPlugin>>#primitivePerformSelectorWith:on:with: */
EXPORT(sqInt)
primitivePerformSelectorWith(void)
{
	sqInt aClassOrInstanceOop;
	sqInt anObject1;
	sqInt aSelectorOop;
	id classOrInstanceObject;
	id object1;
	id returnValue;
	SEL selectorObject;
	sqInt _return_value;

	aSelectorOop = stackValue(2);
	aClassOrInstanceOop = stackValue(1);
	anObject1 = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	object1 = ((id) (positive64BitValueOf(anObject1)));
	if (failed()) {
		return null;
	}
	returnValue = null;
	    NS_DURING;
	returnValue = [classOrInstanceObject performSelector: selectorObject withObject: object1];
	    NS_HANDLER 
		returnValue = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) returnValue));
	if (failed()) {
		return null;
	}
	popthenPush(4, _return_value);
	return null;
}


/*	- (id)performSelector:(SEL)aSelector */

	/* ObjectiveCPlugin>>#primitivePerformSelectorWithWith:on:with:with: */
EXPORT(sqInt)
primitivePerformSelectorWithWith(void)
{
	sqInt aClassOrInstanceOop;
	sqInt anObject1;
	sqInt anObject2;
	sqInt aSelectorOop;
	id classOrInstanceObject;
	id object1;
	id object2;
	id returnValue;
	SEL selectorObject;
	sqInt _return_value;

	aSelectorOop = stackValue(3);
	aClassOrInstanceOop = stackValue(2);
	anObject1 = stackValue(1);
	anObject2 = stackValue(0);
	if (failed()) {
		return null;
	}
	classOrInstanceObject = ((id) (positive64BitValueOf(aClassOrInstanceOop)));
	selectorObject = ((SEL) (positive64BitValueOf(aSelectorOop)));
	object1 = ((id) (positive64BitValueOf(anObject1)));
	object2 = ((id) (positive64BitValueOf(anObject2)));
	if (failed()) {
		return null;
	}
	returnValue = null;
	    NS_DURING;
	returnValue = [classOrInstanceObject performSelector: selectorObject withObject: object1 withObject: object2 ];
	    NS_HANDLER 
		returnValue = nil;
	    NS_ENDHANDLER;
	if (failed()) {
		return null;
	}
	_return_value = positive64BitIntegerFor(((usqInt) returnValue));
	if (failed()) {
		return null;
	}
	popthenPush(5, _return_value);
	return null;
}

	/* ObjectiveCPlugin>>#primitiveSELGetName: */
EXPORT(sqInt)
primitiveSELGetName(void)
{
	const char *aCString;
	sqInt aSEL;
	SEL bufferPointer;
	sqInt len;
	sqInt newString;
	sqInt stringOop;

	aSEL = stackValue(0);
	if (failed()) {
		return null;
	}
	
#define selgetName sel_getName
;
	bufferPointer = ((SEL) (positive64BitValueOf(aSEL)));
	if (failed()) {
		return null;
	}
	/* begin stringFromCString: */
	aCString = ((char *) (selgetName(bufferPointer)));
	len = ((sqInt) (strlen(aCString)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), aCString, len);
	stringOop = newString;
	if (failed()) {
		return null;
	}
	popthenPush(2, stringOop);
	return null;
}


/*	Note: This is coded so that it can be run in Squeak. */

	/* InterpreterPlugin>>#setInterpreter: */
EXPORT(sqInt)
setInterpreter(struct VirtualMachine*anInterpreter)
{
	sqInt ok;

	interpreterProxy = anInterpreter;
	ok = ((interpreterProxy->majorVersion()) == (VM_PROXY_MAJOR))
	 && ((interpreterProxy->minorVersion()) >= (VM_PROXY_MINOR));
	if (ok) {

#if !defined(SQUEAK_BUILTIN_PLUGIN)
		arrayValueOf = interpreterProxy->arrayValueOf;
		booleanValueOf = interpreterProxy->booleanValueOf;
		byteSizeOf = interpreterProxy->byteSizeOf;
		callbackLeave = interpreterProxy->callbackLeave;
		classByteArray = interpreterProxy->classByteArray;
		classCharacter = interpreterProxy->classCharacter;
		classString = interpreterProxy->classString;
		failed = interpreterProxy->failed;
		falseObject = interpreterProxy->falseObject;
		fetchIntegerofObject = interpreterProxy->fetchIntegerofObject;
		firstIndexableField = interpreterProxy->firstIndexableField;
		floatObjectOf = interpreterProxy->floatObjectOf;
		instantiateClassindexableSize = interpreterProxy->instantiateClassindexableSize;
		isBytes = interpreterProxy->isBytes;
		pop = interpreterProxy->pop;
		popthenPush = interpreterProxy->popthenPush;
		positive32BitIntegerFor = interpreterProxy->positive32BitIntegerFor;
		positive64BitIntegerFor = interpreterProxy->positive64BitIntegerFor;
		positive64BitValueOf = interpreterProxy->positive64BitValueOf;
		signed32BitIntegerFor = interpreterProxy->signed32BitIntegerFor;
		signed64BitIntegerFor = interpreterProxy->signed64BitIntegerFor;
		signed64BitValueOf = interpreterProxy->signed64BitValueOf;
		slotSizeOf = interpreterProxy->slotSizeOf;
		stackFloatValue = interpreterProxy->stackFloatValue;
		stackIntegerValue = interpreterProxy->stackIntegerValue;
		stackValue = interpreterProxy->stackValue;
		storeIntegerofObjectwithValue = interpreterProxy->storeIntegerofObjectwithValue;
		success = interpreterProxy->success;
		trueObject = interpreterProxy->trueObject;
#endif /* !defined(SQUEAK_BUILTIN_PLUGIN) */
	}
	return ok;
}

	/* ObjectiveCPlugin>>#shutdownModule */
static sqInt
shutdownModule(void)
{
	return 1;
}

	/* SmartSyntaxInterpreterPlugin>>#sqAssert: */
static sqInt
sqAssert(sqInt aBool)
{
	/* missing DebugCode */;
	return aBool;
}


/*	Answer a new String copied from a null-terminated C string.
	Caution: This may invoke the garbage collector. */

	/* ObjectiveCPlugin>>#stringFromCString: */
static sqInt
stringFromCString(const char *aCString)
{
	sqInt len;
	sqInt newString;

	len = ((sqInt) (strlen(aCString)));
	newString = instantiateClassindexableSize(classString(), len);
	strncpy(arrayValueOf(newString), aCString, len);
	return newString;
}


#ifdef SQUEAK_BUILTIN_PLUGIN

static char _m[] = "ObjectiveCPlugin";
void* ObjectiveCPlugin_exports[][3] = {
	{(void*)_m, "getModuleName", (void*)getModuleName},
	{(void*)_m, "primitiveCallbackLeave\000\000", (void*)primitiveCallbackLeave},
	{(void*)_m, "primitiveGetAddressFromEntryPointString\000\377", (void*)primitiveGetAddressFromEntryPointString},
	{(void*)_m, "primitiveGetAutoReleasePool\000\377", (void*)primitiveGetAutoReleasePool},
	{(void*)_m, "primitiveGetClass\000\000", (void*)primitiveGetClass},
	{(void*)_m, "primitiveGetDescription\000\000", (void*)primitiveGetDescription},
	{(void*)_m, "primitiveGetMethodSignatureForSelector\000\000", (void*)primitiveGetMethodSignatureForSelector},
	{(void*)_m, "primitiveGetNSStringForString\000\001", (void*)primitiveGetNSStringForString},
	{(void*)_m, "primitiveGetObjCClassForString\000\377", (void*)primitiveGetObjCClassForString},
	{(void*)_m, "primitiveGetSelectorForString\000\377", (void*)primitiveGetSelectorForString},
	{(void*)_m, "primitiveGetSuperClass\000\000", (void*)primitiveGetSuperClass},
	{(void*)_m, "primitiveIsEqual\000\000", (void*)primitiveIsEqual},
	{(void*)_m, "primitiveMethodSignatureGetArgumentType\000\000", (void*)primitiveMethodSignatureGetArgumentType},
	{(void*)_m, "primitiveMethodSignatureGetMethodReturnLength\000\000", (void*)primitiveMethodSignatureGetMethodReturnLength},
	{(void*)_m, "primitiveMethodSignatureGetNumberOfArguments\000\000", (void*)primitiveMethodSignatureGetNumberOfArguments},
	{(void*)_m, "primitiveMethodSignatureGetReturnType\000\000", (void*)primitiveMethodSignatureGetReturnType},
	{(void*)_m, "primitiveNSInvocationCalloc\000\000", (void*)primitiveNSInvocationCalloc},
	{(void*)_m, "primitiveNSInvocationFree\000\000", (void*)primitiveNSInvocationFree},
	{(void*)_m, "primitiveNSInvocationGetArgument\000\000", (void*)primitiveNSInvocationGetArgument},
	{(void*)_m, "primitiveNSInvocationGetCharPointerType\000\000", (void*)primitiveNSInvocationGetCharPointerType},
	{(void*)_m, "primitiveNSInvocationGetClassType\000\000", (void*)primitiveNSInvocationGetClassType},
	{(void*)_m, "primitiveNSInvocationGetCType\000\000", (void*)primitiveNSInvocationGetCType},
	{(void*)_m, "primitiveNSInvocationGetDoubleType\000\000", (void*)primitiveNSInvocationGetDoubleType},
	{(void*)_m, "primitiveNSInvocationGetFloatType\000\000", (void*)primitiveNSInvocationGetFloatType},
	{(void*)_m, "primitiveNSInvocationGetIntType\000\000", (void*)primitiveNSInvocationGetIntType},
	{(void*)_m, "primitiveNSInvocationGetLongLongType\000\000", (void*)primitiveNSInvocationGetLongLongType},
	{(void*)_m, "primitiveNSInvocationGetLongType\000\000", (void*)primitiveNSInvocationGetLongType},
	{(void*)_m, "primitiveNSInvocationGetObjectType\000\000", (void*)primitiveNSInvocationGetObjectType},
	{(void*)_m, "primitiveNSInvocationGetReturnValue\000\000", (void*)primitiveNSInvocationGetReturnValue},
	{(void*)_m, "primitiveNSInvocationGetSelectorType\000\000", (void*)primitiveNSInvocationGetSelectorType},
	{(void*)_m, "primitiveNSInvocationGetShortType\000\000", (void*)primitiveNSInvocationGetShortType},
	{(void*)_m, "primitiveNSInvocationGetStructureType\000\000", (void*)primitiveNSInvocationGetStructureType},
	{(void*)_m, "primitiveNSInvocationMalloc\000\000", (void*)primitiveNSInvocationMalloc},
	{(void*)_m, "primitiveNSInvocationSetCType\000\000", (void*)primitiveNSInvocationSetCType},
	{(void*)_m, "primitiveNSInvocationSetDoubleType\000\000", (void*)primitiveNSInvocationSetDoubleType},
	{(void*)_m, "primitiveNSInvocationSetFloatType\000\000", (void*)primitiveNSInvocationSetFloatType},
	{(void*)_m, "primitiveNSInvocationSetIntType\000\000", (void*)primitiveNSInvocationSetIntType},
	{(void*)_m, "primitiveNSInvocationSetLongLongType\000\000", (void*)primitiveNSInvocationSetLongLongType},
	{(void*)_m, "primitiveNSInvocationSetLongType\000\000", (void*)primitiveNSInvocationSetLongType},
	{(void*)_m, "primitiveNSInvocationSetPointerType\000\000", (void*)primitiveNSInvocationSetPointerType},
	{(void*)_m, "primitiveNSInvocationSetRetained\000\000", (void*)primitiveNSInvocationSetRetained},
	{(void*)_m, "primitiveNSInvocationSetSelector\000\000", (void*)primitiveNSInvocationSetSelector},
	{(void*)_m, "primitiveNSInvocationSetShortType\000\000", (void*)primitiveNSInvocationSetShortType},
	{(void*)_m, "primitiveNSInvocationSetStringType\000\000", (void*)primitiveNSInvocationSetStringType},
	{(void*)_m, "primitiveNSInvocationSetStructureType\000\000", (void*)primitiveNSInvocationSetStructureType},
	{(void*)_m, "primitiveNSInvocationSetVoidPointerType\000\000", (void*)primitiveNSInvocationSetVoidPointerType},
	{(void*)_m, "primitiveNSInvocationWithMethodSignature\000\000", (void*)primitiveNSInvocationWithMethodSignature},
	{(void*)_m, "primitiveNSLog\000\000", (void*)primitiveNSLog},
	{(void*)_m, "primitiveNSStringToUTF8\000\000", (void*)primitiveNSStringToUTF8},
	{(void*)_m, "primitivePerformSelector\000\000", (void*)primitivePerformSelector},
	{(void*)_m, "primitivePerformSelectorOnMainThreadWithWaitTilDone\000\000", (void*)primitivePerformSelectorOnMainThreadWithWaitTilDone},
	{(void*)_m, "primitivePerformSelectorWith\000\000", (void*)primitivePerformSelectorWith},
	{(void*)_m, "primitivePerformSelectorWithWith\000\000", (void*)primitivePerformSelectorWithWith},
	{(void*)_m, "primitiveSELGetName\000\000", (void*)primitiveSELGetName},
	{(void*)_m, "setInterpreter", (void*)setInterpreter},
	{NULL, NULL, NULL}
};

#else /* ifdef SQ_BUILTIN_PLUGIN */

signed char primitiveCallbackLeaveAccessorDepth = 0;
signed char primitiveGetClassAccessorDepth = 0;
signed char primitiveGetDescriptionAccessorDepth = 0;
signed char primitiveGetMethodSignatureForSelectorAccessorDepth = 0;
signed char primitiveGetNSStringForStringAccessorDepth = 1;
signed char primitiveGetSuperClassAccessorDepth = 0;
signed char primitiveIsEqualAccessorDepth = 0;
signed char primitiveMethodSignatureGetArgumentTypeAccessorDepth = 0;
signed char primitiveMethodSignatureGetMethodReturnLengthAccessorDepth = 0;
signed char primitiveMethodSignatureGetNumberOfArgumentsAccessorDepth = 0;
signed char primitiveMethodSignatureGetReturnTypeAccessorDepth = 0;
signed char primitiveNSInvocationCallocAccessorDepth = 0;
signed char primitiveNSInvocationFreeAccessorDepth = 0;
signed char primitiveNSInvocationGetArgumentAccessorDepth = 0;
signed char primitiveNSInvocationGetCharPointerTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetClassTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetCTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetDoubleTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetFloatTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetIntTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetLongLongTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetLongTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetObjectTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetReturnValueAccessorDepth = 0;
signed char primitiveNSInvocationGetSelectorTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetShortTypeAccessorDepth = 0;
signed char primitiveNSInvocationGetStructureTypeAccessorDepth = 0;
signed char primitiveNSInvocationMallocAccessorDepth = 0;
signed char primitiveNSInvocationSetCTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetDoubleTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetFloatTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetIntTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetLongLongTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetLongTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetPointerTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetRetainedAccessorDepth = 0;
signed char primitiveNSInvocationSetSelectorAccessorDepth = 0;
signed char primitiveNSInvocationSetShortTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetStringTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetStructureTypeAccessorDepth = 0;
signed char primitiveNSInvocationSetVoidPointerTypeAccessorDepth = 0;
signed char primitiveNSInvocationWithMethodSignatureAccessorDepth = 0;
signed char primitiveNSLogAccessorDepth = 0;
signed char primitiveNSStringToUTF8AccessorDepth = 0;
signed char primitivePerformSelectorAccessorDepth = 0;
signed char primitivePerformSelectorOnMainThreadWithWaitTilDoneAccessorDepth = 0;
signed char primitivePerformSelectorWithAccessorDepth = 0;
signed char primitivePerformSelectorWithWithAccessorDepth = 0;
signed char primitiveSELGetNameAccessorDepth = 0;

#endif /* ifdef SQ_BUILTIN_PLUGIN */
