diff options
author | Karl Williamson <public@khwilliamson.com> | 2011-09-24 11:46:54 -0600 |
---|---|---|
committer | Karl Williamson <public@khwilliamson.com> | 2011-10-01 09:58:08 -0600 |
commit | 41f43cc22340d382ce3bf1249a2521a4ec5285a8 (patch) | |
tree | 68fa65c0680e3806dad51c802ca6d3fc98b58d34 /handy.h | |
parent | 7c06269796e51fcf84efa5f5dab9ed98447ef9c1 (diff) | |
download | perl-41f43cc22340d382ce3bf1249a2521a4ec5285a8.tar.gz |
handy.h: Simplify isASCII definition
Thus retains essentially the same definition for EBCDIC platforms, but
substitutes a simpler one for ASCII platforms. On my system, the new
definition compiles to about half the assembly instructions that the old
one did (non-optimized)
A bomb-proof definition of ASCII is to make sure that the value is
unsigned in the largest possible unsigned for the platform so there is
no possible loss of information, and then the ord must be < 128.
Diffstat (limited to 'handy.h')
-rw-r--r-- | handy.h | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -582,7 +582,12 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc #define FITS_IN_8_BITS(c) ((sizeof(c) == 1) \ || (((WIDEST_UTYPE)(c) & 0xFF) == (WIDEST_UTYPE)(c))) -#define isASCII(c) (FITS_IN_8_BITS(c) ? NATIVE_TO_UNI((U8) c) <= 127 : 0) +#ifdef EBCDIC +# define isASCII(c) (FITS_IN_8_BITS(c) ? NATIVE_TO_UNI((U8) (c)) < 128 : 0) +#else +# define isASCII(c) ((WIDEST_UTYPE)(c) < 128) +#endif + #define isASCII_A(c) isASCII(c) /* ASCII range only */ |