On 5 July 2013 17:48, Henrik Johansen <[email protected]> wrote: > > On Jul 5, 2013, at 4:59 , Igor Stasenko wrote: > >> Well, to my thinking , in C 'string' defined as 'a sequence of >> characters (bytes) terminated by zero byte'. > Yeah, except, you know, most/all libraries do not really deal with > theoretically pure C strings, and we certainly when passing in "a string" > from Smalltalk. > In practice, we're dealing with passing/converting Smalltalk strings to > functions expecting a pointer to bytes in a certain encoding. (either > null-terminated or with an additional size arg) > >> There is nothing about encoding, because it is related to text, but C >> 'string' can be something else than human-readable text and contain >> anything and used for different purpose. >> >> From that perspective, if strictly following such definition, i do not >> see how you can force encoding to be a mandatory part of it. (except >> from having special encoding, named "NO_ENCODING" ;) > > And from that perspective, any user will *never* create safe bindings to/from > anything but ASCII ByteStrings by default. > FFI, meet 1988. > And even those who do, have to jump through an excessive amount of hoops, ref > https://dl.dropboxusercontent.com/u/6751081/Environment.zip > >> >> But sure thing, i am not opposed to having a really nice >> encoding/decoding schemes, which you can easily control. >> >> The caveat is that options is applicable to whole callout's generated code. >> What if i have function which takes 2 arguments: >> - string with utf-8 encoding >> - string with utf-16 encoding >> >> so, you cannot put that in options, because you need to control it on >> a per-argument basis. > > >> >> The only way i see how to do that is same as in NBUTF8StringExample: >> you explicitly designate the type of argument e.g. >> >> void foo(utf8String x, utf16String y) > > No, not for FFI you don't. > Any sane external library will never use different encodings for string > parameters to the same method. > In fact, I challenge you to find *any* which doesn't. > i agree.
So, what's the plan? Each time user puts 'String' pseudo-type, demand encoding? > Cheers, > Henry -- Best regards, Igor Stasenko.
