On Mon, Mar 24, 2014 at 9:43 AM, Christoph Lohmann <2...@r-36.net> wrote:
> Greetings.
>
> On Mon, 24 Mar 2014 09:43:23 +0100 "Roberto E. Vargas Caballero" 
> <k...@shike2.com> wrote:
>> > It is number of function calls, on cat dwm
>> >
>> > cat UTF-8-demo yields:
>> > utflen 113
>> > utfencode 8152
>> > utfdecode 198346
>> >
>> > So I think only utfdecode need to be optimised if necessary.
>>
>> I also like the patch, so if nobody complaints about it then I will apply 
>> next
>> week.
>
> The  naming  is  wrong.  It  is  just  decoding  »utf8« and can’t decode
> »utf16«. So: s,utf,utf8,g

While we are talking about variable naming...

> @@ -1308,9 +1257,8 @@ ttyread(void) {
>       /* process every complete utf8 char */
>       buflen += ret;
>       ptr = buf;
> -     while(buflen >= UTF_SIZ || isfullutf8(ptr,buflen)) {
> -             charsize = utf8decode(ptr, &utf8c);
> -             utf8encode(&utf8c, s);
> +     while(charsize = utfdecode(ptr, &utf8c, buflen)) {
> +             utfencode(utf8c, s, UTF_SIZ);

utf8c is actually a Unicode point and has nothing to do with utf-8 any more.

>               tputc(s, charsize);
>               ptr += charsize;
>               buflen -= charsize;
> @@ -2420,7 +2368,7 @@ tputc(char *c, int len) {
>       if(len == 1) {
>               width = 1;
>       } else {
> -             utf8decode(c, &u8char);
> +             utfdecode(c, &u8char, UTF_SIZ);

Same here for u8char.

>               width = wcwidth(u8char);
>       }
>
> @@ -3293,7 +3241,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, 
> int bytelen) {
>               oneatatime = font->width != xw.cw;
>               for(;;) {
>                       u8c = s;
> -                     u8cblen = utf8decode(s, &u8char);
> +                     u8cblen = utfdecode(s, &u8char, UTF_SIZ);

And here.

>                       s += u8cblen;
>                       bytelen -= u8cblen;
>
> @@ -3430,7 +3378,7 @@ xdrawcursor(void) {
>       memcpy(g.c, term.line[term.c.y][term.c.x].c, UTF_SIZ);
>
>       /* remove the old cursor */
> -     sl = utf8size(term.line[oldy][oldx].c);
> +     sl = utflen(term.line[oldy][oldx].c);
>       width = (term.line[oldy][oldx].mode & ATTR_WIDE)? 2 : 1;
>       xdraws(term.line[oldy][oldx].c, term.line[oldy][oldx], oldx,
>                       oldy, width, sl);
> @@ -3444,7 +3392,7 @@ xdrawcursor(void) {
>                               g.bg = defaultfg;
>                       }
>
> -                     sl = utf8size(g.c);
> +                     sl = utflen(g.c);
>                       width = (term.line[term.c.y][curx].mode & ATTR_WIDE)\
>                               ? 2 : 1;
>                       xdraws(g.c, g, term.c.x, term.c.y, width, sl);
> @@ -3548,7 +3496,7 @@ drawregion(int x1, int y1, int x2, int y2) {
>                               base = new;
>                       }
>
> -                     sl = utf8decode(new.c, &u8char);
> +                     sl = utfdecode(new.c, &u8char, UTF_SIZ);

And here.

I would suggest using a name that reflects that fact (like 'unicodep' perhaps?).


Cheers,

Silvan

Reply via email to