Slightly overbuilt or not, we can bang out the details over time. The point is that Sig is bringing things into the image where it can be seen and changed vs. locked away in a compiled binary that often does not describe where/how it gets into trouble. ________________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Igor Stasenko [siguctua@gmail.com] Sent: Thursday, September 23, 2010 11:30 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] NativeBoost examples (was: Re: DoubleArray) On 23 September 2010 18:21, Igor Stasenko <siguctua@gmail.com> wrote:
On 23 September 2010 18:02, Igor Stasenko <siguctua@gmail.com> wrote:
2010/9/23 Henrik Johansen <henrik.s.johansen@veloxit.no>:
On Sep 23, 2010, at 4:03 07PM, Stéphane Ducasse wrote:
igor
May be a layer for people that are not fluent with assembly would help. Make the path easy from FFI writing.
It is already, RTM :) http://code.google.com/p/nativeboost/wiki/NBFnSpecParser
Get some patterns so that people can learn by following patterns.
Oh, yeah.. see. I was showing an example how to implement own primitive using NativeBoost.
Of course, an FFI API is there, and doing all the magic under the hood, so you dont have to know any assemler voodo:
releaseDC: hdc <primitive: #primitiveNativeCall module: #NativeBoostPlugin>
^ NBFFICallout stdcall: #(
int ReleaseDC ( HWND self , " handle to window" HDC hdc " handle to DC " )) module: #user32
the above is an FFI call to external function ReleaseDC, which can be found in 'user32.dll' windoze module.
One of Bill's concerns is to be able to customize an external library search algorithm. And i can easily extend this api for custom-loading a library:
Suppose, that if you passing a block into #module: argument, instead of string/symbol, then this block should answer a ready-to-use external library handle. So, then above example can be rewritten as:
releaseDC: hdc <primitive: #primitiveNativeCall module: #NativeBoostPlugin>
^ NBFFICallout stdcall: #(
int ReleaseDC ( HWND self , " handle to window" HDC hdc " handle to DC " )) module: [ self whereTheHeckMyModule ]
oh, that's a bit overengineering... come-on.. this is just a smalltalk code.. so it could be just: module: self whereTheHeckMyModule so, callout expects either a module name (then it using a default search algorithm), or a ready for use module handle, then it is up to you to supply it.
And you are free to implement #whereTheHeckMyModule in any way you like :)
Stef
Cheers, Henry _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Best regards, Igor Stasenko AKA sig.
-- Best regards, Igor Stasenko AKA sig.
-- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project