Ups, one method was in the *generated-code-protocol and will be removed on package load.
You need to add the method BYTE_8>>asString ^ self address hex 2015-05-07 1:06 GMT+02:00 Nicolai Hess <nicolaih...@web.de>: > > > 2015-05-06 22:47 GMT+02:00 Henrik Sperre Johansen < > henrik.s.johan...@veloxit.no>: > >> A few easily fixed Type/pointers to Types mixups, and a slipup where two >> different classes are confused for the same aside, the real show stopper, >> if I haven't missed something entirely, is that the struct parser/NB in >> general does not handle const sized arrays*, which is used in a few of the >> required structs. >> >> Extending the parser should be relatively straight forward, along the >> lines of adding >> stream peek: #'[' ifTrue: [stream next. >> type := SizedExternalArrayType type: type size: stream next. >> stream next = #']' ifFalse: [self error: 'Missing closing bracket for >> ', type printString]] >> to NBExtenralStructureFields >> #parseFields:... after the name is read. >> >> Coding SizedExternalArrayType is a bit more work though... >> >> Cheers, >> Henry >> >> >> *The end goal would be to be able to generate accessors/read/write for a >> simple test-struct such as >> #fieldsDesc >> ^#( >> char ip[MyClassVar +2]; >> ) >> > > Yes, a parser for this would be great. > > I tried it with a little hack > > NBExternalStructure subclass: #Char_260 ... > > Char_260 class>>#fieldDesc > ^ #(char data) > > Char_260 class>>instanceSize > ^ 260 > > You need another accessor for accessing the data, otherwise you'll only > get the first char. AND I don't know how > the external memory is handle, probably it is never freed :) > > Now a complete example (attached code) call it with > GetMacWin32 getMacAddress > > >> >> On Wed, May 6, 2015 at 5:28 PM, Esteban Lorenzano <esteba...@gmail.com> >> wrote: >> >>> >>> On 06 May 2015, at 17:03, Nicolai Hess <nicolaih...@web.de> wrote: >>> >>> >>> >>> 2015-05-06 16:40 GMT+02:00 Esteban Lorenzano <esteba...@gmail.com>: >>> >>>> >>>> On 06 May 2015, at 12:10, p...@highoctane.be wrote: >>>> >>>> I've loaded your package. >>>> >>>> A prerequisite is to load OS-Window to make it work. >>>> >>>> >>>> why? >>>> in any case, oswindow is already included in pharo4 >>>> >>> >>> OS-Windows (by TorstenBergmann) >>> >>> not >>> OSWindow :) >>> >>> >>> ahhh. Name clash :) >>> >>> >>> It is needed for the shared pool WinTypes, >>> but without OS-Window, he can use NBWinTypes instead. >>> >>> >>> >>>> >>>> Esteban >>>> >>>> >>>> I've got the DLL call working nicely and the nativeboost with the >>>> structure freezing. >>>> >>>> Now, we should all have a look at: >>>> >>>> https://github.com/ronsaldo/bullet-pharo >>>> >>>> and >>>> >>>> https://github.com/ronsaldo/swig >>>> >>>> because it looks like the way to go to wrap libraries... >>>> >>>> Ronie, I know you modified swig for generating Pharo code; >>>> >>>> Is cloning your swig repo the way to go ? >>>> >>>> >>>> Phil >>>> >>>> >>>> >>>> >>>> On Wed, May 6, 2015 at 10:39 AM, Usman Bhatti <usman.bha...@gmail.com> >>>> wrote: >>>> >>>>> Hi Nicolai, >>>>> >>>>> Here is my package that defines the nativeboost call and associated C >>>>> structs. >>>>> The external C struct is self referencing and hence sometimes I get >>>>> infinite recursion when trying to change field descriptions. That is the >>>>> reason why the automatically generated accessors are absent (although I >>>>> had >>>>> them in an earlier version). >>>>> >>>>> Attached also the DLL referenced in the code. >>>>> >>>>> >>>>> >>>>> On Wed, May 6, 2015 at 9:58 AM, Nicolai Hess <nicolaih...@web.de> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> 2015-05-06 9:53 GMT+02:00 Usman Bhatti <usman.bha...@gmail.com>: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, May 5, 2015 at 7:34 PM, p...@highoctane.be < >>>>>>> p...@highoctane.be> wrote: >>>>>>> >>>>>>>> >>>>>>>> On Tue, May 5, 2015 at 6:28 PM, Usman Bhatti < >>>>>>>> usman.bha...@gmail.com> wrote: >>>>>>>> >>>>>>>>> I succeeded to do it by encapsulating the C routine as a DLL and >>>>>>>>> doing an FFI call from my image (as suggested by Guille). >>>>>>>>> >>>>>>>> >>>>>>>> At least there was a way! >>>>>>>> >>>>>>> >>>>>>> Exactly :) >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Looks like this is the most controlled|debuggable way: >>>>>>>> - get it working with C code out of Pharo >>>>>>>> - make a bridge that can be used easily with FFI in a dll >>>>>>>> - use that from Pharo with proven FFI >>>>>>>> >>>>>>>> Would NativeBoost work with your dll? Should. >>>>>>>> >>>>>>> >>>>>>> I have read a few resources about Nativeboost but I am still naive >>>>>>> to know the difference between FFI and nativeboost. The FFI call I made >>>>>>> to >>>>>>> invoke the DLL function looked similar to the nativeboost calls. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I also tried to perform the nativeboost call by creating my >>>>>>>>> structures in Pharo. The function in Windows that can be used to >>>>>>>>> retrieve >>>>>>>>> mac address in Windows: GetAdaptersInfo >>>>>>>>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa365917%28v=vs.85%29.aspx> >>>>>>>>> that >>>>>>>>> accepts a PIP_ADAPTER_INFO >>>>>>>>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062(v=vs.85).aspx> >>>>>>>>> structure. >>>>>>>>> I subclassed NBExternalStructure to define this struct and the other >>>>>>>>> used >>>>>>>>> by it in the image but my NB call returned with 87 code (Invalid >>>>>>>>> parameter) >>>>>>>>> and it was impossible to debug. However, I would like to make this >>>>>>>>> thing >>>>>>>>> work to understand what went wrong. >>>>>>>>> >>>>>>>> >>>>>>>> Has this something to do with 32|64 bit library complications? >>>>>>>> >>>>>>> >>>>>>> Not exactly. For me, it was more related to the fact that I had to >>>>>>> map a complex C struct in Pharo. Here is an excerpt of the definition >>>>>>> from >>>>>>> MSDN: >>>>>>> >>>>>>> typedef struct _IP_ADAPTER_INFO { >>>>>>> struct _IP_ADAPTER_INFO *Next; >>>>>>> ... >>>>>>> PIP_ADDR_STRING CurrentIpAddress; >>>>>>> IP_ADDR_STRING GatewayList; >>>>>>> ... >>>>>>> } >>>>>>> >>>>>>> So, I had to define three external structures (all names in >>>>>>> capitals) and I did the effort but in the end I got an error code that I >>>>>>> could not debug in the image. Hence, I gave up and opted to go in the >>>>>>> native environment. But I would like someone knowledgable to have a >>>>>>> look at >>>>>>> my nativeboost code because the nativeboost approach is more simple >>>>>>> (everything's in the image). >>>>>>> >>>>>> >>>>>> I can have a look. >>>>>> >>>>>> btw. for what do you need the mac address? >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> usman >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Phil >>>>>>>> >>>>>>>> With ProcessWrapper, I could not load the classes essential for >>>>>>>> making the plugin work. >>>>>>>> >>>>>>>> HTH, >>>>>>>> >>>>>>>> Usman >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Mon, May 4, 2015 at 2:54 PM, Ben Coman <b...@openinworld.com> >>>>>>>> wrote: >>>>>>>> As a complete newb to VM building I found this fairly straight >>>>>>>> forward (on a Mac btw). >>>>>>>> https://github.com/pharo-project/pharo-vm >>>>>>>> cheers -ben >>>>>>>> >>>>>>>> On Mon, May 4, 2015 at 5:28 PM, Usman Bhatti < >>>>>>>> usman.bha...@gmail.com> wrote: >>>>>>>> >>>>>>>> >>>>>>>> On Sun, May 3, 2015 at 4:22 PM, Pierce Ng <pie...@samadhiweb.com> >>>>>>>> wrote: >>>>>>>> On Sat, May 02, 2015 at 03:55:47PM +0200, Usman Bhatti wrote: >>>>>>>> > 1/ OSProcess: I tried (PipeableOSProcess command: 'ipconfig >>>>>>>> /all') output. >>>>>>>> >>>>>>>> I have used http://www.smalltalkhub.com/#!/~hernan/ProcessWrapper >>>>>>>> successfully >>>>>>>> back when I was on Windows using some now-ancient version of Pharo. >>>>>>>> >>>>>>>> I had initially discarded the idea of using this project because it >>>>>>>> required a plugin and the information of the plugin was outdated on >>>>>>>> squeaksource. However, having evaluated superficially the complexity of >>>>>>>> doing it with nativeboost (because too many external c struct involved >>>>>>>> in >>>>>>>> the call), I would like to see if I am better off using this wrapper. >>>>>>>> >>>>>>>> I loaded it with: >>>>>>>> >>>>>>>> Gofer it >>>>>>>> url: 'http://www.smalltalkhub.com/mc/hernan/ProcessWrapper/main'; >>>>>>>> package: 'ProcessWrapper-Core'; >>>>>>>> package: 'ProcessWrapper-Plugin'; >>>>>>>> package: 'ProcessWrapper-Tests'; >>>>>>>> load. >>>>>>>> >>>>>>>> But the plugins wont load because it requires the >>>>>>>> class SmartSyntaxInterpreterPlugin and apparently this file is a part >>>>>>>> of >>>>>>>> the VMMaker. Is there any recent config for VMMaker in Pharo because >>>>>>>> this >>>>>>>> one looks outdated: >>>>>>>> >>>>>>>> http://pharo.gemtalksystems.com/book/Virtual-Machine/Building/VMMakerTool/ >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> Pierce >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>> >>> >> >