Sat Jun 09 11:28:11 2012: Request 77525 was acted upon.
Transaction: Correspondence added by bulk88.
       Queue: Win32-API
     Subject: new release - version 0.69
   Broken in: (no value)
    Severity: Wishlist
       Owner: COSIMO
  Requestors: bul...@hotmail.com
      Status: open
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=77525 >


Also, you want to look in 0.70,
https://rt.cpan.org/Public/Bug/Display.html?id=77728 I added a bunch of
things to the TODO file for future authors to consider that I
didn't/couldn't do. Most notably, I never added automatic UTF16 handling
which I thought of doing but ran into time and design problems. Rather
than "automatic" UTF16 handling, I decided some kind of generic perl sub
callback API for parameter un/packing would be better as described in
the TODO. The "friendly name" for raw function pointers is there so in
the future a un/pack callback will be passed that name. Also I gave
Win32::API::Type::Un/Pack the ::API object as the 1st parameter so
Math::Int64 flag can be checked today, and also that very advanced
un/packing designs can be implemented in the future, including per obj
or per caller package type callbacks.

Design problems were, what does "automatic" mean? whats the input CP?
System ANSI? Perl UTF8 (check SV flag)? a special $? some variable from
a perl pragma ? precomposed?  and on output always convert to system
ANSI CP? or always convert to UTF8 flaged SV, or use lpUsedDefaultChar
to control whether output SV is UTF8 or legacy CP, or put utf8 in the SV
without ever turning on the UTF8 SV flag? What about "shorts", do they
stay numeric (0x41 not "A" not "\x41"), or do they become string like
("A" not 65) like the CHAR/char type? So thats why no automatic wide
handling was added.

The only "wide" feature I put in was that the buffer overflow sentinal
is wide compatible and will wide null terminate all string. I did use
Encode and there is a test and a api-test func to make sure binary
gibberish scalars with UTF16 in them correctly wind up in a C func
taking a Wide string and the C func validates the wide string. So yes,
today, with some work on your own, ::API has no limitations that prevent
you from using wide string apis.

Reply via email to