Subject: Re: isprint() and isblank()
To: Noriyuki Soda <soda@sra.co.jp>
From: None <itojun@iijlab.net>
List: tech-userlevel
Date: 01/21/2001 16:32:35
>> 	i meant,
>> 	- stop using in ctype.h, use functions.  by doing so we can
>> 	  avoid hardcoding table internals into compiled binary.
>If _ctype_[] and __CurrentRuneLocale.__runetype[] return same result,
>why should we have to make isXXXXX() functions slow?
>(we have to keep _ctype_[] anyway, as far as we don't change major
> number of libc.)

	as seen in /usr/include/ctype.h, _ctype_ has too little number of bits 
	in it and derives certain definitions (like isgraph) from other
	bits.  the fact could become obstacle to support certain kind of
	locale.  i don't have the example, but is it really okay to assume
	the following?
		isgraph(x) == ispunct(x) || isupper(x) || islower(x) ||
		    isdigit(x)

	if we make these isXXXXX() tests function, instead of a macro,
	we can change internals without worrying about compiled binary
	that includes expanded macro definition.  we can even change how
	those bits are organized.  with macro isXXXXX() i'm seeing obstacle
	in changing internals (like _ctype_ bit organization).

itojun