On 05.12.2012, at 07:15, Jimmie Houchin <[email protected]> wrote:

> On 12/4/2012 8:48 PM, Igor Stasenko wrote:
>> On 5 December 2012 03:22, Jimmie Houchin <[email protected]> wrote:
>>> Hello,
>>> 
>>> I am working through implementing NativeBoost interface to a C wrapper dll.
>>> 
>>> I have 8 callback functions to call in this interface. I am subclassing
>>> NBFFICallback as stated in the documentation. I am also implementing the
>>> fnSpec method based on the code in the header file.
>>> 
>>> fnSpec
>>> 
>>>     ^#( void (NBExternalString rowID, Row rowData))
>>> 
>>> This is the code in the header:
>>> 
>>> typedef void (*TABLE_ROW_CALLBACK)(const char *rowID, FXCHandle rowData);
>>> 
>>> 
>>> Should I leave the return type as  void  or should I use  NBVoid?
>>> 
>> Either will work.
>> As long as
>> NBFFICallout new resolveType: 'void'
>> and
>> NBFFICallout new resolveType: 'NBVoid'
>> returning same object(s).
>> 
>>> I do not know C at all. Is the NBExternalString suitable for the const char
>>> *rowID?
>> NBExternalString is a coverter which takes a pointer and turns it into
>> ByteString instance.
>> 
>> But you can use just 'String' as a type qualifier, which is alias for
>> NBExternalString:
>> 
>> String class>>asNBExternalType: gen
>> 
>>      ^ gen resolveType: #NBExternalString
>> 
>>> The documentation says you can use it for char*, but I don't know what
>>> difference const makes.
>>> 
>> The const modifier matters for C compiler that guarantees that no
>> attempts to write at pointer location
>> will be made.. which is of course get lost when you cross language
>> boundaries and therefore doesn't makes sense specifying in function
>> signature.
>> 
>> NBExternalString takes a pointer as input and then creates an instance
>> of ByteString object
>> and copies contents of C string in newly created object.
>> From that perspective it fits well with 'const char *' type, because
>> at language side you never obtain a
>> real pointer to the string, but just a copy with string contents, and
>> even if you will try to modify that string, you will be modifying a
>> copy, but not original.
>> 
>> P.S. if you load NativeBoost-Help package, there is a page describing
>> in detail how type system
>> and type resolution works.
>> 
>> You can read help using
>> NBHelp open
>> 
>> or just open a help browser..
>> 
>> There could be some glitches loading markdown parser (which i had few
>> days ago).. so if it will fail to work, then you can read from sources
>> here:
>> NBHelpOnFFI class>>types / types2
> Thanks for the help and information.
> I wasn't expecting an answer quite so quickly. I can't tell if you sleep? :)
> 
> I haven't been able to get the NBHelp to work yet.
> In a freshly downloaded NBCog-VM and Pharo-2.0.image after installing NB and 
> NBHelp.
> When I do,   NBHelp open.  It starts installing but can't get past 
> petitmarkdown.
> 

There's a new thread on the list about the configuration of PetitParser being 
broken. This is probably what trips up loading the NB help 
("ConfigurationOfPetitParser has broken #'common' section").

Cheers,
Max

> I don't know if it is a momentary SS3 problem or what. I'll try again in the 
> morning after I get some sleep.
> 
> Again, thanks.
> 
> Jimmie
> 


Reply via email to