Re: utf-16 and glib

Maciej Piechotka escribió:
On Mon, 2009-01-26 at 23:48 +0100, Martin (OPENGeoMap) wrote:
Dominic Lachowicz escribió:
What is wrong with:
gchar*  g_utf8_strncpy  (gchar *dest,const gchar *src,gsize n);

That's one not needed as strncpy should work.

hehe i know but that function it really exist:
It does make sense. strncpy copies N bytes, when what you want to do
is copy N characters from a multi-byte encoded string. You don't want
to the copy to stop somewhere in the middle of a multi-byte character
sequence because the result simply wouldn't make sense.

and the macro:
gtext*  g_text_strncpy  (gtext*dest,const gtext*src,gsize n);
Because having 2 implementations of a function and having 1
automatically chosen by a pre-processor macro is one of the worst API
decisions that Microsoft has ever made. And that's saying something.

Glib/gtk is full of macros.

But how many of them changes the meaning by other 'switch-macro'? I'm
nearly sure that all of them evaluate to the same values at each gived

I believe que a C compiler is the right place to this kind of unsafe code.

What do you mean by 'unsafe'? If the 'unsafe' code is unsafe there is no
place to put it. If the 'unsafe' means that the code cannot be verified
easily by compiler if it is correct that there is place in C code (or
any other).
by unsafe i want say something like the g-signal-connect macro:
If i want create safe code i have c#,c++, JAVA, D or VALA. Using macros is the only way to ensure intermediate APIs don´t have any overhead.

How much is the overhead? How big it is in compare to for example I/O in
accessing filesystem, drawing in access to GTK+ or to GC in access to
If we have for example a DWG binary file we have for example 15000 utf16 strings. If i use glib i need make 15000 translations utf16/utf8 to use the utf8 glib api. When i need save the file i need make other 15000 translations. There are thounsand of formats using utf16. I don´t love utf16, but I "MUST" use utf16 in the real world. I am not the guilty of existence of utf16 :'( .


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]