[Shapelib] Re: shapelib improvements
Mateusz Loskot
mateusz at loskot.net
Fri Dec 7 14:36:01 EST 2007
Bram de Greve wrote:
> Tom Kazimiers wrote:
>> Mateusz Loskot schrieb:
>>
>>> Tom,
>>>
>>> Perhaps we could make a unicode branch of Shapelib.
>>> Frank's opinion is most important here, not mine
>>>
>>>
>> This would be a good thing
>>
>>>> But if you use shapelib as a dll from another program, esp. a managed
>>>> code one (I use C#) - on windows CE you have the only option to call
>>>> with unicode parameters. This means you have to write wrappers which
>>>> to the transformation or one makes the dll unicode aware (this is
>>>> what I did). Are there any ways to get a managed to unmanaged call on
>>>> Win CE working with char?
>>>>
>>>>
>>> Doesn't marchaling to UnmanagedType.LPStr work?
>>> Also, CharSet attribute of DLLImport to control how encoding information
>>> is marshalled. CharSet.Ansi is default for C++, so Unicode->ANSI is
>>> translated automatically.
>>
>> Sure it is on a "normal" desktop computer - but in Win CE environment
>> one can only choose CharSet.Unicode as the whole OS works only with unicode.
>> The UnmanagedType.LPStr I did not try out - I will test it. But since I
>> have read that Win CE can only handle unicode I doupt it would work.
>
> It might solve your problems with unicode filenames, but how will you
> cope with textual content
Bram,
We are discussing solution for encodings of file paths only.
Certainly, it wouldn't solve problems with handling localized content
(strings) but this is another subject.
> You will need to build in all your encodings
> as internally all textural content is char* exclusively (with various
> encodings). That can be done?
Yes, it can.
However, it is complex task and would require use of char codes
encoders/decoders like iconv.
This subject will probably be covered along with implementation of
GDAL/OGR RFC 5 (http://trac.osgeo.org/gdal/wiki/rfc5_unicode).
> Also, I suggest to first consider if you can't solve your problems with
> wrapper code. Not wrapper code around the DLL, but building a unicode
> DLL with wrapper code around the original. That way, you don't have to
> branch (or to fork), which might be beneficial to both ...
This won't solve all possible problems with internationalized paths.
IMHO, simpler and cleaner solution is to replace current I/O calls with
Unicode-aware calls from C/C++ libraries. The main disadvantage is that
it will introduce new fork. However, Shapelib is not a big library, it's
just 3 files of code, so forking does not sound as a problem for
possible merge in future.
Cheers
--
Mateusz Loskot
http://mateusz.loskot.net
More information about the Shapelib
mailing list