unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: "Michael Gran" <spk121@yahoo.com>
Cc: guile-devel@gnu.org
Subject: Re: [Guile-commits] GNU Guile branch, master, updated. release_1-9-1-18-g904a78f
Date: Fri, 31 Jul 2009 01:21:47 +0200	[thread overview]
Message-ID: <87fxcd92pg.fsf@gnu.org> (raw)
In-Reply-To: <E1MW9af-0007pM-IW@cvs.savannah.gnu.org> (Michael Gran's message of "Wed, 29 Jul 2009 13:53:09 +0000")

"Michael Gran" <spk121@yahoo.com> writes:

> commit 904a78f11d2d11a58d5df365a44c4fbbd4c96df3
> Author: Michael Gran <spk121@yahoo.com>
> Date:   Wed Jul 29 06:38:32 2009 -0700
>
>     Add 32-bit characters
>     
>     This adds the 32-bit standalone characters.  Strings are still
>     8-bit.  Characters larger than 8-bit can only be entered or
>     displayed in octal format at this point.  At this point, the
>     terminal's display encoding is expected to be Latin-1.

It looks like Unicode is approaching, good news!  :-)

My remark about user-visibility was actually regarding this commit, not
the previous one.

> +#ifndef SCM_WCHAR_DEFINED
> +typedef scm_t_int32 scm_t_wchar;
> +#define SCM_WCHAR_DEFINED
> +#endif

Why is this #ifdef hack needed?

> +#define SCM_CHAR(x) ((scm_t_wchar)SCM_ITAG8_DATA(x))

Please, use GCS style.

> +#define SCM_MAKE_CHAR(x) ({scm_t_int32 _x = (x);                        \
> +      _x < 0                                                            \
> +        ? SCM_MAKE_ITAG8((scm_t_bits)(unsigned char)_x, scm_tc8_char)   \
> +        : SCM_MAKE_ITAG8((scm_t_bits)_x, scm_tc8_char);})

This macro uses a GCC extension, which is not acceptable for Guile.  Can
you please rewrite it in standard C?  (The only risk is multiple
expansion of X, but that's OK.)

Does X < 0 mean ASCII?  And why is it truncated to 8 bits?  A comment
just above indicating the encoding trick would be handy IMO.

(And style isn't OK.)

> +#define SCM_CODEPOINT_MAX (0x10ffff)
> +#define SCM_IS_UNICODE_CHAR(c)                                          \
> +  ((scm_t_wchar)(c)<=0xd7ff ||                                          \
> +   ((scm_t_wchar)(c)>=0xe000 && (scm_t_wchar)(c)<=SCM_CODEPOINT_MAX))

Style.

> +                  if (i<256)
> +                    {
> +                      /* Character is graphic.  Print it.  */
> +                      scm_putc (i, port);
> +                    }

Style (extraneous braces).

> +VM_DEFINE_INSTRUCTION (42, make_char32, "make-char32", 4, 0, 1)
> +{
> +  scm_t_wchar v = 0;
> +  v += FETCH ();
> +  v <<= 8; v += FETCH ();
> +  v <<= 8; v += FETCH ();
> +  v <<= 8; v += FETCH ();
> +  PUSH (SCM_MAKE_CHAR (v));
> +  NEXT;
> +}

The doc will need to be augmented.

> +	((char? x)
> +         (cond ((<= (char->integer x) #xff)
> +                `(make-char8 ,(char->integer x)))
> +               (else
> +                `(make-char32 ,(char->integer x)))))

Sounds cool!  :-)

Thanks,
Ludo'.




       reply	other threads:[~2009-07-30 23:21 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1MW9af-0007pM-IW@cvs.savannah.gnu.org>
2009-07-30 23:21 ` Ludovic Courtès [this message]
2009-08-01 17:58   ` [Guile-commits] GNU Guile branch, master, updated. release_1-9-1-18-g904a78f Mike Gran
2009-08-04 16:11     ` Andy Wingo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fxcd92pg.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guile-devel@gnu.org \
    --cc=spk121@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).