<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,&nbsp;<div class=""><br class=""></div><div class="">Sorry but this will not work :(</div><div class=""><br class=""></div><div class="">There are two reasons… &nbsp;this is the output of IA32FFIPlugin:&nbsp;</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span>* IA32FFIPlugin_exports[][<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">3</span>] = {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"ffiLogCallsTo"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)ffiLogCallsTo},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"getModuleName"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)getModuleName},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"initialiseModule"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)initialiseModule},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveCallout\000\002"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveCallout},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveCalloutWithArgs\000\004"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveCalloutWithArgs},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveCreateManualSurface\000\000"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveCreateManualSurface},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveDestroyManualSurface\000\000"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveDestroyManualSurface},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIAllocate\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIAllocate},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIDoubleAt\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIDoubleAt},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIDoubleAtPut\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIDoubleAtPut},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIFloatAt\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIFloatAt},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIFloatAtPut\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIFloatAtPut},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIFree\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIFree},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIGetLastError\000\377"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIGetLastError},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIIntegerAt\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIIntegerAt},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveFFIIntegerAtPut\000\001"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveFFIIntegerAtPut},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveForceLoad\000\002"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveForceLoad},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveLoadSymbolFromModule\000\002"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveLoadSymbolFromModule},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveLogCallsTo\000\000"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveLogCallsTo},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"primitiveSetManualSurfacePointer\000\000"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)primitiveSetManualSurfacePointer},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(209, 47, 27);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>"IA32FFIPlugin"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>"setInterpreter"<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">void</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">*)setInterpreter},</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>{</span>NULL<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>NULL<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, </span>NULL<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">}</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">};</div></div><div class=""><br class=""></div><div class="">So, this:&nbsp;</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(120, 73, 42);" class=""># define IA32FFIPlugin_exports SqueakFFIPrims_exports</div></div><div class=""><br class=""></div><div class="">will just change the exports variable, but not the “IA32FFIPlugin” string… and defining:&nbsp;</div><div class=""><br class=""></div><div class=""><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(120, 73, 42);" class=""># define IA32FFIPlugin SqueakFFIPrims</div></div></div><div class=""><br class=""></div><div class="">will not work either because preprocessor does not works inside strings :(</div><div class=""><br class=""></div><div class="">how can we fix this?</div><div class=""><br class=""></div><div class="">Esteban</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 23 Feb 2016, at 17:31, <a href="mailto:commits@source.squeak.org" class="">commits@source.squeak.org</a> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class="">Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br class=""><a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1694.mcz" class="">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1694.mcz</a><br class=""><br class="">==================== Summary ====================<br class=""><br class="">Name: VMMaker.oscog-eem.1694<br class="">Author: eem<br class="">Time: 23 February 2016, 9:30:35.750871 am<br class="">UUID: e1381bbc-a5af-4a35-ac60-a739611c7e0e<br class="">Ancestors: VMMaker.oscog-eem.1693<br class=""><br class="">Fix compilation of ThreadedFFIPlugin subclasses as internal plugins.<br class=""><br class="">=============== Diff against VMMaker.oscog-eem.1693 ===============<br class=""><br class="">Item was changed:<br class=""> &nbsp;----- Method: ThreadedFFIPlugin class&gt;&gt;generateCodeStringForPrimitives (in category 'translation') -----<br class=""> &nbsp;generateCodeStringForPrimitives<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>"Output a skeletal SqueakFFIPrims.c that includes the relevant FooFFIPlugin.c for<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span> each subclass based on the identifyingPredefinedMacros the subclass defines."<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span> <br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>^String streamContents:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:s|<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPutAll: '/* Automatically generated by\<span class="Apple-tab-span" style="white-space:pre">        </span>' withCRs.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPutAll: (CCodeGenerator monticelloDescriptionFor: self).<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; nextPutAll: ' */'.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; cr; nextPut: $#.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> (self allSubclasses sort: [:a :b| a name &lt; b name]) do:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:class |<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>class identifyingPredefinedMacros ifNotNil:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:predefinedMacros|<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPutAll: 'if '.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>class includingPredefinedMacros ifNotNil:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:includingMacros|<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> includingMacros do:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:predefinedMacro| s nextPutAll: 'defined('; nextPutAll: predefinedMacro; nextPutAll: ') &amp;&amp; '].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPut: $(].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>class excludingPredefinedMacros ifNotNil:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:excludingMacros|<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> excludingMacros do:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:predefinedMacro| s nextPutAll: '!!defined('; nextPutAll: predefinedMacro; nextPutAll: ') &amp;&amp; '].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPut: $(].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> predefinedMacros<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>do: [:predefinedMacro| s nextPutAll: 'defined('; nextPutAll: predefinedMacro; nextPut: $)]<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>separatedBy: [s nextPutAll: ' || '].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>class excludingPredefinedMacros ifNotNil:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[s nextPut: $)].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>class includingPredefinedMacros ifNotNil:<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[s nextPut: $)].<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; cr; nextPutAll: '# define '; nextPutAll: class moduleName; nextPutAll: '_exports ';<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>nextPutAll: self moduleName; nextPutAll: '_exports'.<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; nextPutAll: '# include "'; nextPutAll: class moduleName; nextPutAll: '.c"'.<br class="">- <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; cr; nextPutAll: '#<span class="Apple-tab-span" style="white-space:pre">        </span>include "'; nextPutAll: class moduleName; nextPutAll: '.c"'.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; cr; nextPutAll: '#el']].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s nextPutAll: 'se'.<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> #(<span class="Apple-tab-span" style="white-space:pre">        </span>'As yet no FFI implementation appears to exist for your platform.'<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>'Consider implementing it, starting by adding a subclass of ThreadedFFIPlugin.') do:<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:msg| s cr; nextPutAll: '# error '; nextPutAll: msg].<br class="">- <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>[:msg| s cr; nextPutAll: '#<span class="Apple-tab-span" style="white-space:pre">        </span>error '; nextPutAll: msg].<br class=""> &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> s cr; nextPutAll: '#endif'; cr]!<br class=""><br class=""></div></div></blockquote></div><br class=""></div></body></html>