--- a/Character.st Mon Aug 03 21:05:52 2015 +0100
+++ b/Character.st Wed Aug 05 22:44:27 2015 +0100
@@ -201,85 +201,85 @@
c1 := aStream next.
codePoint := c1 codePoint.
codePoint <= 16r7F ifTrue:[
- "/ 0xxxxxxx - 7 bits
- ^ c1 asCharacter.
+ "/ 0xxxxxxx - 7 bits
+ ^ c1 asCharacter.
].
(codePoint bitAnd:2r11000000) == 2r10000000 ifTrue:[
- "/ out of sync (got an intermediate character)
- InvalidEncodingError raiseRequestWith:codePoint errorString:' - out of sync'.
- ^ c1 asCharacter.
+ "/ out of sync (got an intermediate character)
+ InvalidEncodingError raiseRequestWith:codePoint errorString:' - out of sync'.
+ ^ c1 asCharacter.
].
fetchNext := [ |code|
- code := aStream next codePoint.
- (code bitAnd:2r11000000) == 2r10000000 ifFalse:[
- "/ followup chars must have 2r10 in high bits
- InvalidEncodingError raiseRequestWith:code.
- ^ c1 asCharacter.
- ].
- code bitAnd:16r3F
- ].
+ code := aStream next codePoint.
+ (code bitAnd:2r11000000) == 2r10000000 ifFalse:[
+ "/ followup chars must have 2r10 in high bits
+ InvalidEncodingError raiseRequestWith:code.
+ ^ c1 asCharacter.
+ ].
+ code bitAnd:16r3F
+ ].
(codePoint bitAnd:2r11100000) == 2r11000000 ifTrue:[
- "/ 110xxxxx 10xxxxxx - 11 bits
- codePoint := codePoint bitAnd:16r1F.
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint <= 16r7F ifTrue:[
- InvalidEncodingError raiseRequestWith:codePoint.
- ].
- ^ Character codePoint:codePoint
+ "/ 110xxxxx 10xxxxxx - 11 bits
+ codePoint := codePoint bitAnd:16r1F.
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint <= 16r7F ifTrue:[
+ InvalidEncodingError raiseRequestWith:codePoint.
+ ].
+ ^ Character codePoint:codePoint
].
(codePoint bitAnd:2r11110000) == 2r11100000 ifTrue:[
- "/ 1110xxxx 10xxxxxx 10xxxxxx - 16 bits
- codePoint := codePoint bitAnd:16r0F.
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint <= 16r7FF ifTrue:[
- InvalidEncodingError raiseRequestWith:codePoint.
- ].
- ^ Character codePoint:codePoint
+ "/ 1110xxxx 10xxxxxx 10xxxxxx - 16 bits
+ codePoint := codePoint bitAnd:16r0F.
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint <= 16r7FF ifTrue:[
+ InvalidEncodingError raiseRequestWith:codePoint.
+ ].
+ ^ Character codePoint:codePoint
].
(codePoint bitAnd:2r11111000) == 2r11110000 ifTrue:[
- "/ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - 21 bits
- codePoint := codePoint bitAnd:16r07.
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint <= 16rFFFF ifTrue:[
- InvalidEncodingError raiseRequestWith:codePoint.
- ].
- ^ Character codePoint:codePoint
+ "/ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - 21 bits
+ codePoint := codePoint bitAnd:16r07.
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint <= 16rFFFF ifTrue:[
+ InvalidEncodingError raiseRequestWith:codePoint.
+ ].
+ ^ Character codePoint:codePoint
].
(codePoint bitAnd:2r11111100) == 2r11111000 ifTrue:[
- "/ 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - 26 bits
- codePoint := codePoint bitAnd:16r03.
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
- codePoint <= 16r1FFFFF ifTrue:[
- InvalidEncodingError raiseRequestWith:codePoint.
- ].
- ^ Character codePoint:codePoint
+ "/ 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - 26 bits
+ codePoint := codePoint bitAnd:16r03.
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
+ codePoint <= 16r1FFFFF ifTrue:[
+ InvalidEncodingError raiseRequestWith:codePoint.
+ ].
+ ^ Character codePoint:codePoint
].
(codePoint bitAnd:2r11111110) == 2r11111100 ifTrue:[
- "/ 1111110x ... 10xxxxxx - any number of bits
- codePoint := codePoint bitAnd:16r01.
-
- c2 := aStream peek.
- [c2 notNil and:[(c2 codePoint bitAnd:2r11000000) == 2r10000000]] whileTrue:[
- codePoint := (codePoint bitShift:6) bitOr:(c2 codePoint bitAnd:16r3F).
- aStream next.
- c2 := aStream peek.
- ].
- codePoint <= 16r3FFFFFF ifTrue:[
- InvalidEncodingError raiseRequestWith:codePoint.
- ].
- ^ Character codePoint:codePoint
+ "/ 1111110x ... 10xxxxxx - any number of bits
+ codePoint := codePoint bitAnd:16r01.
+
+ c2 := aStream peek.
+ [c2 notNil and:[(c2 codePoint bitAnd:2r11000000) == 2r10000000]] whileTrue:[
+ codePoint := (codePoint bitShift:6) bitOr:(c2 codePoint bitAnd:16r3F).
+ aStream next.
+ c2 := aStream peek.
+ ].
+ codePoint <= 16r3FFFFFF ifTrue:[
+ InvalidEncodingError raiseRequestWith:codePoint.
+ ].
+ ^ Character codePoint:codePoint
].
InvalidEncodingError raiseRequestWith:codePoint.
@@ -295,12 +295,12 @@
|utf8Encoding original readBack|
1 to:16rFFFF do:[:codePoint |
- original := Character value:codePoint.
- utf8Encoding := original utf8Encoded.
- readBack := Character utf8DecodeFrom:(utf8Encoding readStream).
- readBack codePoint = codePoint ifFalse:[
- self halt
- ]
+ original := Character value:codePoint.
+ utf8Encoding := original utf8Encoded.
+ readBack := Character utf8DecodeFrom:(utf8Encoding readStream).
+ readBack codePoint = codePoint ifFalse:[
+ self halt
+ ]
]
"
!
@@ -1726,15 +1726,15 @@
characterSize
"return the number of bits I require for storage.
Protocol compatibility with CharacterArray."
-
+
asciivalue <= 16r80 ifTrue:[
- ^ 7
+ ^ 7
].
asciivalue <= 16rFF ifTrue:[
- ^ 8
+ ^ 8
].
asciivalue <= 16rFFFF ifTrue:[
- ^ 16
+ ^ 16
].
^ 32
!
@@ -1914,198 +1914,200 @@
%{ /* NOCONTEXT */
REGISTER unsigned INT val;
+ REGISTER unsigned int lowByte;
#define TRUE_IF_ODD(x) ((x & 1) ? true : false)
#define TRUE_IF_EVEN(x) ((x & 1) ? false : true)
/* because used so often, this is open coded, instead of table driven */
val = __intVal(__INST(asciivalue));
+ lowByte = val & 0xFF;
/* the most likely case here, outside the switch */
if (val <= 0xFF) {
- if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
+ if ((unsigned)(lowByte - 'a') <= ('z' - 'a')) {
RETURN ( true );
}
/* iso8859 puts national lower case characters at e0 .. ff */
- if ((val >= 0xDF) && (val <= 0xFF)) {
- if (val != 0xF7) {
+ if ((lowByte >= 0xDF) && (lowByte <= 0xFF)) {
+ if (lowByte != 0xF7) {
RETURN(true);
}
}
- if (val == 0xAA) RETURN(true); /* FEMININE ORDINAL INDICATOR (high a-underline) */
- if (val == 0xB5) RETURN(true); /* MICRO SIGN */
- if (val == 0xBA) RETURN(true); /* MASCULINE ORDINAL INDICATOR (high o-underline) */
+ if (lowByte == 0xAA) RETURN(true); /* FEMININE ORDINAL INDICATOR (high a-underline) */
+ if (lowByte == 0xB5) RETURN(true); /* MICRO SIGN */
+ if (lowByte == 0xBA) RETURN(true); /* MASCULINE ORDINAL INDICATOR (high o-underline) */
RETURN (false);
}
switch (val >> 8) {
case 0x01:
- if (val <= 0x0137) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x0148) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x0178) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x017E) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x0180) { RETURN (true); }
- if (val < 0x01CD) {
- if (val == 0x0181) { RETURN (false); }
- if (val <= 0x0185) {
- RETURN (TRUE_IF_ODD(val));
+ if (lowByte <= 0x37) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0x48) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0x78) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0x7E) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0x80) { RETURN (true); }
+ if (lowByte < 0xCD) {
+ if (lowByte == 0x81) { RETURN (false); }
+ if (lowByte <= 0x85) {
+ RETURN (TRUE_IF_ODD(lowByte));
}
- if (val == 0x0188) { RETURN (true); }
- if (val == 0x018C) { RETURN (true); }
- if (val == 0x018D) { RETURN (true); }
- if (val == 0x0192) { RETURN (true); }
- if (val == 0x0195) { RETURN (true); }
- if (val == 0x0199) { RETURN (true); }
- if (val == 0x019A) { RETURN (true); }
- if (val == 0x019B) { RETURN (true); }
- if (val == 0x019E) { RETURN (true); }
- if (val <= 0x01A0) { RETURN (false); }
- if (val <= 0x01A6) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x01AA) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x01AE) { RETURN (TRUE_IF_ODD(val)); }
- if (val == 0x01B2) { RETURN (false); }
- if (val <= 0x01B6) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x01B9) { RETURN (true); }
- if (val == 0x01BA) { RETURN (true); }
- if (val == 0x01BD) { RETURN (true); }
- if (val == 0x01BE) { RETURN (true); }
- if (val == 0x01BF) { RETURN (true); }
- if (val == 0x01C6) { RETURN (true); }
- if (val == 0x01C9) { RETURN (true); }
- if (val == 0x01CC) { RETURN (true); }
+ if (lowByte == 0x88) { RETURN (true); }
+ if (lowByte == 0x8C) { RETURN (true); }
+ if (lowByte == 0x8D) { RETURN (true); }
+ if (lowByte == 0x92) { RETURN (true); }
+ if (lowByte == 0x95) { RETURN (true); }
+ if (lowByte == 0x99) { RETURN (true); }
+ if (lowByte == 0x9A) { RETURN (true); }
+ if (lowByte == 0x9B) { RETURN (true); }
+ if (lowByte == 0x9E) { RETURN (true); }
+ if (lowByte <= 0xA0) { RETURN (false); }
+ if (lowByte <= 0xA6) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0xAA) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0xAE) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte == 0xB2) { RETURN (false); }
+ if (lowByte <= 0xB6) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0xB9) { RETURN (true); }
+ if (lowByte == 0xBA) { RETURN (true); }
+ if (lowByte == 0xBD) { RETURN (true); }
+ if (lowByte == 0xBE) { RETURN (true); }
+ if (lowByte == 0xBF) { RETURN (true); }
+ if (lowByte == 0xC6) { RETURN (true); }
+ if (lowByte == 0xC9) { RETURN (true); }
+ if (lowByte == 0xCC) { RETURN (true); }
RETURN (false);
}
- if (val <= 0x01DC) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x01EF) { RETURN (TRUE_IF_ODD(val)); }
- if (val == 0x01F0) { RETURN (true); }
- if (val == 0x01F1) { RETURN (false); }
- if (val == 0x01F2) { RETURN (false); }
- if (val == 0x01F3) { RETURN (true); }
- if (val <= 0x01F6) { RETURN (TRUE_IF_ODD(val)); }
- if (val == 0x01F7) { RETURN (false); }
- RETURN (TRUE_IF_ODD(val));
+ if (lowByte <= 0xDC) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0xEF) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte == 0xF0) { RETURN (true); }
+ if (lowByte == 0xF1) { RETURN (false); }
+ if (lowByte == 0xF2) { RETURN (false); }
+ if (lowByte == 0xF3) { RETURN (true); }
+ if (lowByte <= 0xF6) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte == 0xF7) { RETURN (false); }
+ RETURN (TRUE_IF_ODD(lowByte));
case 0x02:
- if (val <= 0x0233) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x0236) { RETURN (true); }
- if (val < 0x0250) { RETURN (false); }
- if (val < 0x02B0) { RETURN (true); }
+ if (lowByte <= 0x33) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0x36) { RETURN (true); }
+ if (lowByte < 0x50) { RETURN (false); }
+ if (lowByte < 0xB0) { RETURN (true); }
RETURN (false);
case 0x03:
- if (val == 0x0390) { RETURN (true); }
- if (val <= 0x03AB) { RETURN (false); }
- if (val <= 0x03D1) { RETURN (true); }
- if (val == 0x03D5) { RETURN (true); }
- if (val == 0x03D6) { RETURN (true); }
- if (val < 0x03D7) { RETURN (false); }
- if (val <= 0x03EF) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x03F3) { RETURN (true); }
- if (val == 0x03F5) { RETURN (true); }
+ if (lowByte == 0x90) { RETURN (true); }
+ if (lowByte <= 0xAB) { RETURN (false); }
+ if (lowByte <= 0xD1) { RETURN (true); }
+ if (lowByte == 0xD5) { RETURN (true); }
+ if (lowByte == 0xD6) { RETURN (true); }
+ if (lowByte < 0xD7) { RETURN (false); }
+ if (lowByte <= 0xEF) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0xF3) { RETURN (true); }
+ if (lowByte == 0xF5) { RETURN (true); }
#ifndef UNICODE_3_2
- if (val == 0x03F8) { RETURN (true); }
- if (val == 0x03FB) { RETURN (true); }
+ if (lowByte == 0xF8) { RETURN (true); }
+ if (lowByte == 0xFB) { RETURN (true); }
#endif
RETURN (false);
case 0x04:
- if (val <= 0x042F) { RETURN (false); }
- if (val <= 0x045F) { RETURN (true); }
- if (val <= 0x0481) { RETURN (TRUE_IF_ODD(val)); }
- if (val < 0x048A) { RETURN (false); }
- if (val <= 0x04C0) { RETURN (TRUE_IF_ODD(val)); }
+ if (lowByte <= 0x2F) { RETURN (false); }
+ if (lowByte <= 0x5F) { RETURN (true); }
+ if (lowByte <= 0x81) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte < 0x8A) { RETURN (false); }
+ if (lowByte <= 0xC0) { RETURN (TRUE_IF_ODD(lowByte)); }
#ifdef UNICODE_3_2
- if (val == 0x04C5) { RETURN (true); }
+ if (lowByte == 0xC5) { RETURN (true); }
#endif
#ifdef UNICODE_3_2
- if (val <= 0x04C8) { RETURN (TRUE_IF_EVEN(val)); }
+ if (lowByte <= 0xC8) { RETURN (TRUE_IF_EVEN(lowByte)); }
#else
- if (val <= 0x04CA) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x04CD) { RETURN (false); }
- if (val == 0x04CE) { RETURN (true); }
+ if (lowByte <= 0xCA) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0xCD) { RETURN (false); }
+ if (lowByte == 0xCE) { RETURN (true); }
#endif
- if (val == 0x04CB) { RETURN (false); }
- if (val == 0x04CC) { RETURN (true); }
- RETURN (TRUE_IF_ODD(val));
+ if (lowByte == 0xCB) { RETURN (false); }
+ if (lowByte == 0xCC) { RETURN (true); }
+ RETURN (TRUE_IF_ODD(lowByte));
case 0x05:
- if (val <= 0x050F) { RETURN (TRUE_IF_ODD(val)); }
- if (val < 0x0561) { RETURN (false); }
- if (val <= 0x0587) { RETURN (true); }
+ if (lowByte <= 0x0F) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte < 0x61) { RETURN (false); }
+ if (lowByte <= 0x87) { RETURN (true); }
RETURN (false);
case 0x1D:
#ifndef UNICODE_3_2
- if (val <= 0x1D2B) { RETURN (true); }
- if (val <= 0x1D61) { RETURN (false); }
- if (val <= 0x1D70) { RETURN (true); }
+ if (lowByte <= 0x2B) { RETURN (true); }
+ if (lowByte <= 0x61) { RETURN (false); }
+ if (lowByte <= 0x70) { RETURN (true); }
#endif
RETURN (false);
case 0x1E:
- if (val < 0x1E96) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x1E9F) { RETURN (true); }
- RETURN (TRUE_IF_ODD(val));
+ if (lowByte < 0x96) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0x9F) { RETURN (true); }
+ RETURN (TRUE_IF_ODD(lowByte));
case 0x1F:
- if (val <= 0x1F6F) {
- if (val & 0x0008) { RETURN (false); }
+ if (lowByte <= 0x6F) {
+ if (lowByte & 0x0008) { RETURN (false); }
RETURN (true);
}
- if (val <= 0x1F87) { RETURN (true); }
- if (val < 0x1FB8) {
- if (val & 0x0008) { RETURN (false); }
+ if (lowByte <= 0x87) { RETURN (true); }
+ if (lowByte < 0xB8) {
+ if (lowByte & 0x0008) { RETURN (false); }
RETURN (true);
}
- if (val == 0x1FBE) { RETURN (true); }
- if (val == 0x1FD4) { RETURN (false); }
- if (val == 0x1FC5) { RETURN (false); }
- if (val == 0x1FD5) { RETURN (false); }
- if (val == 0x1FC1) { RETURN (false); }
- if (val == 0x1FF1) { RETURN (false); }
- if (val == 0x1FC0) { RETURN (false); }
- if (val == 0x1FF0) { RETURN (false); }
- if (((val & 0x000F) >= 0x0000) && ((val & 0x000F) <= 0x0007)) { RETURN (true); }
+ if (lowByte == 0xBE) { RETURN (true); }
+ if (lowByte == 0xD4) { RETURN (false); }
+ if (lowByte == 0xC5) { RETURN (false); }
+ if (lowByte == 0xD5) { RETURN (false); }
+ if (lowByte == 0xC1) { RETURN (false); }
+ if (lowByte == 0xF1) { RETURN (false); }
+ if (lowByte == 0xC0) { RETURN (false); }
+ if (lowByte == 0xF0) { RETURN (false); }
+ if (((lowByte & 0x000F) >= 0x0000) && ((lowByte & 0x000F) <= 0x0007)) { RETURN (true); }
RETURN (false);
case 0x20:
#ifndef UNICODE_3_2
- if (val == 0x2071) { RETURN (true); }
+ if (lowByte == 0x71) { RETURN (true); }
#endif
- if (val == 0x207F) { RETURN (true); }
+ if (lowByte == 0x7F) { RETURN (true); }
RETURN (false);
case 0x21:
- if (val == 0x210A) { RETURN (true); }
- if (val < 0x210E) { RETURN (false); }
- if (val <= 0x210F) { RETURN (true); }
- if (val == 0x2113) { RETURN (true); }
- if (val == 0x212F) { RETURN (true); }
- if (val == 0x2134) { RETURN (true); }
- if (val == 0x2139) { RETURN (true); }
+ if (lowByte == 0x0A) { RETURN (true); }
+ if (lowByte < 0x0E) { RETURN (false); }
+ if (lowByte <= 0x0F) { RETURN (true); }
+ if (lowByte == 0x13) { RETURN (true); }
+ if (lowByte == 0x2F) { RETURN (true); }
+ if (lowByte == 0x34) { RETURN (true); }
+ if (lowByte == 0x39) { RETURN (true); }
#ifndef UNICODE_3_2
- if (val == 0x213D) { RETURN (true); }
- if (val <= 0x2145) { RETURN (false); }
- if (val <= 0x2149) { RETURN (true); }
+ if (lowByte == 0x3D) { RETURN (true); }
+ if (lowByte <= 0x45) { RETURN (false); }
+ if (lowByte <= 0x49) { RETURN (true); }
#endif
RETURN (false);
case 0xFB:
- if (val <= 0xFB1C) { RETURN (true); }
+ if (lowByte <= 0x1C) { RETURN (true); }
RETURN (false);
case 0xFF:
- if ((val >= 0xFF41) && (val <= 0xFF5A)) { RETURN (true); }
+ if ((lowByte >= 0x41) && (lowByte <= 0x5A)) { RETURN (true); }
RETURN (false);
case 0x104:
- if (val <= 0x10427) { RETURN (false); }
- if (val <= 0x1044D) { RETURN (true); }
+ if (lowByte <= 0x27) { RETURN (false); }
+ if (lowByte <= 0x4D) { RETURN (true); }
#ifdef UNICODE_3_2
- if (val <= 0x1044D) { RETURN (true); }
+ if (lowByte <= 0x4D) { RETURN (true); }
#else
- if (val <= 0x1044F) { RETURN (true); }
+ if (lowByte <= 0x4F) { RETURN (true); }
#endif
RETURN (false);
@@ -2126,11 +2128,11 @@
#ifdef UNICODE_4
case 0x1D7:
- if (val <= 0x1D71b) { RETURN (true); }
- if (val <= 0x1D735) { RETURN (false); }
- if (val <= 0x1D755) { RETURN (true); }
- if (val <= 0x1D76f) { RETURN (false); }
- if (val <= 0x1D78F) { RETURN (true); }
+ if (lowByte <= 0x1b) { RETURN (true); }
+ if (lowByte <= 0x35) { RETURN (false); }
+ if (lowByte <= 0x55) { RETURN (true); }
+ if (lowByte <= 0x6f) { RETURN (false); }
+ if (lowByte <= 0x8F) { RETURN (true); }
RETURN (false);
#endif
@@ -2200,17 +2202,19 @@
/* because used so often, this is open coded, instead of table driven */
REGISTER unsigned INT val;
+ REGISTER int lowByte;
val = __intVal(__INST(asciivalue));
+ lowByte = val & 0xFF;
/* the most likely case here, outside the switch */
if (val <= 0xFF) {
- if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
+ if ((unsigned int)(lowByte - 'A') <= ('Z' - 'A')) {
RETURN ( true );
}
/* iso8859 puts national upper case characters at c0 .. df */
- if ((val >= 0xC0) && (val <= 0xDE)) {
- if (val != 0xD7) {
+ if ((lowByte >= 0xC0) && (lowByte <= 0xDE)) {
+ if (lowByte != 0xD7) {
RETURN(true);
}
}
@@ -2219,164 +2223,164 @@
switch (val >> 8) {
case 0x01:
- if (val <= 0x0137) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x0148) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x0178) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x017E) { RETURN (TRUE_IF_ODD(val)); }
- if (val < 0x01CD) {
- if (val == 0x0180) { RETURN (false); }
- if (val == 0x0181) { RETURN (true); }
- if (val <= 0x0186) {
- RETURN (TRUE_IF_EVEN(val));
+ if (lowByte <= 0x37) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0x48) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0x78) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0x7E) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte < 0xCD) {
+ if (lowByte == 0x80) { RETURN (false); }
+ if (lowByte == 0x81) { RETURN (true); }
+ if (lowByte <= 0x86) {
+ RETURN (TRUE_IF_EVEN(lowByte));
}
- if (val <= 0x0189) {
- RETURN (TRUE_IF_ODD(val));
+ if (lowByte <= 0x89) {
+ RETURN (TRUE_IF_ODD(lowByte));
}
- if (val <= 0x018B) { RETURN (true); }
- if (val <= 0x018D) { RETURN (false); }
- if (val <= 0x0191) { RETURN (true); }
- if (val == 0x0193) { RETURN (true); }
- if (val == 0x0194) { RETURN (true); }
- if (val == 0x0196) { RETURN (true); }
- if (val == 0x0197) { RETURN (true); }
- if (val == 0x0198) { RETURN (true); }
- if (val == 0x019C) { RETURN (true); }
- if (val == 0x019D) { RETURN (true); }
- if (val == 0x019F) { RETURN (true); }
- if (val < 0x01A0) { RETURN (false); }
- if (val <= 0x01A6) { RETURN (TRUE_IF_EVEN(val)); }
- if (val <= 0x01AA) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x01AE) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x01B2) { RETURN (true); }
- if (val <= 0x01B7) { RETURN (TRUE_IF_ODD(val)); }
- if (val == 0x01B8) { RETURN (true); }
- if (val == 0x01BC) { RETURN (true); }
- if (val == 0x01C4) { RETURN (true); }
- if (val == 0x01C7) { RETURN (true); }
+ if (lowByte <= 0x8B) { RETURN (true); }
+ if (lowByte <= 0x8D) { RETURN (false); }
+ if (lowByte <= 0x91) { RETURN (true); }
+ if (lowByte == 0x93) { RETURN (true); }
+ if (lowByte == 0x94) { RETURN (true); }
+ if (lowByte == 0x96) { RETURN (true); }
+ if (lowByte == 0x97) { RETURN (true); }
+ if (lowByte == 0x98) { RETURN (true); }
+ if (lowByte == 0x9C) { RETURN (true); }
+ if (lowByte == 0x9D) { RETURN (true); }
+ if (lowByte == 0x9F) { RETURN (true); }
+ if (lowByte < 0xA0) { RETURN (false); }
+ if (lowByte <= 0xA6) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte <= 0xAA) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0xAE) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0xB2) { RETURN (true); }
+ if (lowByte <= 0xB7) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte == 0xB8) { RETURN (true); }
+ if (lowByte == 0xBC) { RETURN (true); }
+ if (lowByte == 0xC4) { RETURN (true); }
+ if (lowByte == 0xC7) { RETURN (true); }
#if 0
- if (val == 0x01C8) { RETURN (true); }
+ if (lowByte == 0xC8) { RETURN (true); }
#endif
- if (val == 0x01CA) { RETURN (true); }
+ if (lowByte == 0xCA) { RETURN (true); }
#if 0
- if (val == 0x01CB) { RETURN (true); }
+ if (lowByte == 0xCB) { RETURN (true); }
#endif
RETURN (false); /* WRONG !!! */
}
- if (val <= 0x01DC) { RETURN (TRUE_IF_ODD(val)); }
- if (val <= 0x01EF) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x01F0) { RETURN (false); }
- if (val == 0x01F1) { RETURN (true); }
- if (val == 0x01F2) { RETURN (false); }
- if (val == 0x01F3) { RETURN (false); }
- if (val == 0x01F4) { RETURN (true); }
- if (val == 0x01F5) { RETURN (false); }
- if (val == 0x01F6) { RETURN (true); }
- if (val == 0x01F7) { RETURN (true); }
- RETURN (TRUE_IF_EVEN(val));
+ if (lowByte <= 0xDC) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte <= 0xEF) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0xF0) { RETURN (false); }
+ if (lowByte == 0xF1) { RETURN (true); }
+ if (lowByte == 0xF2) { RETURN (false); }
+ if (lowByte == 0xF3) { RETURN (false); }
+ if (lowByte == 0xF4) { RETURN (true); }
+ if (lowByte == 0xF5) { RETURN (false); }
+ if (lowByte == 0xF6) { RETURN (true); }
+ if (lowByte == 0xF7) { RETURN (true); }
+ RETURN (TRUE_IF_EVEN(lowByte));
case 0x02:
- if (val <= 0x0233) { RETURN (TRUE_IF_EVEN(val)); }
+ if (lowByte <= 0x33) { RETURN (TRUE_IF_EVEN(lowByte)); }
RETURN (false);
case 0x03:
- if (val < 0x0386) { RETURN (false); }
- if (val == 0x0387) { RETURN (false); }
- if (val == 0x0390) { RETURN (false); }
- if (val <= 0x03AB) { RETURN (true); }
- if (val <= 0x03D1) { RETURN (false); }
- if (val <= 0x03D4) { RETURN (true); }
- if (val <= 0x03D7) { RETURN (false); }
- if (val <= 0x03EF) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x03F4) { RETURN (true); }
+ if (lowByte < 0x86) { RETURN (false); }
+ if (lowByte == 0x87) { RETURN (false); }
+ if (lowByte == 0x90) { RETURN (false); }
+ if (lowByte <= 0xAB) { RETURN (true); }
+ if (lowByte <= 0xD1) { RETURN (false); }
+ if (lowByte <= 0xD4) { RETURN (true); }
+ if (lowByte <= 0xD7) { RETURN (false); }
+ if (lowByte <= 0xEF) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0xF4) { RETURN (true); }
#ifndef UNICODE_3_2
- if (val == 0x03F7) { RETURN (true); }
- if (val == 0x03F9) { RETURN (true); }
- if (val == 0x03Fa) { RETURN (true); }
+ if (lowByte == 0xF7) { RETURN (true); }
+ if (lowByte == 0xF9) { RETURN (true); }
+ if (lowByte == 0xFa) { RETURN (true); }
#endif
RETURN (false);
case 0x04:
- if (val <= 0x042F) { RETURN (true); }
- if (val <= 0x045F) { RETURN (false); }
- if (val <= 0x0481) { RETURN (TRUE_IF_EVEN(val)); }
- if (val < 0x048A) { RETURN (false); }
- if (val <= 0x04C0) { RETURN (TRUE_IF_EVEN(val)); }
+ if (lowByte <= 0x2F) { RETURN (true); }
+ if (lowByte <= 0x5F) { RETURN (false); }
+ if (lowByte <= 0x81) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte < 0x8A) { RETURN (false); }
+ if (lowByte <= 0xC0) { RETURN (TRUE_IF_EVEN(lowByte)); }
#ifdef UNICODE_3_2
- if (val == 0x04C5) { RETURN (false); }
+ if (lowByte == 0xC5) { RETURN (false); }
#endif
#ifdef UNICODE_3_2
- if (val <= 0x04C8) { RETURN (TRUE_IF_ODD(val)); }
+ if (lowByte <= 0xC8) { RETURN (TRUE_IF_ODD(lowByte)); }
#else
- if (val <= 0x04CA) { RETURN (TRUE_IF_ODD(val)); }
- if (val == 0x04CD) { RETURN (true); }
- if (val == 0x04CE) { RETURN (false); }
+ if (lowByte <= 0xCA) { RETURN (TRUE_IF_ODD(lowByte)); }
+ if (lowByte == 0xCD) { RETURN (true); }
+ if (lowByte == 0xCE) { RETURN (false); }
#endif
- if (val == 0x04CB) { RETURN (true); }
- if (val == 0x04CC) { RETURN (false); }
- RETURN (TRUE_IF_EVEN(val));
+ if (lowByte == 0xCB) { RETURN (true); }
+ if (lowByte == 0xCC) { RETURN (false); }
+ RETURN (TRUE_IF_EVEN(lowByte));
case 0x05:
- if (val <= 0x050F) { RETURN (TRUE_IF_EVEN(val)); }
- if (val < 0x0531) { RETURN (false); }
- if (val <= 0x0556) { RETURN (true); }
+ if (lowByte <= 0x0F) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte < 0x31) { RETURN (false); }
+ if (lowByte <= 0x56) { RETURN (true); }
RETURN (false);
case 0x10:
- if (val < 0x10A0) { RETURN (false); }
- if (val <= 0x10CF) { RETURN (true); }
+ if (lowByte < 0xA0) { RETURN (false); }
+ if (lowByte <= 0xCF) { RETURN (true); }
RETURN (false);
case 0x1E:
- if (val < 0x1E96) { RETURN (TRUE_IF_EVEN(val)); }
- if (val < 0x1EA0) { RETURN (false); }
- RETURN (TRUE_IF_EVEN(val));
+ if (lowByte < 0x96) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte < 0xA0) { RETURN (false); }
+ RETURN (TRUE_IF_EVEN(lowByte));
case 0x1F:
- if (val <= 0x1F6F) {
- if (val & 0x0008) { RETURN (true); }
+ if (lowByte <= 0x6F) {
+ if (lowByte & 0x0008) { RETURN (true); }
}
- if (val <= 0x1F87) { RETURN (false); }
- if (val < 0x1FB8) { RETURN (false); }
- if (val < 0x1FBC) { RETURN (true); }
- if (val == 0x1FEC) { RETURN (true); }
- if (((val & 0x000F) >= 0x0008) && ((val & 0x000F) <= 0x000B)) { RETURN (true); }
+ if (lowByte <= 0x87) { RETURN (false); }
+ if (lowByte < 0xB8) { RETURN (false); }
+ if (lowByte < 0xBC) { RETURN (true); }
+ if (lowByte == 0xEC) { RETURN (true); }
+ if (((lowByte & 0x000F) >= 0x0008) && ((lowByte & 0x000F) <= 0x000B)) { RETURN (true); }
RETURN (false);
case 0x21:
- if (val == 0x2102) { RETURN (true); }
- if (val == 0x2107) { RETURN (true); }
- if (val < 0x210B) { RETURN (false); }
- if (val < 0x210E) { RETURN (true); }
- if (val == 0x2110) { RETURN (true); }
- if (val == 0x2111) { RETURN (true); }
- if (val == 0x2112) { RETURN (true); }
- if (val == 0x2115) { RETURN (true); }
- if (val == 0x2119) { RETURN (true); }
- if (val == 0x211A) { RETURN (true); }
- if (val == 0x211B) { RETURN (true); }
- if (val == 0x211C) { RETURN (true); }
- if (val == 0x211D) { RETURN (true); }
- if (val < 0x2124) { RETURN (false); }
- if (val <= 0x212A) { RETURN (TRUE_IF_EVEN(val)); }
- if (val == 0x212B) { RETURN (true); }
- if (val == 0x212C) { RETURN (true); }
- if (val == 0x212D) { RETURN (true); }
- if (val == 0x2130) { RETURN (true); }
- if (val == 0x2131) { RETURN (true); }
- if (val == 0x2133) { RETURN (true); }
+ if (lowByte == 0x02) { RETURN (true); }
+ if (lowByte == 0x07) { RETURN (true); }
+ if (lowByte < 0x0B) { RETURN (false); }
+ if (lowByte < 0x0E) { RETURN (true); }
+ if (lowByte == 0x10) { RETURN (true); }
+ if (lowByte == 0x11) { RETURN (true); }
+ if (lowByte == 0x12) { RETURN (true); }
+ if (lowByte == 0x15) { RETURN (true); }
+ if (lowByte == 0x19) { RETURN (true); }
+ if (lowByte == 0x1A) { RETURN (true); }
+ if (lowByte == 0x1B) { RETURN (true); }
+ if (lowByte == 0x1C) { RETURN (true); }
+ if (lowByte == 0x1D) { RETURN (true); }
+ if (lowByte < 0x24) { RETURN (false); }
+ if (lowByte <= 0x2A) { RETURN (TRUE_IF_EVEN(lowByte)); }
+ if (lowByte == 0x2B) { RETURN (true); }
+ if (lowByte == 0x2C) { RETURN (true); }
+ if (lowByte == 0x2D) { RETURN (true); }
+ if (lowByte == 0x30) { RETURN (true); }
+ if (lowByte == 0x31) { RETURN (true); }
+ if (lowByte == 0x33) { RETURN (true); }
#ifndef UNICODE_3_2
- if (val == 0x213E) { RETURN (true); }
- if (val == 0x213F) { RETURN (true); }
- if (val == 0x2145) { RETURN (true); }
+ if (lowByte == 0x3E) { RETURN (true); }
+ if (lowByte == 0x3F) { RETURN (true); }
+ if (lowByte == 0x45) { RETURN (true); }
#endif
RETURN (false);
case 0xFF:
- if ((val >= 0xFF21) && (val <= 0xFF3A)) { RETURN (true); }
+ if ((lowByte >= 0x21) && (lowByte <= 0x3A)) { RETURN (true); }
RETURN (false);
case 0x104:
- if (val <= 0x10427) { RETURN (true); }
+ if (lowByte <= 0x27) { RETURN (true); }
RETURN (false);
case 0x1D4:
@@ -2834,7 +2838,7 @@
RETURN (false);
case 0x1d:
- if (val = 0x1d00) { RETURN (true); }
+ if (val == 0x1d00) { RETURN (true); }
RETURN (false);
case 0x1e:
@@ -3056,4 +3060,3 @@
version_CVS
^ '$Header$'
! !
-