On Fri, Aug 31, 2012 at 2:17 PM, Igor Stasenko <[email protected]> wrote:
> On 31 August 2012 15:03, Guy Hylton <[email protected]> wrote: > > I am looking for some NativeBoost advice on the best way of using a > > structure with an containing a char array like the following: > > > > int level > > int number > > char[256] msgText > > ulong elapsedTime > > > > Currently I am using an NBExternalAddress returned by > NativeBoost>>allocate: > > because the external library holds onto the address and using byteAt: to > see > > what is going on in the structure while I get used to the external > library > > API. > > > > I can think of a couple of options, create my own NBExternalType subclass > > which I can use in an NBExternalStructure or subclass > > NBExternalAddress/Object with methods to extract the appropriate data, or > > have I missed the simple solution? > > > > well, there's no array-types support.. > so, what you can do is to place dummy fields instead of array.. i.e. > > int level > int number > char msgText1 > char msgText2 > ... > char msgText256 > > ulong elapsedTime > > which should do the trick. > > (of course, not necessary to use chars, you can use ints, so it will > be only 64 dummies instead of 256 ;) > > And of course a better way of doing that is to create a special > NBExternalType subclass , lets say NBExternalTypeArray > which takes a basic type and number of elements. > And it should answer correct #instanceSize and other related things, > as well as implement methods for pushing/storing and reading the > values of such type. > A subclass of NBExternalType looked like the better option when looking through the existing classes for a solution but I wasn't sure that I was ready to start writing assembler. I already feel like one of the Sorcerers Apprentices just using NativeBoost to interface to an external library, let alone adding some assembler incantations to my own spells :-). > I will work on adding that in closest days. > That would be great! In the meantime I will have a go at writing my own NBExternalType subclass to handle the specific situation I have come across; NBExternalString>>coerceReturnValue: looks like a good place to start. Even if I don't get very far it will hopefully help me understand your solution. > It is not too hard to implement ;) > No, not for a first class wizard :-) > > Thanks, Guy > > -- > Best regards, > Igor Stasenko. > >
