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];
)

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
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>
>

Reply via email to