On Fri, 2009-07-31 at 01:21 +0200, Ludovic Courtès wrote: > "Michael Gran" <spk...@yahoo.com> writes: > 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? >
It was to work around a problem, which, apparently, I can no longer reproduce. So, it isn't needed. > > +#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.) OK. There was one case of multiple expansion causing side effects, but, I fixed that. > 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. OK. Wide chars are always positive, but, the upper 128 of signed 8-bit C chars are negative, which is the reason for that logic. >> + if (i<256) >> + { >> + /* Character is graphic. Print it. */ >> + scm_putc (i, port); >> + } > Style (extraneous braces). Noted. If that's the standard then so be it. But, for this case, I declare, in classic flamewar fashion, that the standard is nonsense. Thanks, Mike