Character.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18692 442b51ab0e41
child 18806 2fb07499b4f2
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
     1
"{ Encoding: utf8 }"
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
     2
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     4
 COPYRIGHT (c) 1988 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
     5
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
"
5407
d6729266a95b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
    14
"{ Package: 'stx:libbasic' }"
d6729266a95b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
    15
17346
a21eaa06b20b class: Character
Claus Gittinger <cg@exept.de>
parents: 17249
diff changeset
    16
"{ NameSpace: Smalltalk }"
a21eaa06b20b class: Character
Claus Gittinger <cg@exept.de>
parents: 17249
diff changeset
    17
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    18
Magnitude subclass:#Character
995
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    19
	instanceVariableNames:'asciivalue'
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    20
	classVariableNames:'CharacterTable Separators'
995
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    21
	poolDictionaries:''
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    22
	category:'Magnitude-General'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
    25
!Character class methodsFor:'documentation'!
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
    26
88
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    27
copyright
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    28
"
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    29
 COPYRIGHT (c) 1988 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    30
	      All Rights Reserved
88
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    31
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    32
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    33
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    35
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    36
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    37
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    38
"
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    39
!
81dacba7a63a *** empty log message ***
claus
parents: 68
diff changeset
    40
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
    41
documentation
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
    42
"
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
    43
    This class represents characters.
7897
08fd96f5c1d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7799
diff changeset
    44
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
    45
    Notice, that actual character objects are not used when characters
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    46
    are stored in strings, symbols etc.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    47
    These only store a character's asciiValue/codePoint for a more compact representation.
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
    48
    The word 'asciiValue' is a historic leftover - actually, any integer
8028
4fecc8242a64 comment
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
    49
    code is allowed and actually used (i.e. characters are not limited to 8bit).
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    50
    Also, the encoding is actually Unicode, of which ascii is a subset and the same encoding value
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    51
    for the first 128 characters (codePoint 0 to 127 are the same in ascii).
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    52
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    53
    Some heavily used Characters are kept as singletons; i.e. for every asciiValue (0..N),
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    54
    there exists exactly one instance of Character, which is shared.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    55
    Character value:xxx checks for this, and returns a reference to an existing instance.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    56
    For N<=255, this is guaranteed; i.e. in all Smalltalks, the single byte characters are always
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    57
    handled like this, and you can therefore safely compare them using == (identity compare).
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    58
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    59
    Other characters (i.e. codepoint > N) are not guaranteed to be shared;
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    60
    i.e. these my or may not be created as required.
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    61
    Actually, do NOT depend on which characters are and which are not shared.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    62
    Always compare using #= if there is any chance of a non-ascii character being involved.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    63
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    64
    Once again (because beginners sometimes make this mistake):
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    65
	This means: you may compare characters using #== ONLY IFF you are certain,
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    66
	that the characters ranges is 0..255.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    67
	Otherwise, you HAVE TO compare using #=. (if in doubt, always compare using #=).
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    68
	Sorry for this inconvenience, but it is (practically) impossible to keep
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    69
	the possible maximum of 2^32 characters (Unicode) around, for that convenience alone.
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    70
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    71
    In ST/X, N is (currently) 1024. This means that all the latin characters and some others are
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    72
    kept as singleton in the CharacterTable class variable (which is also used by the VM when characters
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
    73
    are instanciated).
357
claus
parents: 345
diff changeset
    74
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    75
    Methods marked as (JS) come from the manchester Character goody
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    76
    (CharacterComparing) by Jan Steinman, which allow Characters to be used as
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
    77
    Interval elements (i.e. ($a to:$z) do:[...] );
1229
ace799c5765e commentary
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
    78
    They are not a big deal, but convenient add-ons.
ace799c5765e commentary
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
    79
    Some of these have been modified a bit.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    80
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
    81
    WARNING: characters are known by compiler and runtime system -
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    82
	     do not change the instance layout.
357
claus
parents: 345
diff changeset
    83
claus
parents: 345
diff changeset
    84
    Also, although you can create subclasses of Character, the compiler always
claus
parents: 345
diff changeset
    85
    creates instances of Character for literals ...
814
d4d28ca7afcd made the global CharacterTable a classVar of Character
Claus Gittinger <cg@exept.de>
parents: 760
diff changeset
    86
    ... and other classes are hard-wired to always return instances of characters
357
claus
parents: 345
diff changeset
    87
    in some cases (i.e. String>>at:, Symbol>>at: etc.).
claus
parents: 345
diff changeset
    88
    Therefore, it may not make sense to create a character-subclass.
1295
83f594f05c52 documentation
Claus Gittinger <cg@exept.de>
parents: 1271
diff changeset
    89
8028
4fecc8242a64 comment
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
    90
    Case Mapping in Unicode:
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    91
	There are a number of complications to case mappings that occur once the repertoire
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    92
	of characters is expanded beyond ASCII.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    93
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    94
	* Because of the inclusion of certain composite characters for compatibility,
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    95
	  such as U+01F1 'DZ' capital dz, there is a third case, called titlecase,
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    96
	  which is used where the first letter of a word is to be capitalized
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    97
	  (e.g. Titlecase, vs. UPPERCASE, or lowercase).
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    98
	  For example, the title case of the example character is U+01F2 'Dz' capital d with small z.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
    99
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   100
	* Case mappings may produce strings of different length than the original.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   101
	  For example, the German character U+00DF small letter sharp s expands when uppercased to
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   102
	  the sequence of two characters 'SS'.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   103
	  This also occurs where there is no precomposed character corresponding to a case mapping.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   104
	  *** This is not yet implemented (in 5.2) ***
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   105
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   106
	* Characters may also have different case mappings, depending on the context.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   107
	  For example, U+03A3 capital sigma lowercases to U+03C3 small sigma if it is not followed
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   108
	  by another letter, but lowercases to 03C2 small final sigma if it is.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   109
	  *** This is not yet implemented (in 5.2) ***
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   110
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   111
	* Characters may have case mappings that depend on the locale.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   112
	  For example, in Turkish the letter 0049 'I' capital letter i lowercases to 0131 small dotless i.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   113
	  *** This is not yet implemented (in 5.2) ***
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   114
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   115
	* Case mappings are not, in general, reversible.
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   116
	  For example, once the string 'McGowan' has been uppercased, lowercased or titlecased,
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   117
	  the original cannot be recovered by applying another uppercase, lowercase, or titlecase operation.
8028
4fecc8242a64 comment
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
   118
4fecc8242a64 comment
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
   119
    Collation Sequence:
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   120
	*** This is not yet implemented (in 5.2) ***
8028
4fecc8242a64 comment
Claus Gittinger <cg@exept.de>
parents: 8026
diff changeset
   121
1295
83f594f05c52 documentation
Claus Gittinger <cg@exept.de>
parents: 1271
diff changeset
   122
    [author:]
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   123
	Claus Gittinger
1295
83f594f05c52 documentation
Claus Gittinger <cg@exept.de>
parents: 1271
diff changeset
   124
83f594f05c52 documentation
Claus Gittinger <cg@exept.de>
parents: 1271
diff changeset
   125
    [see also:]
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   126
	String TwoByteString Unicode16String Unicode32String
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   127
	StringCollection Text
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
   128
"
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
   129
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   130
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
   131
!Character class methodsFor:'instance creation'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   132
a27a279701f8 Initial revision
claus
parents:
diff changeset
   133
basicNew
a27a279701f8 Initial revision
claus
parents:
diff changeset
   134
    "catch new - Characters cannot be created with new"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   135
a27a279701f8 Initial revision
claus
parents:
diff changeset
   136
    ^ self error:'Characters cannot be created with new'
a27a279701f8 Initial revision
claus
parents:
diff changeset
   137
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   138
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   139
codePoint:anInteger
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   140
    "return a character with codePoint anInteger"
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   141
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   142
%{  /* NOCONTEXT */
18240
28af09029a8b ifdef for SCHTEAM engine changed (not relevant for ST/X)
Claus Gittinger <cg@exept.de>
parents: 18215
diff changeset
   143
#ifdef __SCHTEAM__
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   144
    {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   145
	char ch = (char)(context.stArg(0).intValue("[codePoint:]"));
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   146
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   147
	return context._RETURN(STCharacter._new(ch));
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   148
    }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   149
    /* NOTREACHED */
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   150
#else
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   151
    INT __codePoint;
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   152
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   153
    if (__isSmallInteger(anInteger)) {
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   154
	__codePoint = __smallIntegerVal(anInteger);
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   155
	if ((unsigned INT)(__codePoint) <= MAX_IMMEDIATE_CHARACTER /* (__codePoint >= 0) && (__codePoint <= 255) */) {
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   156
	    RETURN ( __MKCHARACTER(__codePoint) );
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   157
	} else {
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   158
	    RETURN ( __MKUCHARACTER(__codePoint) );
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   159
	}
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   160
    }
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   161
#endif
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   162
%}.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   163
    (anInteger between:0 and:(CharacterTable size - 1)) ifTrue:[
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   164
	^ CharacterTable at:(anInteger + 1)
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   165
    ].
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   166
    (anInteger between:16r100 and:16r3FFFFFFF) ifTrue:[
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   167
	^ super basicNew setCodePoint:anInteger
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   168
    ].
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   169
    "
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   170
     a characters codePoint must be 0..16r3FFFFFFF.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   171
     (i.e. only characters with up-to 30 bits are allowed.)
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   172
    "
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   173
    RangeError raiseWith:anInteger errorString:'invalid codePoint for character'
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   174
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   175
    "
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   176
      self codePoint:16r34.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   177
      self codePoint:16r3455.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   178
      self codePoint:16rFFFFFFFFFFFFFFFFFFF.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   179
    "
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   180
!
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   181
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   182
digitValue:anInteger
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   183
    "return a character that corresponds to anInteger.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   184
     0-9 map to $0-$9, 10-35 map to $A-$Z"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   185
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   186
    |val "{ Class: SmallInteger }" |
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   187
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   188
    val := anInteger.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   189
    (val between:0 and:9) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   190
	^ Character codePoint:(val + ($0 codePoint))
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   191
    ].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   192
    (val between:10 and:35) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   193
	^ Character codePoint:(val + ($A codePoint - 10))
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   194
    ].
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   195
    ^ self error:'value not in range 0 to 35'
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   196
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   197
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   198
utf8DecodeFrom:aStream
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   199
    "read and return a single unicode character from an UTF8 encoded stream"
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   200
18605
4f0a114fed00 class: Character
Stefan Vogel <sv@exept.de>
parents: 18595
diff changeset
   201
    |fetchNext c1 c2 codePoint|
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   202
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   203
    c1 := aStream next.
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   204
    codePoint := c1 codePoint.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   205
    codePoint <= 16r7F ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   206
	"/ 0xxxxxxx - 7 bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   207
	^ c1 asCharacter.
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   208
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   209
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   210
    (codePoint bitAnd:2r11000000) == 2r10000000 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   211
	"/ out of sync (got an intermediate character)
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   212
	InvalidEncodingError raiseRequestWith:codePoint errorString:' - out of sync'.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   213
	^ c1 asCharacter.
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   214
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   215
18605
4f0a114fed00 class: Character
Stefan Vogel <sv@exept.de>
parents: 18595
diff changeset
   216
    fetchNext := [  |code|
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   217
		    code := aStream next codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   218
		    (code bitAnd:2r11000000) == 2r10000000 ifFalse:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   219
			"/ followup chars must have 2r10 in high bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   220
			InvalidEncodingError raiseRequestWith:code.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   221
			^ c1 asCharacter.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   222
		    ].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   223
		    code bitAnd:16r3F
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   224
		 ].
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   225
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   226
    (codePoint bitAnd:2r11100000) == 2r11000000 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   227
	"/ 110xxxxx 10xxxxxx - 11 bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   228
	codePoint := codePoint bitAnd:16r1F.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   229
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   230
	codePoint <= 16r7F ifTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   231
	    InvalidEncodingError raiseRequestWith:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   232
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   233
	^ Character codePoint:codePoint
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   234
    ].
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   235
    (codePoint bitAnd:2r11110000) == 2r11100000 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   236
	"/ 1110xxxx 10xxxxxx 10xxxxxx - 16 bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   237
	codePoint := codePoint bitAnd:16r0F.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   238
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   239
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   240
	codePoint <= 16r7FF ifTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   241
	    InvalidEncodingError raiseRequestWith:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   242
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   243
	^ Character codePoint:codePoint
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   244
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   245
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   246
    (codePoint bitAnd:2r11111000) == 2r11110000 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   247
	"/ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - 21 bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   248
	codePoint := codePoint bitAnd:16r07.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   249
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   250
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   251
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   252
	codePoint <= 16rFFFF ifTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   253
	    InvalidEncodingError raiseRequestWith:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   254
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   255
	^ Character codePoint:codePoint
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   256
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   257
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   258
    (codePoint bitAnd:2r11111100) == 2r11111000 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   259
	"/ 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - 26 bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   260
	codePoint := codePoint bitAnd:16r03.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   261
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   262
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   263
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   264
	codePoint := (codePoint bitShift:6) bitOr:(fetchNext value).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   265
	codePoint <= 16r1FFFFF ifTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   266
	    InvalidEncodingError raiseRequestWith:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   267
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   268
	^ Character codePoint:codePoint
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   269
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   270
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   271
    (codePoint bitAnd:2r11111110) == 2r11111100 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   272
	"/ 1111110x ... 10xxxxxx - any number of bits
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   273
	codePoint := codePoint bitAnd:16r01.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   274
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   275
	c2 := aStream peek.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   276
	[c2 notNil and:[(c2 codePoint bitAnd:2r11000000) == 2r10000000]] whileTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   277
	    codePoint := (codePoint bitShift:6) bitOr:(c2 codePoint bitAnd:16r3F).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   278
	    aStream next.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   279
	    c2 := aStream peek.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   280
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   281
	codePoint <= 16r3FFFFFF ifTrue:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   282
	    InvalidEncodingError raiseRequestWith:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   283
	].
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   284
	^ Character codePoint:codePoint
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   285
    ].
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   286
11325
b2ba4174deb8 Raise InvalidEncodingError when utf8 decode fails
Stefan Vogel <sv@exept.de>
parents: 11321
diff changeset
   287
    InvalidEncodingError raiseRequestWith:codePoint.
18605
4f0a114fed00 class: Character
Stefan Vogel <sv@exept.de>
parents: 18595
diff changeset
   288
    ^ c1 asCharacter.
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   289
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   290
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   291
      Character utf8DecodeFrom:'a' readStream
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   292
      Character utf8DecodeFrom:#[195 188] asString readStream
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   293
    "
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   294
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   295
    "test:
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   296
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   297
      |utf8Encoding original readBack|
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   298
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   299
      1 to:16rFFFF do:[:codePoint |
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   300
	original := Character value:codePoint.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   301
	utf8Encoding := original utf8Encoded.
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   302
	readBack := Character utf8DecodeFrom:(utf8Encoding readStream).
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   303
	readBack codePoint = codePoint ifFalse:[
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   304
	    self halt
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
   305
	]
6808
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   306
      ]
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   307
    "
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   308
!
f45445c6dfdb utf8 encoding fixed;
Claus Gittinger <cg@exept.de>
parents: 6531
diff changeset
   309
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   310
value:anInteger
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   311
    "return a character with codePoint anInteger - backward compatibility"
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   312
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   313
    ^ self codePoint:anInteger
5945
Claus Gittinger <cg@exept.de>
parents: 5847
diff changeset
   314
! !
Claus Gittinger <cg@exept.de>
parents: 5847
diff changeset
   315
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   316
!Character class methodsFor:'accessing untypeable characters'!
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   317
15689
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   318
controlCharacter:char
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   319
    "Answer the Character representing ctrl-char.
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   320
     ctrl-a -> 1; ctrl-@ -> 0"
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   321
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   322
    char == $@ ifTrue:[^ self codePoint:0].
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   323
    self assert:char isLetter.
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   324
    ^ self codePoint:(char asLowercase - $a + 1)
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   325
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   326
    "
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   327
     self controlCharacter:$@
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   328
     self controlCharacter:$d
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   329
    "
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   330
!
76245e4ca77b class: Character
Claus Gittinger <cg@exept.de>
parents: 15262
diff changeset
   331
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   332
endOfInput
11144
ba697d3f940c category change
Claus Gittinger <cg@exept.de>
parents: 10948
diff changeset
   333
    "Answer the Character representing ctrl-d (Unix-EOF)."
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   334
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   335
    ^ self codePoint:4
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   336
!
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   337
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   338
leftParenthesis
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   339
    "Answer the Character representing a left parenthesis."
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   340
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   341
    ^ self codePoint:40
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   342
!
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   343
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   344
period
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   345
    "Answer the Character representing a carriage period."
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   346
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   347
    ^ self codePoint:46
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   348
!
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   349
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   350
poundSign
11144
ba697d3f940c category change
Claus Gittinger <cg@exept.de>
parents: 10948
diff changeset
   351
    "Answer the Character representing a pound sign (hash)."
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   352
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   353
    ^ self codePoint:35
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   354
!
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   355
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   356
rightParenthesis
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   357
    "Answer the Character representing a right parenthesis."
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   358
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   359
    ^ self codePoint:41
2214
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   360
! !
2c73e6907cbc fixed #isNationalLetter
Claus Gittinger <cg@exept.de>
parents: 2124
diff changeset
   361
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
   362
!Character class methodsFor:'constants'!
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   363
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   364
backspace
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   365
    "return the backspace character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   366
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   367
    ^ Character codePoint:8
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   368
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   369
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   370
bell
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   371
    "return the bell character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   372
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   373
    ^ Character codePoint:7
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   374
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   375
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   376
cr
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   377
    "return the lineEnd character
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   378
     - actually (in unix) this is a newline character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   379
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   380
    ^ Character codePoint:10
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   381
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   382
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   383
del
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   384
    "return the delete character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   385
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   386
    ^ Character codePoint:16r7F
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   387
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   388
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   389
doubleQuote
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   390
    "return the double-quote character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   391
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   392
    ^ Character codePoint:34
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   393
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   394
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   395
esc
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   396
    "return the escape character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   397
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   398
    ^ Character codePoint:27
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   399
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   400
10428
fm
parents: 9654
diff changeset
   401
etx
fm
parents: 9654
diff changeset
   402
    "return the end-of-text character"
fm
parents: 9654
diff changeset
   403
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   404
    ^ Character codePoint:3
10428
fm
parents: 9654
diff changeset
   405
!
fm
parents: 9654
diff changeset
   406
7688
8494a4155037 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7354
diff changeset
   407
euro
7689
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   408
    "The Euro currency sign (notice: not all fonts support it).
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   409
     The Unicode encoding is U+20AC"
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   410
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   411
    ^ Character codePoint:16r20AC
7689
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   412
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   413
    "
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   414
     Transcript font:(Font family:'courier' size:12 encoding:'iso10646-1').
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   415
     Transcript showCR:Character euro
7976
1ce9243a8601 euro encoding
Claus Gittinger <cg@exept.de>
parents: 7951
diff changeset
   416
    "
1ce9243a8601 euro encoding
Claus Gittinger <cg@exept.de>
parents: 7951
diff changeset
   417
    "
7689
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   418
     0 to:255 do:[:i |
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   419
	Transcript
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   420
	    show:'| '; show:((i printStringRadix:16) leftPaddedTo:2);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   421
	    show:' | '; show:(i printStringPaddedTo:3);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   422
	    show:' | '; show:(Character value:i);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   423
	    cr.
7689
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   424
     ]
3f4870a7f12e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7688
diff changeset
   425
    "
7688
8494a4155037 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7354
diff changeset
   426
!
8494a4155037 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7354
diff changeset
   427
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   428
excla
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   429
    "return the exclamation-mark character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   430
    ^ $!!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   431
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   432
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   433
ff
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   434
    "return the form-feed character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   435
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   436
    ^ Character codePoint:12
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   437
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   438
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   439
lf
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   440
    "return the newline/linefeed character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   441
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   442
    ^ Character codePoint:10
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   443
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   444
4340
523ef8410fad added #linefeed - squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4337
diff changeset
   445
linefeed
523ef8410fad added #linefeed - squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4337
diff changeset
   446
    "squeak compatibility: return the newline/linefeed character"
523ef8410fad added #linefeed - squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4337
diff changeset
   447
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   448
    ^ Character codePoint:10
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   449
!
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   450
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   451
maxImmediateCodePoint
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   452
    "return the maximum codePoint until which the characters are shared"
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   453
%{ /* NOCONTEXT */
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   454
    RETURN(__mkSmallInteger(MAX_IMMEDIATE_CHARACTER));
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   455
%}.
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   456
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   457
    "
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   458
      self maxImmediateCodePoint
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   459
    "
4340
523ef8410fad added #linefeed - squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4337
diff changeset
   460
!
523ef8410fad added #linefeed - squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4337
diff changeset
   461
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   462
maxValue
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   463
    "return the maximum codePoint a character may have"
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   464
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   465
    ^ 16r3FFFFFFF
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   466
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   467
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   468
newPage
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   469
    "return the form-feed character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   470
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   471
    ^ Character codePoint:12
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   472
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   473
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   474
nl
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   475
    "return the newline character"
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   476
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   477
    ^ Character codePoint:10
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   478
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   479
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   480
null
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   481
    ^ Character codePoint:0
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   482
!
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   483
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   484
quote
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   485
    "return the single-quote character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   486
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   487
    ^ Character codePoint:39
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   488
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   489
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   490
return
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   491
    "return the return character.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   492
     In ST/X, this is different from cr - for Unix reasons."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   493
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   494
    ^ Character codePoint:13
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   495
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   496
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   497
space
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   498
    "return the blank character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   499
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   500
    ^ Character codePoint:32
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   501
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   502
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   503
tab
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   504
    "return the tabulator character"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   505
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   506
    ^ Character codePoint:9
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   507
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   508
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
   509
!Character class methodsFor:'primitive input'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   510
a27a279701f8 Initial revision
claus
parents:
diff changeset
   511
fromUser
357
claus
parents: 345
diff changeset
   512
    "return a character from the keyboard (C's standard input stream)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   513
     - this should only be used for emergency evaluators and the like."
a27a279701f8 Initial revision
claus
parents:
diff changeset
   514
a27a279701f8 Initial revision
claus
parents:
diff changeset
   515
%{  /* NOCONTEXT */
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   516
#   include <errno.h>
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   517
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   518
    int c;
a27a279701f8 Initial revision
claus
parents:
diff changeset
   519
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   520
    for (;;) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   521
        c = getchar();
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   522
        if (c >= 0) break;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   523
	if (errno != EINTR) {	
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   524
	    RETURN (nil);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   525
	}
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   526
    }
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
   527
    RETURN ( __MKCHARACTER(c & 0xFF) );
5433
aa2365ee12cf migration support
Claus Gittinger <cg@exept.de>
parents: 5423
diff changeset
   528
%}.
aa2365ee12cf migration support
Claus Gittinger <cg@exept.de>
parents: 5423
diff changeset
   529
    ^ Stdin next
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   530
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   531
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
   532
!Character class methodsFor:'queries'!
3
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   533
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   534
allCharacters
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   535
    "added for squeak compatibility: return a collection of all singleton chars.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   536
     Notice, for memory efficiency reasons, only some of the low-codepoint characters
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   537
     are actually kept as singletons. less frequently used character instances are created on the fly,
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   538
     as wide string elements are accessed (and hopefully garbage collected sooner or later)"
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   539
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   540
    ^ CharacterTable
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   541
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   542
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   543
     Character allCharacters
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   544
    "
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   545
!
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   546
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
   547
hasSharedInstances
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
   548
    "return true if this class has shared instances, that is, instances
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
   549
     with the same value are identical.
9148
b33cbf0648d6 comment
Claus Gittinger <cg@exept.de>
parents: 8885
diff changeset
   550
     Although not always shared (TwoByte CodePoint-Characters), these should be treated
b33cbf0648d6 comment
Claus Gittinger <cg@exept.de>
parents: 8885
diff changeset
   551
     so, to be independent of the number of the underlying implementation"
2672
dc3662188b2c added #hasImmediateInstances for VW compatibility
Claus Gittinger <cg@exept.de>
parents: 2561
diff changeset
   552
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
   553
    ^ true
2672
dc3662188b2c added #hasImmediateInstances for VW compatibility
Claus Gittinger <cg@exept.de>
parents: 2561
diff changeset
   554
!
dc3662188b2c added #hasImmediateInstances for VW compatibility
Claus Gittinger <cg@exept.de>
parents: 2561
diff changeset
   555
3
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   556
isBuiltInClass
1271
a11ef7b9c780 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1229
diff changeset
   557
    "return true if this class is known by the run-time-system.
a11ef7b9c780 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1229
diff changeset
   558
     Here, true is returned for myself, false for subclasses."
3
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   559
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   560
    ^ self == Character
1271
a11ef7b9c780 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1229
diff changeset
   561
a11ef7b9c780 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1229
diff changeset
   562
    "Modified: 23.4.1996 / 15:56:39 / cg"
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   563
!
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   564
8206
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   565
isLegalUnicodeCodePoint:anInteger
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   566
    "answer true, if anInteger is a valid unicode code point"
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   567
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   568
    "Range 16rD800 - 16rDFFF is reserved for the
8207
12131fc77a99 #isLegalUnicodeCodePoint: - Fix comment
Stefan Vogel <sv@exept.de>
parents: 8206
diff changeset
   569
     lower and upper substitution page for UCS-16"
8206
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   570
    (anInteger >= 16rD800) ifTrue:[
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   571
	(anInteger <= 16rDFFF) ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   572
	    ^ false.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   573
	].
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   574
	(anInteger == 16rFFFE) ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   575
	    ^ false.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   576
	].
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   577
	(anInteger == 16rFFFF) ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   578
	    ^ false.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   579
	].
8206
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   580
    ].
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   581
    ^ true
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   582
!
485f3b8d4c81 #isLegalUnicodeCodePoint:
Stefan Vogel <sv@exept.de>
parents: 8144
diff changeset
   583
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   584
separators
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   585
    "return a collection of separator chars.
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   586
     Added for squeak compatibility"
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   587
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   588
    Separators isNil ifTrue:[
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   589
	Separators := Array
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   590
	    with:Character space
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   591
	    with:Character return
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   592
	    "/ with:Character cr
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   593
	    with:Character tab
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   594
	    with:Character lf
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   595
	    with:Character ff
17249
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   596
    ].
5e3ec80d0d0a class: Character
Claus Gittinger <cg@exept.de>
parents: 17188
diff changeset
   597
    ^ Separators
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   598
4337
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   599
    "
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   600
     Character separators
07fad5b7af9b added #allCharacters & #separators for Squeak compatibility
Claus Gittinger <cg@exept.de>
parents: 4037
diff changeset
   601
    "
3
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   602
! !
24d81bf47225 *** empty log message ***
claus
parents: 2
diff changeset
   603
7261
f35fc9cee675 method category rename
Claus Gittinger <cg@exept.de>
parents: 7257
diff changeset
   604
!Character methodsFor:'Compatibility-Dolphin'!
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   605
7351
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   606
isAlphaNumeric
11956
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   607
    "Compatibility method - do not use in new code.
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   608
     Return true, if I am a letter or a digit
7351
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   609
     Please use isLetterOrDigit for compatibility reasons (which is ANSI)."
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   610
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   611
    ^ self isLetterOrDigit
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   612
!
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   613
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   614
isAlphabetic
11956
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   615
    "Compatibility method - do not use in new code.
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   616
     Return true, if I am a letter.
7351
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   617
     Please use isLetter for compatibility reasons (which is ANSI)."
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   618
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   619
    ^ self isLetter
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   620
!
1f805a32d551 comments in isAlphaNumeric and isAlphabetic
Claus Gittinger <cg@exept.de>
parents: 7300
diff changeset
   621
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   622
isControl
11956
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   623
    "Compatibility method - do not use in new code.
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   624
     Return true if I am a control character (i.e. ascii value < 32)"
7353
a5227413a23a comment
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   625
a5227413a23a comment
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   626
    ^ self isControlCharacter
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   627
!
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   628
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   629
isHexDigit
7354
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   630
    "return true if I am a valid hexadecimal digit"
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   631
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   632
    ^ '0123456789abcdefABCDEF' includes:self
7354
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   633
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   634
    "
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   635
     $a isHexDigit
b22823ab2232 comment
Claus Gittinger <cg@exept.de>
parents: 7353
diff changeset
   636
    "
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   637
!
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   638
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   639
isPunctuation
11956
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   640
    "Compatibility method - do not use in new code.
ca9071118979 comments
Claus Gittinger <cg@exept.de>
parents: 11933
diff changeset
   641
     The code below is not unicode aware"
7897
08fd96f5c1d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7799
diff changeset
   642
6327
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   643
    ^ (asciivalue between:16r21 and:16r40)
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   644
      or:[ (asciivalue between:16r5B and:16r60)
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   645
      or:[ (asciivalue between:123 and:126)
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   646
      or:[ (asciivalue between:161 and:191)
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   647
      or:[ (asciivalue == 215 )
6f90155dd142 #isPunctuation
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   648
      or:[ (asciivalue == 247 ) ]]]]]
6324
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   649
! !
377c841da590 added #null
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   650
18595
aa02a050b351 class: Character
Stefan Vogel <sv@exept.de>
parents: 18588
diff changeset
   651
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   652
!Character methodsFor:'accessing'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   653
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   654
codePoint
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   655
    "return the codePoint of myself.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   656
     Traditionally, this was named 'asciiValue';
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   657
     however, characters are not limited to 8bit characters."
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   658
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   659
    ^ asciivalue
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   660
!
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   661
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   662
instVarAt:index put:anObject
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
   663
    "catch instvar access - asciivalue may not be changed"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   664
a27a279701f8 Initial revision
claus
parents:
diff changeset
   665
    self error:'Characters may not be modified'
a27a279701f8 Initial revision
claus
parents:
diff changeset
   666
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   667
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   668
!Character methodsFor:'arithmetic'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   669
a27a279701f8 Initial revision
claus
parents:
diff changeset
   670
+ aMagnitude
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   671
    "Return the Character that is <aMagnitude> higher than the receiver.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   672
     Wrap if the resulting value is not a legal Character value. (JS)"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   673
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   674
    ^ Character codePoint:((asciivalue + aMagnitude asInteger) \\ 16r3FFFFFFF)
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   675
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   676
    "
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   677
     $A + 5
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   678
    "
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   679
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   680
    "Modified: 27.6.1996 / 12:34:51 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   681
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   682
a27a279701f8 Initial revision
claus
parents:
diff changeset
   683
- aMagnitude
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   684
    "Return the Character that is <aMagnitude> lower than the receiver.
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   685
     Wrap if the resulting value is not a legal Character value. (JS)
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   686
     claus:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   687
	modified to return the difference as integer, if the argument
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   688
	is another character. If the argument is a number, a character is
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   689
	returned."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   690
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   691
    aMagnitude isCharacter ifTrue:[
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   692
	^ asciivalue - aMagnitude asInteger
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   693
    ].
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   694
    ^ Character codePoint:((asciivalue - aMagnitude asInteger) \\ 16r3FFFFFFF)
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   695
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   696
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   697
     $z - $a
68
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   698
     $d - 3
59faa75185ba *** empty log message ***
claus
parents: 54
diff changeset
   699
    "
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   700
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   701
    "Modified: 27.6.1996 / 12:35:34 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   702
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   703
a27a279701f8 Initial revision
claus
parents:
diff changeset
   704
// aMagnitude
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   705
    "Return the Character who's value is the receiver divided by <aMagnitude>.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   706
     Wrap if the resulting value is not a legal Character value. (JS)"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   707
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   708
    ^ Character codePoint:(asciivalue // aMagnitude asInteger \\ 16r3FFFFFFF)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   709
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   710
a27a279701f8 Initial revision
claus
parents:
diff changeset
   711
\\ aMagnitude
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   712
    "Return the Character who's value is the receiver modulo <aMagnitude>.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   713
     Wrap if the resulting value is not a legal Character value. (JS)"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   714
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
   715
    ^ Character codePoint:(asciivalue \\ aMagnitude asInteger \\ 16r3FFFFFFF)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   716
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   717
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   718
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   719
!Character methodsFor:'comparing'!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   720
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   721
< aMagnitude
7799
99753997e677 comments
Claus Gittinger <cg@exept.de>
parents: 7715
diff changeset
   722
    "return true, if the arguments asciiValue is greater than the receiver's"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   723
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   724
    ^ (asciivalue < aMagnitude asInteger)
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   725
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   726
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   727
<= aMagnitude
7799
99753997e677 comments
Claus Gittinger <cg@exept.de>
parents: 7715
diff changeset
   728
    "return true, if the arguments asciiValue is greater or equal to the receiver's"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   729
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   730
    ^ (asciivalue <= aMagnitude asInteger)
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   731
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   732
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   733
= aCharacter
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   734
    "return true, if the argument, aCharacter is the same character
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   735
     Redefined to take care of character sizes > 8bit."
18298
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   736
%{
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   737
#ifdef __SCHTEAM__
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   738
    if (self == aCharacter) {
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   739
	return context._RETURN_true();
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   740
    }
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   741
    if (aCharacter.characterP() == STObject.True) {
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   742
	if (self.charValue() == aCharacter.charValue()) {
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   743
	    return context._RETURN_true();
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   744
	} else {
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   745
	    return context._RETURN_false();
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   746
	}
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   747
    }
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   748
#endif /* not SCHTEAM */
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
   749
%}.
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   750
    self == aCharacter ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   751
    aCharacter isCharacter ifFalse:[^ false].
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   752
    ^ asciivalue = aCharacter codePoint
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   753
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   754
    "
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   755
	$A = (Character value:65)
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   756
	$A = (Character codePoint:65)
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   757
	$A = ($B-1)
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   758
	$A = 65
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   759
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   760
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   761
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   762
> aMagnitude
7799
99753997e677 comments
Claus Gittinger <cg@exept.de>
parents: 7715
diff changeset
   763
    "return true, if the arguments asciiValue is less than the receiver's"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   764
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   765
    ^ (asciivalue > aMagnitude asInteger)
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   766
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   767
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   768
>= aMagnitude
7799
99753997e677 comments
Claus Gittinger <cg@exept.de>
parents: 7715
diff changeset
   769
    "return true, if the arguments asciiValue is less or equal to the receiver's"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   770
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   771
    ^ (asciivalue >= aMagnitude asInteger)
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   772
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   773
5540
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   774
hash
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   775
    "return an integer useful for hashing"
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   776
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   777
    ^ asciivalue
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   778
!
7e0811b2ded9 added #hash
Claus Gittinger <cg@exept.de>
parents: 5473
diff changeset
   779
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   780
identityHash
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   781
    "return an integer useful for hashing on identity"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   782
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   783
%{
8100
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   784
    INT __codePoint;
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   785
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   786
    __codePoint = __smallIntegerVal(__INST(asciivalue));
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   787
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   788
    if (__codePoint <= MAX_IMMEDIATE_CHARACTER) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   789
	RETURN ( __mkSmallInteger(__codePoint + 4096) );
8100
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   790
    }
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   791
%}.
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   792
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   793
    ^ super identityHash
8100
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   794
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   795
    "
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   796
      $a identityHash.
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   797
      (Character value:1234) identityHash
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
   798
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   799
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   800
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   801
sameAs:aCharacter
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   802
    "return true, if the argument, aCharacter is the same character,
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   803
     ignoring case differences."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   804
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   805
    self == aCharacter ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   806
    ^ self asLowercase = aCharacter asLowercase
14663
a33ac1c6c69f class: Character
Stefan Vogel <sv@exept.de>
parents: 14120
diff changeset
   807
a33ac1c6c69f class: Character
Stefan Vogel <sv@exept.de>
parents: 14120
diff changeset
   808
    "
a33ac1c6c69f class: Character
Stefan Vogel <sv@exept.de>
parents: 14120
diff changeset
   809
      (Character value:345) sameAs:(Character value:345)
a33ac1c6c69f class: Character
Stefan Vogel <sv@exept.de>
parents: 14120
diff changeset
   810
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   811
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   812
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   813
~= aCharacter
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   814
    "return true, if the argument, aCharacter is not the same character
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   815
     Redefined to take care of character sizes > 8bit."
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   816
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   817
    self == aCharacter ifTrue:[^ false].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   818
    aCharacter isCharacter ifFalse:[^ true].
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
   819
    ^ (asciivalue ~~ aCharacter codePoint)
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   820
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   821
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   822
!Character methodsFor:'converting'!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   823
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   824
asCharacter
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   825
    "usually sent to integers, but redefined here to allow integers
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   826
     and characters to be used commonly without a need for a test."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   827
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   828
    ^ self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   829
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   830
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   831
     32 asCharacter
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   832
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   833
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   834
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   835
asInteger
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   836
    "the same as #codePoint.
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   837
     Use #asInteger, if you need protocol compatibility with Numbers etc..
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
   838
     Use #codePoint in any other case for better stc optimization"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   839
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   840
    ^ asciivalue
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   841
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   842
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
   843
asLowercase
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   844
    "return a character with same letter as the receiver, but in lowercase.
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   845
     Returns the receiver if it is already lowercase or if there is no lowercase equivalent.
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   846
     CAVEAT:
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   847
        for now, this method is only correct for unicode characters up to u+1d6ff (Unicode3.1).
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   848
        (which is more than mozilla does, btw. ;-)"
7989
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
   849
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   850
%{
18240
28af09029a8b ifdef for SCHTEAM engine changed (not relevant for ST/X)
Claus Gittinger <cg@exept.de>
parents: 18215
diff changeset
   851
#ifdef __SCHTEAM__
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   852
    {
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   853
        char ch = self.charValue("[asLowercase]");
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   854
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   855
        ch = java.lang.Character.toLowerCase(ch);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   856
        return context._RETURN(STCharacter._new(ch));
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   857
    }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   858
    /* NOTREACHED */
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
   859
#else
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   860
    static int __mapping[] = {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   861
    /* From    To             Every   Diff   */
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   862
       0x0041, ((0x19 << 8) | 0x01), 0x0020  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   863
       0x00c0, ((0x16 << 8) | 0x01), 0x0020  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   864
       0x00d8, ((0x06 << 8) | 0x01), 0x0020  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   865
       0x0100, ((0x2e << 8) | 0x02), 0x0001  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   866
       0x0130, ((0x00 << 8) | 0x00), -199   ,
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   867
       0x0132, ((0x04 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   868
       0x0139, ((0x0e << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   869
       0x014a, ((0x2c << 8) | 0x02), 0x0001  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   870
       0x0178, ((0x00 << 8) | 0x00), -121   ,
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   871
       0x0179, ((0x04 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   872
       0x0181, ((0x00 << 8) | 0x00), 0x00d2  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   873
       0x0182, ((0x02 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   874
       0x0186, ((0x00 << 8) | 0x00), 0x00ce  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   875
       0x0187, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   876
       0x0189, ((0x01 << 8) | 0x01), 0x00cd  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   877
       0x018b, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   878
       0x018e, ((0x00 << 8) | 0x00), 0x004f  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   879
       0x018f, ((0x00 << 8) | 0x00), 0x00ca  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   880
       0x0190, ((0x00 << 8) | 0x00), 0x00cb  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   881
       0x0191, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   882
       0x0193, ((0x00 << 8) | 0x00), 0x00cd  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   883
       0x0194, ((0x00 << 8) | 0x00), 0x00cf  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   884
       0x0196, ((0x00 << 8) | 0x00), 0x00d3  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   885
       0x0197, ((0x00 << 8) | 0x00), 0x00d1  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   886
       0x0198, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   887
       0x019c, ((0x00 << 8) | 0x00), 0x00d3  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   888
       0x019d, ((0x00 << 8) | 0x00), 0x00d5  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   889
       0x019f, ((0x00 << 8) | 0x00), 0x00d6  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   890
       0x01a0, ((0x04 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   891
       0x01a6, ((0x00 << 8) | 0x00), 0x00da  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   892
       0x01a7, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   893
       0x01a9, ((0x00 << 8) | 0x00), 0x00da  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   894
       0x01ac, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   895
       0x01ae, ((0x00 << 8) | 0x00), 0x00da  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   896
       0x01af, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   897
       0x01b1, ((0x01 << 8) | 0x01), 0x00d9  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   898
       0x01b3, ((0x02 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   899
       0x01b7, ((0x00 << 8) | 0x00), 0x00db  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   900
       0x01b8, ((0x04 << 8) | 0x04), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   901
       0x01c4, ((0x00 << 8) | 0x00), 0x0002  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   902
       0x01c5, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   903
       0x01c7, ((0x00 << 8) | 0x00), 0x0002  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   904
       0x01c8, ((0x00 << 8) | 0x00), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   905
       0x01ca, ((0x00 << 8) | 0x00), 0x0002  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   906
       0x01cb, ((0x10 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   907
       0x01de, ((0x10 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   908
       0x01f1, ((0x00 << 8) | 0x00), 0x0002  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   909
       0x01f2, ((0x02 << 8) | 0x02), 0x0001  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   910
       0x01f6, ((0x00 << 8) | 0x00), -97   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   911
       0x01f7, ((0x00 << 8) | 0x00), -56   ,
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   912
       0x01f8, ((0x26 << 8) | 0x02), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   913
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   914
       0x0220, ((0x00 << 8) | 0x00), -130  ,          /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   915
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   916
       0x0222, ((0x10 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   917
       0x0386, ((0x00 << 8) | 0x00), 0x0026  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   918
       0x0388, ((0x02 << 8) | 0x01), 0x0025  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   919
       0x038c, ((0x00 << 8) | 0x00), 0x0040  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   920
       0x038e, ((0x01 << 8) | 0x01), 0x003f  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   921
       0x0391, ((0x10 << 8) | 0x01), 0x0020  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   922
       0x03a3, ((0x08 << 8) | 0x01), 0x0020  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   923
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   924
       0x03d8, ((0x00 << 8) | 0x00), 1  ,             /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   925
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   926
       0x03da, ((0x14 << 8) | 0x02), 0x0001  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   927
       0x03f4, ((0x00 << 8) | 0x00), -60   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   928
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   929
       0x03f7, ((0x03 << 8) | 0x03), 1  ,             /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   930
       0x03f9, ((0x00 << 8) | 0x00), -7 ,             /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   931
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   932
       0x0400, ((0x0f << 8) | 0x01), 0x0050  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   933
       0x0410, ((0x1f << 8) | 0x01), 0x0020  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   934
       0x0460, ((0x20 << 8) | 0x02), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   935
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   936
       0x048a, ((0x00 << 8) | 0x00), 1 ,              /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   937
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   938
       0x048c, ((0x32 << 8) | 0x02), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   939
#ifdef UNICODE_3_2
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   940
       0x04c1, ((0x02 << 8) | 0x02), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   941
#else
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   942
       0x04c1, ((0x04 << 8) | 0x02), 0x0001  ,        /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   943
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   944
#ifdef UNICODE_3_2
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   945
       0x04c7, ((0x04 << 8) | 0x04), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   946
#else
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   947
       0x04c7, ((0x04 << 8) | 0x02), 0x0001  ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   948
       0x04cd, ((0x00 << 8) | 0x00), 0x0001  ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   949
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   950
       0x04d0, ((0x24 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   951
       0x04f8, ((0x00 << 8) | 0x00), 0x0001  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   952
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   953
       0x0500, ((0x0E << 8) | 0x02), 1  ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
   954
#endif
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   955
       0x0531, ((0x25 << 8) | 0x01), 0x0030  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   956
       0x1e00, ((0x94 << 8) | 0x02), 0x0001  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   957
       0x1ea0, ((0x58 << 8) | 0x02), 0x0001  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   958
       0x1f08, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   959
       0x1f18, ((0x05 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   960
       0x1f28, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   961
       0x1f38, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   962
       0x1f48, ((0x05 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   963
       0x1f59, ((0x06 << 8) | 0x02), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   964
       0x1f68, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   965
       0x1f88, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   966
       0x1f98, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   967
       0x1fa8, ((0x07 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   968
       0x1fb8, ((0x01 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   969
       0x1fba, ((0x01 << 8) | 0x01), -74  ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   970
       0x1fbc, ((0x00 << 8) | 0x00), -9   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   971
       0x1fc8, ((0x03 << 8) | 0x01), -86  ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   972
       0x1fcc, ((0x00 << 8) | 0x00), -9   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   973
       0x1fd8, ((0x01 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   974
       0x1fda, ((0x01 << 8) | 0x01), -100 ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   975
       0x1fe8, ((0x01 << 8) | 0x01), -8   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   976
       0x1fea, ((0x01 << 8) | 0x01), -112 ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   977
       0x1fec, ((0x00 << 8) | 0x00), -7   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   978
       0x1ff8, ((0x01 << 8) | 0x01), -128 ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   979
       0x1ffa, ((0x01 << 8) | 0x01), -126 ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   980
       0x1ffc, ((0x00 << 8) | 0x00), -9   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   981
       0x2126, ((0x00 << 8) | 0x00), -7517   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   982
       0x212a, ((0x00 << 8) | 0x00), -8383   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
   983
       0x212b, ((0x00 << 8) | 0x00), -8262   ,
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   984
       0x2160, ((0x0f << 8) | 0x01), 0x0010  ,
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   985
       0x24b6, ((0x19 << 8) | 0x01), 0x001a  ,
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   986
       0xff21, ((0x19 << 8) | 0x01), 0x0020  ,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
   987
       0x10400, ((0x27 << 8) | 0x01), 0x0028
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   988
    };
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
   989
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
   990
    REGISTER unsigned INT __codePoint;
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
   991
    REGISTER int *  __p;
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   992
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
   993
    __codePoint = __intVal(__INST(asciivalue));
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   994
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   995
    // comon ascii stuff first
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   996
    if (__codePoint < 0x80) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   997
        if ((__codePoint >= 'A') && (__codePoint <= 'Z')) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   998
            unsigned newCodePoint;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
   999
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1000
            newCodePoint = __codePoint - 'A' + 'a';
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1001
            RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1002
        }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1003
        RETURN (self);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1004
    }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1005
8106
ee222c1314e6 cannot make pointer arith with a void *
Claus Gittinger <cg@exept.de>
parents: 8100
diff changeset
  1006
    for (__p = __mapping; (char *)__p < ((char *)__mapping) + sizeof(__mapping); __p += 3) {
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1007
        unsigned rangeStart, rangeSize, rangeEnd, mod;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1008
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1009
        rangeStart = (unsigned)__p[0];
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1010
        if (__codePoint < rangeStart) break;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1011
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1012
        rangeSize = ((unsigned)__p[1]) >> 8;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1013
        rangeEnd = rangeStart + rangeSize;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1014
        if (__codePoint <= rangeEnd) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1015
            mod = __p[1] & 0xFF;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1016
            if ((mod == 0) || (((__codePoint - rangeStart) % mod) == 0)) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1017
                OBJ newChar;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1018
                unsigned newCodePoint;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1019
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1020
                newCodePoint = __codePoint + __p[2];
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1021
                if (newCodePoint <= MAX_IMMEDIATE_CHARACTER) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1022
                    RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1023
                }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1024
                newChar = __MKUCHARACTER(newCodePoint) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1025
                if (newChar == nil) goto allocationError;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1026
                RETURN (newChar) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1027
            }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1028
        }
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1029
    }
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1030
    RETURN (self);
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1031
allocationError: ;
18240
28af09029a8b ifdef for SCHTEAM engine changed (not relevant for ST/X)
Claus Gittinger <cg@exept.de>
parents: 18215
diff changeset
  1032
#endif /* ! __SCHTEAM__ */
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1033
%}.
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1034
    ^ ObjectMemory allocationFailureSignal raise.
1491
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  1035
a42ae3fbb756 fixed asLowercase / asUppercase for national characters
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  1036
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1037
     $A asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1038
     $a asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1039
     (Character value:16r01F5) asUppercase asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1040
     (Character value:16r0205) asUppercase asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1041
     (Character value:16r03B1) asUppercase asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1042
     (Character value:16r1E00) asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1043
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1044
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1045
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1046
asString
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1047
    "return a string of len 1 with myself as contents"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1048
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1049
%{  /* NOCONTEXT */
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1050
    char buffer[2];
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1051
    OBJ s;
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1052
    unsigned INT val;
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1053
15262
5047292c9107 all stx macros begin with double underline (eg. __qClass instead of _qClass)
Claus Gittinger <cg@exept.de>
parents: 14684
diff changeset
  1054
    val = __intVal(__characterVal(self));
995
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1055
    if (val <= 0xFF) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1056
	buffer[0] = (char) val;
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1057
	buffer[1] = '\0';
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1058
	s = __MKSTRING_L(buffer, 1);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1059
	if (s != nil) {
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1060
	    RETURN (s);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1061
	}
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1062
    }
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1063
    if (val <= 0xFFFF) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1064
	s = __MKEMPTYU16STRING(1);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1065
	if (s != nil) {
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1066
	    __Unicode16StringInstPtr(s)->s_element[0] = val;
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1067
	    RETURN (s);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1068
	}
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1069
    }
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1070
%}.
7951
062ac899852e care for 4-byte characters
Claus Gittinger <cg@exept.de>
parents: 7897
diff changeset
  1071
    asciivalue > 16rFF ifTrue:[
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1072
	asciivalue > 16rFFFF ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1073
	    ^ (Unicode32String new:1) at:1 put:self; yourself
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1074
	].
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1075
	^ (Unicode16String new:1) at:1 put:self; yourself
995
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1076
    ].
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1077
5407
d6729266a95b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
  1078
    ^ (String new:1) at:1 put:self; yourself.
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1079
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1080
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1081
     (Character value:16rB5) asString
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1082
     (Character value:16r1B5) asString
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1083
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1084
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1085
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1086
asSymbol
17184
f3ea3eef5857 class: Character
Claus Gittinger <cg@exept.de>
parents: 16744
diff changeset
  1087
    "Return a unique symbol with the name taken from the receiver's characters.
9229
74fe3012c7f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9153
diff changeset
  1088
     Here, a single character symbol is returned."
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1089
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1090
    ^ Symbol internCharacter:self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1091
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1092
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1093
asTitlecase
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1094
    "return a character with same letter as the receiver, but in titlecase.
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1095
     Returns the receiver if it is already titlecase or if there is no titlecase equivalent."
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1096
8026
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1097
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1098
     For example, in Unicode, character U+01F3 is LATIN SMALL LETTER DZ.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1099
     (Let us write this compound character using ASCII as 'dz'.)
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1100
     This character uppercases to character U+01F1, LATIN CAPITAL LETTER DZ.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1101
     (Which is basically 'DZ'.)
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1102
     But it titlecases to to character U+01F2, LATIN CAPITAL LETTER D WITH SMALL LETTER Z.
8026
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1103
     (Which we can write 'Dz'.)
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1104
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1105
      character uppercase titlecase
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1106
      --------- --------- ---------
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1107
      dz        DZ        Dz
96cc838078ba comment
Claus Gittinger <cg@exept.de>
parents: 8022
diff changeset
  1108
    "
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1109
    |ch|
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1110
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1111
%{
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1112
    static unsigned short __mapping[] = {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1113
       0x01C4,    0x01C5,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1114
       0x01C6,    0x01C5,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1115
       0x01C7,    0x01C8,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1116
       0x01C9,    0x01C8,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1117
       0x01CA,    0x01CB,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1118
       0x01CC,    0x01CB,
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1119
       0x01F1,    0x01F2,
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1120
       0x01F3,    0x01F2,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1121
    };
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1122
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1123
    REGISTER unsigned INT __codePoint;
8885
57c672cb3a64 Fix signed/unsigned clash
Stefan Vogel <sv@exept.de>
parents: 8830
diff changeset
  1124
    REGISTER unsigned short *__p;
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1125
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1126
    __codePoint = __intVal(__INST(asciivalue));
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1127
    if ((__codePoint > 0x01C0) && (__codePoint < 0x01FF)) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1128
        for (__p = __mapping; (char *)__p < ((char *)__mapping) + sizeof(__mapping); __p += 2) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1129
            if ((__codePoint == __p[0]) || (__codePoint == __p[1])) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1130
                short newCodePoint;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1131
                OBJ newChar;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1132
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1133
                newCodePoint = __p[1];
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1134
                if (newCodePoint == __codePoint) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1135
                    RETURN (self);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1136
                }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1137
                if (newCodePoint <= MAX_IMMEDIATE_CHARACTER) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1138
                    RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1139
                }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1140
                newChar = __MKUCHARACTER(newCodePoint) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1141
                if (newChar == nil) goto getOutOfHere;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1142
                RETURN (newChar) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1143
            }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1144
        }
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1145
    }
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1146
    if (__codePoint < 0x80) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1147
        // do it here for common ascii characters
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1148
        if ((__codePoint >= 'a') && (__codePoint <= 'z')) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1149
            unsigned char newCodePoint = __codePoint - 'a' + 'A';
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1150
            RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1151
        }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1152
        RETURN (self) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1153
    }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1154
        
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1155
    ch = self;
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1156
getOutOfHere: ;
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1157
%}.
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1158
    ch notNil ifTrue:[
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1159
        ^ ch asUppercase.
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1160
    ].
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1161
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1162
    ^ ObjectMemory allocationFailureSignal raise.
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1163
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1164
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1165
     $A asTitlecase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1166
     $a asTitlecase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1167
     (Character value:16r01F1) asTitlecase
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1168
     (Character value:16r01F2) asTitlecase
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1169
    "
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1170
!
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1171
6029
594664bbbc47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5945
diff changeset
  1172
asUnicodeString
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1173
    "return a unicode string of len 1 with myself as contents.
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1174
     This will vanish, as we now (rel5.2.x) use Unicode as default."
6029
594664bbbc47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5945
diff changeset
  1175
7951
062ac899852e care for 4-byte characters
Claus Gittinger <cg@exept.de>
parents: 7897
diff changeset
  1176
    asciivalue > 16rFFFF ifTrue:[
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1177
	^ (Unicode32String new:1) at:1 put:self; yourself.
7951
062ac899852e care for 4-byte characters
Claus Gittinger <cg@exept.de>
parents: 7897
diff changeset
  1178
    ].
062ac899852e care for 4-byte characters
Claus Gittinger <cg@exept.de>
parents: 7897
diff changeset
  1179
    ^ (Unicode16String new:1) at:1 put:self; yourself.
6029
594664bbbc47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5945
diff changeset
  1180
!
594664bbbc47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5945
diff changeset
  1181
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1182
asUppercase
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1183
    "return a character with same letter as the receiver, but in uppercase.
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1184
     Returns the receiver if it is already uppercase or if there is no uppercase equivalent.
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1185
     CAVEAT:
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1186
        for now, this method is only correct for unicode characters up to u+1d6ff (Unicode3.1).
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1187
        (which is more than mozilla does, btw. ;-)"
7990
2f78c1d609c7 asUppercase / asLowercase for UFF00..UFFFF
Claus Gittinger <cg@exept.de>
parents: 7989
diff changeset
  1188
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1189
%{
18240
28af09029a8b ifdef for SCHTEAM engine changed (not relevant for ST/X)
Claus Gittinger <cg@exept.de>
parents: 18215
diff changeset
  1190
#ifdef __SCHTEAM__
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1191
    {
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1192
        char ch = self.charValue("[asUppercase]");
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1193
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1194
        ch = java.lang.Character.toUpperCase(ch);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1195
        return context._RETURN(STCharacter._new(ch));
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1196
    }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1197
    /* NOTREACHED */
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1198
#else
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1199
    static int __mapping[] = {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1200
    /* From    To             Every   Diff   */
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1201
       0x0061, ((0x19 << 8) | 0x01), -32  ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1202
       0x00b5, ((0x00 << 8) | 0x3b), 0x02e7  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1203
       0x00e0, ((0x16 << 8) | 0x01), -32   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1204
       0x00f8, ((0x06 << 8) | 0x01), -32   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1205
       0x00ff, ((0x00 << 8) | 0x01), 0x0079  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1206
       0x0101, ((0x2e << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1207
       0x0131, ((0x00 << 8) | 0x02), -232  ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1208
       0x0133, ((0x04 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1209
       0x013a, ((0x0e << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1210
       0x014b, ((0x2c << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1211
       0x017a, ((0x04 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1212
       0x017f, ((0x00 << 8) | 0x01), -300  ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1213
       0x0183, ((0x02 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1214
       0x0188, ((0x04 << 8) | 0x04), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1215
       0x0192, ((0x00 << 8) | 0x06), -1   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1216
       0x0195, ((0x00 << 8) | 0x03), 0x0061  ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1217
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1218
       0x0199, ((0x04 << 8) | 0x08), -1   ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1219
       0x019e, ((0x00 << 8) | 0x00), 130  ,          /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1220
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1221
       0x0199, ((0x08 << 8) | 0x08), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1222
       0x01a3, ((0x02 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1223
       0x01a8, ((0x05 << 8) | 0x05), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1224
       0x01b0, ((0x04 << 8) | 0x04), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1225
       0x01b6, ((0x03 << 8) | 0x03), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1226
       0x01bd, ((0x00 << 8) | 0x04), -1   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1227
       0x01bf, ((0x00 << 8) | 0x02), 0x0038  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1228
       0x01c5, ((0x00 << 8) | 0x06), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1229
       0x01c6, ((0x00 << 8) | 0x01), -2   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1230
       0x01c8, ((0x00 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1231
       0x01c9, ((0x00 << 8) | 0x01), -2   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1232
       0x01cb, ((0x00 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1233
       0x01cc, ((0x00 << 8) | 0x01), -2   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1234
       0x01ce, ((0x0e << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1235
       0x01dd, ((0x00 << 8) | 0x01), -79   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1236
       0x01df, ((0x10 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1237
       0x01f2, ((0x00 << 8) | 0x03), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1238
       0x01f3, ((0x00 << 8) | 0x01), -2   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1239
       0x01f5, ((0x04 << 8) | 0x04), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1240
       0x01fb, ((0x24 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1241
       0x0223, ((0x10 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1242
       0x0253, ((0x00 << 8) | 0x20), -210   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1243
       0x0254, ((0x00 << 8) | 0x01), -206   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1244
       0x0256, ((0x01 << 8) | 0x01), -205   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1245
       0x0259, ((0x00 << 8) | 0x02), -202   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1246
       0x025b, ((0x00 << 8) | 0x02), -203   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1247
       0x0260, ((0x00 << 8) | 0x05), -205   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1248
       0x0263, ((0x00 << 8) | 0x03), -207   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1249
       0x0268, ((0x00 << 8) | 0x05), -209   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1250
       0x0269, ((0x06 << 8) | 0x06), -211   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1251
       0x0272, ((0x00 << 8) | 0x03), -213   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1252
       0x0275, ((0x00 << 8) | 0x03), -214   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1253
       0x0280, ((0x03 << 8) | 0x03), -218   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1254
       0x0288, ((0x00 << 8) | 0x05), -218   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1255
       0x028a, ((0x01 << 8) | 0x01), -217   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1256
       0x0292, ((0x00 << 8) | 0x07), -219   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1257
       0x0345, ((0x00 << 8) | 0xb3), 0x0054  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1258
       0x03ac, ((0x00 << 8) | 0x67), -38   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1259
       0x03ad, ((0x02 << 8) | 0x01), -37   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1260
       0x03b1, ((0x10 << 8) | 0x01), -32   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1261
       0x03c2, ((0x00 << 8) | 0x01), -31   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1262
       0x03c3, ((0x08 << 8) | 0x01), -32   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1263
       0x03cc, ((0x00 << 8) | 0x01), -64   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1264
       0x03cd, ((0x01 << 8) | 0x01), -63   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1265
       0x03d0, ((0x00 << 8) | 0x02), -62   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1266
       0x03d1, ((0x00 << 8) | 0x01), -57   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1267
       0x03d5, ((0x00 << 8) | 0x04), -47   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1268
       0x03d6, ((0x00 << 8) | 0x01), -54   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1269
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1270
       0x03d9, ((0x00 << 8) | 0x00), -1  ,             /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1271
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1272
       0x03db, ((0x14 << 8) | 0x02), -1    ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1273
       0x03f0, ((0x00 << 8) | 0x01), -86   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1274
       0x03f1, ((0x00 << 8) | 0x01), -80   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1275
#ifdef UNICODE_3_2
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1276
       0x03f2, ((0x00 << 8) | 0x01), -79   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1277
#else
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1278
       0x03f2, ((0x00 << 8) | 0x00), 7  ,              /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1279
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1280
       0x03f5, ((0x00 << 8) | 0x00), -96   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1281
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1282
       0x03f8, ((0x03 << 8) | 0x03), -1  ,             /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1283
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1284
       0x0430, ((0x1f << 8) | 0x01), -32   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1285
       0x0450, ((0x0f << 8) | 0x01), -80   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1286
       0x0461, ((0x20 << 8) | 0x02), -1   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1287
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1288
       0x048b, ((0x00 << 8) | 0x00), -1 ,              /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1289
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1290
       0x048d, ((0x32 << 8) | 0x02), -1   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1291
#ifdef UNICODE_3_2
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1292
       0x04c2, ((0x02 << 8) | 0x02), -1   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1293
#else
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1294
       0x04c2, ((0x04 << 8) | 0x02), -1   ,            /* Unicode4.0 - not in X fonts - sigh */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1295
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1296
#ifdef UNICODE_3_2
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1297
       0x04c8, ((0x04 << 8) | 0x04), -1   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1298
#else
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1299
       0x04c8, ((0x04 << 8) | 0x02), -1   ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1300
       0x04ce, ((0x00 << 8) | 0x00), -1   ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1301
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1302
       0x04d1, ((0x24 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1303
       0x04f9, ((0x00 << 8) | 0x04), -1   ,
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1304
#ifndef UNICODE_3_2
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1305
       0x0501, ((0x0E << 8) | 0x02), -1  ,
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  1306
#endif
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1307
       0x0561, ((0x25 << 8) | 0x01), -48   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1308
       0x1e01, ((0x94 << 8) | 0x02), -1   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1309
       0x1e9b, ((0x00 << 8) | 0x06), -59   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1310
       0x1ea1, ((0x58 << 8) | 0x02), -1   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1311
       0x1f00, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1312
       0x1f10, ((0x05 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1313
       0x1f20, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1314
       0x1f30, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1315
       0x1f40, ((0x05 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1316
       0x1f51, ((0x06 << 8) | 0x02), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1317
       0x1f60, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1318
       0x1f70, ((0x01 << 8) | 0x01), 0x004a  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1319
       0x1f72, ((0x03 << 8) | 0x01), 0x0056  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1320
       0x1f76, ((0x01 << 8) | 0x01), 0x0064  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1321
       0x1f78, ((0x01 << 8) | 0x01), 0x0080  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1322
       0x1f7a, ((0x01 << 8) | 0x01), 0x0070  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1323
       0x1f7c, ((0x01 << 8) | 0x01), 0x007e  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1324
       0x1f80, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1325
       0x1f90, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1326
       0x1fa0, ((0x07 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1327
       0x1fb0, ((0x01 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1328
       0x1fb3, ((0x00 << 8) | 0x02), 0x0009  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1329
       0x1fbe, ((0x00 << 8) | 0x0b), -7205   ,
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1330
       0x1fc3, ((0x00 << 8) | 0x05), 0x0009  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1331
       0x1fd0, ((0x01 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1332
       0x1fe0, ((0x01 << 8) | 0x01), 0x0008  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1333
       0x1fe5, ((0x00 << 8) | 0x04), 0x0007  ,
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1334
       0x1ff3, ((0x00 << 8) | 0x0e), 0x0009  ,
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1335
       0x2170, ((0x0f << 8) | 0x01), -16   ,
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1336
       0x24d0, ((0x19 << 8) | 0x01), -26   ,
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1337
       0xff41, ((0x19 << 8) | 0x01), -32  ,
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1338
       0x10428, ((0x27 << 8) | 0x01), -40
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1339
    };
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1340
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1341
    REGISTER unsigned INT __codePoint;
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
  1342
    REGISTER int *__p;
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1343
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1344
    __codePoint = __intVal(__INST(asciivalue));
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1345
 
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1346
   // comon ascii stuff first
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1347
    if (__codePoint < 0x80) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1348
        if ((__codePoint >= 'a') && (__codePoint <= 'z')) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1349
            unsigned newCodePoint;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1350
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1351
            newCodePoint = __codePoint - 'a' + 'A';
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1352
            RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1353
        }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1354
        RETURN (self);
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1355
    }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1356
8106
ee222c1314e6 cannot make pointer arith with a void *
Claus Gittinger <cg@exept.de>
parents: 8100
diff changeset
  1357
    for (__p = __mapping; (char *)__p < ((char *)__mapping) + sizeof(__mapping); __p += 3) {
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1358
        unsigned rangeStart, rangeSize, rangeEnd, mod;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1359
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1360
        rangeStart = (unsigned)__p[0];
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1361
        if (rangeStart > __codePoint) break;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1362
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1363
        rangeSize = ((unsigned)__p[1]) >> 8;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1364
        rangeEnd = rangeStart + rangeSize;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1365
        if (__codePoint <= rangeEnd) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1366
            mod = __p[1] & 0xFF;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1367
            if ((mod == 0) || (((__codePoint - rangeStart) % mod) == 0)) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1368
                OBJ newChar;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1369
                unsigned newCodePoint;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1370
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1371
                newCodePoint = __codePoint + __p[2];
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1372
                if (newCodePoint <= MAX_IMMEDIATE_CHARACTER) {
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1373
                    RETURN (__MKCHARACTER(newCodePoint)) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1374
                }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1375
                newChar = __MKUCHARACTER(newCodePoint) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1376
                if (newChar == nil) goto allocationError;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1377
                RETURN (newChar) ;
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1378
            }
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1379
        }
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1380
    }
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1381
    RETURN (self);
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1382
allocationError: ;
18240
28af09029a8b ifdef for SCHTEAM engine changed (not relevant for ST/X)
Claus Gittinger <cg@exept.de>
parents: 18215
diff changeset
  1383
#endif /* ! __SCHTEAM__ */
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1384
%}.
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1385
    ^ ObjectMemory allocationFailureSignal raise.
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1386
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1387
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1388
     $A asLowercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1389
     $a asUppercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1390
     (Character value:16r01F5) asUppercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1391
     (Character value:16r0205) asUppercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1392
     (Character value:16r03B1) asUppercase
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1393
    "
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1394
!
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1395
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1396
digitValue
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1397
    "return my digitValue for any base (up to 37)"
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1398
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1399
    |code "{ Class: SmallInteger }" |
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1400
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1401
    code := asciivalue.
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1402
    (code between:($0 codePoint) and:($9 codePoint)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1403
	^ code - $0 codePoint
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1404
    ].
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1405
    (code between:($a codePoint) and:($z codePoint)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1406
	^ code + (10 - $a codePoint)
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1407
    ].
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1408
    (code between:($A codePoint) and:($Z codePoint)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1409
	^ code + (10 - $A codePoint)
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1410
    ].
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1411
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1412
"remove error below for X3J20 conformance ... "
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1413
    self error:'bad character'.
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1414
" "
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1415
    ^ -1
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1416
!
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1417
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1418
digitValueRadix:base
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1419
    "return my digitValue for base.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1420
     Return nil, if it is not a valid character for that base"
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1421
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1422
    |code "{ Class: SmallInteger }" |
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1423
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1424
    code := asciivalue.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1425
    base < 10 ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1426
	(code between:($0 codePoint) and:($0 codePoint + base - 1)) ifTrue:[
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1427
	    ^ code - $0 codePoint
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1428
	].
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1429
	^ nil.
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1430
    ].
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1431
    (code between:($0 codePoint) and:($9 codePoint)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1432
	^ code - $0 codePoint
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1433
    ].
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1434
    base <= 10 ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1435
	^ nil.
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1436
    ].
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1437
    (code between:($a codePoint) and:($a codePoint + base - 1 - 10)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1438
	^ code + (10 - $a codePoint)
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1439
    ].
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1440
    (code between:($A codePoint) and:($A codePoint + base - 1 - 10)) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1441
	^ code + (10 - $A codePoint)
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1442
    ].
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1443
    ^ nil
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1444
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1445
    "
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1446
     self assert:($0 digitValueRadix:10) == 0.
11653
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1447
     self assert:($9 digitValueRadix:10) == 9.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1448
     self assert:($a digitValueRadix:10) == nil.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1449
     self assert:($a digitValueRadix:11) == 10.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1450
     self assert:($A digitValueRadix:11) == 10.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1451
     self assert:($a digitValueRadix:16) == 10.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1452
     self assert:($A digitValueRadix:16) == 10.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1453
     self assert:($f digitValueRadix:16) == 15.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1454
     self assert:($F digitValueRadix:16) == 15.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1455
     self assert:($g digitValueRadix:16) == nil.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1456
     self assert:($G digitValueRadix:16) == nil.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1457
     self assert:($g digitValueRadix:17) == 16.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1458
     self assert:($G digitValueRadix:17) == 16.
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1459
    "
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1460
!
f48525bf7a6e +digitValueRadix:
Claus Gittinger <cg@exept.de>
parents: 11328
diff changeset
  1461
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1462
literalArrayEncoding
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1463
    "encode myself as an array literal, from which a copy of the receiver
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1464
     can be reconstructed with #decodeAsLiteralArray."
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1465
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1466
    ^ self
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1467
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1468
    "Created: / 27.10.1997 / 14:40:37 / cg"
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1469
!
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1470
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1471
to:aMagnitude
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1472
    "Return an Interval over the characters from the receiver to <aMagnitude>.
8010
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1473
     Wrap <aMagnitude> if it is not a legal Character value. (JS)"
6dddd9cb3f84 asXCase: Unicode
Claus Gittinger <cg@exept.de>
parents: 8004
diff changeset
  1474
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1475
    ^ Interval from:self to:(aMagnitude \\ 16r3FFFFFFF)
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1476
!
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1477
13499
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1478
to:aMagnitude by:inc
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1479
    "Return an Interval over the characters from the receiver to <aMagnitude>.
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1480
     Wrap <aMagnitude> if it is not a legal Character value. (JS)"
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1481
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1482
    ^ Interval from:self to:(aMagnitude \\ 16r3FFFFFFF) by:inc
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1483
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1484
    "Created: / 04-07-2011 / 19:35:15 / cg"
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1485
!
Claus Gittinger <cg@exept.de>
parents: 11956
diff changeset
  1486
5847
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1487
utf8Encoded
11321
ceb4c9bf0085 Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11144
diff changeset
  1488
    "convert a character to its UTF-8 encoding.
5847
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1489
     this returns a String"
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1490
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1491
    |s|
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1492
7897
08fd96f5c1d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7799
diff changeset
  1493
    asciivalue <= 16r7F ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1494
	^ self asString.
7897
08fd96f5c1d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7799
diff changeset
  1495
    ].
08fd96f5c1d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7799
diff changeset
  1496
8222
f2c454a9a038 replaced '' writeStream by String writeStream
Claus Gittinger <cg@exept.de>
parents: 8207
diff changeset
  1497
    s := WriteStream on:(String new:6).
11321
ceb4c9bf0085 Unicode handling:
Stefan Vogel <sv@exept.de>
parents: 11144
diff changeset
  1498
    s nextPutUtf8:self.
5847
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1499
    ^ s contents
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1500
5847
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1501
    "
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  1502
	'ä' utf8Encoded
5847
aab6e1f01f55 UTF-8 Stuff
Stefan Vogel <sv@exept.de>
parents: 5746
diff changeset
  1503
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1504
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1505
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1506
!Character methodsFor:'copying'!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1507
15984
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1508
, aStringOrCharacter
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1509
    "return a string containing the concatenation of the receiver character
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1510
     and the argument, a string or character.
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1511
     Added for symetry, as we allow string,char also char,string should be allowed"
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1512
16074
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1513
%{
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1514
    OBJ s;
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1515
    unsigned INT val;
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1516
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1517
    // fast code for common cases
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1518
    val = __intVal(__characterVal(self));
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1519
    if (val <= 0xFF) {
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1520
	if (__isCharacter(aStringOrCharacter)) {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1521
	    unsigned INT val2 = __intVal(__characterVal(aStringOrCharacter));
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1522
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1523
	    if (val2 <= 0xFF) {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1524
		char buffer[2];
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1525
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1526
		buffer[0] = val;
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1527
		buffer[1] = val2;
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1528
		s = __MKSTRING_L(buffer, 2);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1529
		if (s != nil) {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1530
		    RETURN (s);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1531
		}
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1532
	    }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1533
	} else {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1534
	    if (__isString(aStringOrCharacter)) {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1535
		int strSize = __stringSize(aStringOrCharacter);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1536
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1537
		s = __MKEMPTYSTRING(strSize+1);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1538
		if (s != nil) {
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1539
		    __StringInstPtr(s)->s_element[0] = val;
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1540
		    memcpy(__StringInstPtr(s)->s_element+1, __stringVal(aStringOrCharacter), strSize+1); // copies 0-byte too
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1541
		    RETURN (s);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1542
		}
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1543
	    }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1544
	}
16074
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1545
    }
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1546
%}.
15984
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1547
    ^ self asString , aStringOrCharacter
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1548
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1549
    "
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1550
     $. , $:
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1551
     $. , 'abc' , $.
16074
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1552
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1553
      Time millisecondsToRun:[ 10000000 timesRepeat:[ $a , $b ]]
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1554
      Time millisecondsToRun:[ 10000000 timesRepeat:[ $a , 'b' ]]
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1555
      Time millisecondsToRun:[ 10000000 timesRepeat:[ 'a' , 'b' ]]
c45e7c47def3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 15984
diff changeset
  1556
      Time millisecondsToRun:[ 10000000 timesRepeat:[ 'a' , $b ]]
15984
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1557
    "
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1558
!
4f74a20b24f7 class: Character
Claus Gittinger <cg@exept.de>
parents: 15782
diff changeset
  1559
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1560
copy
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1561
    "return a copy of myself
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1562
     reimplemented since characters are unique"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1563
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1564
     ^ self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1565
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1566
10948
a90f2ab2c6ec deepCopy change
ab
parents: 10936
diff changeset
  1567
deepCopyUsing:aDictionary postCopySelector:postCopySelector
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1568
    "return a deep copy of myself
4728
37eaa8241422 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4682
diff changeset
  1569
     reimplemented since characters are immutable"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1570
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1571
     ^ self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1572
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1573
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1574
shallowCopy
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1575
    "return a shallow copy of myself
4728
37eaa8241422 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4682
diff changeset
  1576
     reimplemented since characters are immutable"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1577
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1578
     ^ self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1579
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1580
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1581
simpleDeepCopy
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1582
    "return a deep copy of myself
4728
37eaa8241422 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4682
diff changeset
  1583
     reimplemented since characters are immutable"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1584
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1585
     ^ self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1586
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1587
5471
a57eeb01c5ab General encoding method (#encodeOn:with:)
Stefan Vogel <sv@exept.de>
parents: 5452
diff changeset
  1588
!Character methodsFor:'encoding'!
a57eeb01c5ab General encoding method (#encodeOn:with:)
Stefan Vogel <sv@exept.de>
parents: 5452
diff changeset
  1589
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1590
rot13
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1591
     "Usenet: from `rotate alphabet 13 places']
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1592
      The simple Caesar-cypher encryption that replaces each English
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1593
      letter with the one 13 places forward or back along the alphabet,
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1594
      so that 'The butler did it!!' becomes 'Gur ohgyre qvq vg!!'
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1595
      Most Usenet news reading and posting programs include a rot13 feature.
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1596
      It is used to enclose the text in a sealed wrapper that the reader must choose
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1597
      to open -- e.g., for posting things that might offend some readers, or spoilers.
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1598
      A major advantage of rot13 over rot(N) for other N is that it
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1599
      is self-inverse, so the same code can be used for encoding and decoding."
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1600
11864
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1601
    ^ self rot:13
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1602
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1603
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1604
     $h rot13
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1605
     $h rot13 rot13
7715
0e69a830f5d8 use #and: - not #& you lazy bone, you
Claus Gittinger <cg@exept.de>
parents: 7689
diff changeset
  1606
     'The butler did it!!' rot13             -> 'Gur ohgyre qvq vg!!'
0e69a830f5d8 use #and: - not #& you lazy bone, you
Claus Gittinger <cg@exept.de>
parents: 7689
diff changeset
  1607
     'The butler did it!!' rot13 rot13       -> 'The butler did it!!'
6508
Claus Gittinger <cg@exept.de>
parents: 6398
diff changeset
  1608
    "
11864
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1609
!
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1610
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1611
rot:n
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1612
     "Usenet: from `rotate alphabet N places']
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1613
      The simple Caesar-cypher encryption that replaces each English
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1614
      letter with the one N places forward or back along the alphabet,
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1615
      so that 'The butler did it!!' becomes 'Gur ohgyre qvq vg!!' by rot:13
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1616
      Most Usenet news reading and posting programs include a rot13 feature.
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1617
      It is used to enclose the text in a sealed wrapper that the reader must choose
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1618
      to open -- e.g., for posting things that might offend some readers, or spoilers.
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1619
      A major advantage of rot13 over rot(N) for other N is that it
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1620
      is self-inverse, so the same code can be used for encoding and decoding."
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1621
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1622
    (self isLetter) ifTrue:[
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1623
	self isLowercase ifTrue:[
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1624
	    ^ 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' at:(self-$a+1+n)
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1625
	].
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1626
	^ 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ' at:(self-$A+1+n)
11864
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1627
    ].
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1628
    ^ self
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1629
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1630
    "
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1631
     'The butler did it!!' rot:13                -> 'Gur ohgyre qvq vg!!'
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1632
     ('The butler did it!!' rot:13) rot:13       -> 'The butler did it!!'
Claus Gittinger <cg@exept.de>
parents: 11653
diff changeset
  1633
    "
5471
a57eeb01c5ab General encoding method (#encodeOn:with:)
Stefan Vogel <sv@exept.de>
parents: 5452
diff changeset
  1634
! !
a57eeb01c5ab General encoding method (#encodeOn:with:)
Stefan Vogel <sv@exept.de>
parents: 5452
diff changeset
  1635
10428
fm
parents: 9654
diff changeset
  1636
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1637
!Character methodsFor:'obsolete'!
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1638
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1639
asciiValue
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1640
    "return the asciivalue of myself.
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1641
     The name 'asciiValue' is a historic leftover:
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1642
	characters are not limited to 8bit characters.
8143
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1643
     So the actual value returned is a codePoint (i.e. full potential for 31bit encoding).
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1644
     PP has removed this method with 4.1 and providing asInteger instead.
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1645
     ANSI defines #codePoint, please use this method"
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1646
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1647
    <resource:#obsolete>
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1648
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1649
    ^ asciivalue
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1650
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1651
    "Modified: 27.6.1996 / 12:34:34 / cg"
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1652
! !
b57bf0242c55 Fix comments
Stefan Vogel <sv@exept.de>
parents: 8106
diff changeset
  1653
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1654
!Character methodsFor:'printing & storing'!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1655
14117
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1656
displayOn:aGCOrStream
14120
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1657
    "Compatibility
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1658
     append a printed desription on some stream (Dolphin,  Squeak)
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1659
     OR:
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1660
     display the receiver in a graphicsContext at 0@0 (ST80).
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1661
     This method allows for any object to be displayed in some view
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  1662
     (although the fallBack is to display its printString ...)"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1663
14117
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1664
    "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1665
    "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
16744
eef6b34f19d7 displayOn: cleanup
Claus Gittinger <cg@exept.de>
parents: 16727
diff changeset
  1666
    (aGCOrStream isStream) ifFalse:[
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  1667
	^ super displayOn:aGCOrStream
14117
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1668
    ].
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1669
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1670
    self storeOn:aGCOrStream.
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1671
    aGCOrStream nextPutAll:' "16r'.
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1672
    asciivalue printOn:aGCOrStream base:16.
299ac69e8f9d added: #displayOn:
Stefan Vogel <sv@exept.de>
parents: 13558
diff changeset
  1673
    aGCOrStream nextPut:$".
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1674
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1675
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1676
isLiteral
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1677
    "return true, if the receiver can be used as a literal constant in ST syntax
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1678
     (i.e. can be used in constant arrays)"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1679
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1680
    ^ true
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1681
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1682
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1683
print
5746
cf5e42cb72ef do not overwrite the standard printing conventions
Claus Gittinger <cg@exept.de>
parents: 5566
diff changeset
  1684
    "print myself on stdout.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1685
     This method does NOT (by purpose) use the stream classes and
5746
cf5e42cb72ef do not overwrite the standard printing conventions
Claus Gittinger <cg@exept.de>
parents: 5566
diff changeset
  1686
     will therefore work even in case of emergency (but only, if Stdout is nil)."
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1687
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1688
%{  /* NOCONTEXT */
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1689
5746
cf5e42cb72ef do not overwrite the standard printing conventions
Claus Gittinger <cg@exept.de>
parents: 5566
diff changeset
  1690
    if (@global(Stdout) == nil) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1691
	putchar(__intVal(__INST(asciivalue)));
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1692
	RETURN(self);
5746
cf5e42cb72ef do not overwrite the standard printing conventions
Claus Gittinger <cg@exept.de>
parents: 5566
diff changeset
  1693
    }
5452
71fd110c347a allow print, printCR during early initialization
Claus Gittinger <cg@exept.de>
parents: 5433
diff changeset
  1694
%}.
71fd110c347a allow print, printCR during early initialization
Claus Gittinger <cg@exept.de>
parents: 5433
diff changeset
  1695
    super print
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1696
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1697
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1698
printOn:aStream
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1699
    "print myself on aStream"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1700
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1701
    aStream nextPut:self
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1702
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1703
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1704
printString
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1705
    "return a string to print me"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1706
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1707
    ^ self asString
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1708
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1709
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1710
storeOn:aStream
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1711
    "store myself on aStream"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1712
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1713
    |special|
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1714
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1715
    (asciivalue between:33 and:127) ifTrue:[
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1716
	aStream nextPut:$$; nextPut:self
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1717
    ] ifFalse:[
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1718
	(self == Character space) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1719
	    special := #space
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1720
	] ifFalse:[
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1721
	    (self == Character cr) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1722
		special := #cr.
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1723
	    ] ifFalse:[
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1724
		(self == Character tab) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1725
		    special := #tab.
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1726
		] ifFalse:[
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1727
		    (self == Character esc) ifTrue:[
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1728
			special := #esc.
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1729
		    ]
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1730
		]
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1731
	    ]
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1732
	].
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1733
	special notNil ifTrue:[
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1734
	    aStream nextPutAll:'(Character '; nextPutAll:special; nextPut:$).
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1735
	    ^ self
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1736
	].
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1737
	aStream nextPutAll:'(Character codePoint:16r'.
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1738
	asciivalue printOn:aStream base:16.
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  1739
	aStream nextPut:$)
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1740
     ].
995
b018368b3a94 asString to 16-bit char should return a twoByteString
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1741
3190
81ffb25d1d86 Use #printOn: instead of #printString
Stefan Vogel <sv@exept.de>
parents: 3072
diff changeset
  1742
    "Modified: / 23.2.1996 / 23:27:32 / cg"
81ffb25d1d86 Use #printOn: instead of #printString
Stefan Vogel <sv@exept.de>
parents: 3072
diff changeset
  1743
    "Modified: / 20.1.1998 / 14:10:46 / stefan"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1744
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1745
7257
b9f0fb923c72 method category rename
Claus Gittinger <cg@exept.de>
parents: 7250
diff changeset
  1746
!Character methodsFor:'private-accessing'!
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1747
8100
1bcc9d4ee4bc Fix #identityHash
Stefan Vogel <sv@exept.de>
parents: 8097
diff changeset
  1748
setCodePoint:anInteger
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1749
    "very private - set the codePoint.
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1750
     - use this only for newly created characters with codes > MAX_IMMEDIATE_CHARACTER.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1751
     DANGER alert:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1752
	funny things happen, if this is applied to
10936
9381620deb4d use #codePoint: instead of #value:
Stefan Vogel <sv@exept.de>
parents: 10428
diff changeset
  1753
	one of the shared characters with codePoints 0..MAX_IMMEDIATE_CHARACTER."
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1754
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1755
    asciivalue := anInteger
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1756
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1757
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1758
!Character methodsFor:'queries'!
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1759
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1760
bitsPerCharacter
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1761
    "return the number of bits I require for storage"
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1762
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1763
    asciivalue <= 16rFF ifTrue:[^ 8].
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1764
    asciivalue <= 16rFFFF ifTrue:[^ 16].
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1765
    ^ 32
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1766
!
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1767
18595
aa02a050b351 class: Character
Stefan Vogel <sv@exept.de>
parents: 18588
diff changeset
  1768
characterSize
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1769
    "return the number of bits I require for storage.
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1770
     Protocol compatibility with CharacterArray."
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
  1771
18595
aa02a050b351 class: Character
Stefan Vogel <sv@exept.de>
parents: 18588
diff changeset
  1772
    asciivalue <= 16r80 ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
  1773
	^ 7
18595
aa02a050b351 class: Character
Stefan Vogel <sv@exept.de>
parents: 18588
diff changeset
  1774
    ].
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1775
    asciivalue <= 16rFF ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
  1776
	^ 8
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1777
    ].
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1778
    asciivalue <= 16rFFFF ifTrue:[
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
  1779
	^ 16
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1780
    ].
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1781
    ^ 32
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1782
!
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  1783
8004
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1784
stringSpecies
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1785
    "return the type of string that is needed to store me"
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1786
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1787
    asciivalue <= 16rFF ifTrue:[^ String].
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1788
    asciivalue <= 16rFFFF ifTrue:[^ Unicode16String].
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1789
    ^ Unicode32String
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1790
! !
a09a6a745e65 asLowercase/asUppercase and friends care for 16-bit chars
Claus Gittinger <cg@exept.de>
parents: 7997
diff changeset
  1791
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1792
!Character methodsFor:'testing'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1793
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1794
isCharacter
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1795
    "return true,  if the receiver is some kind of character"
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1796
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1797
    ^ true
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1798
!
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1799
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1800
isControlCharacter
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1801
    "return true if I am a control character (i.e. ascii value < 32 or == 16rFF)"
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1802
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1803
%{  /* NOCONTEXT */
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1804
#ifdef NON_ASCII       /* i.e. EBCDIC ;-) */
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1805
# error    not yet implemented - fails when compiled
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1806
#else
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1807
    REGISTER INT val;
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1808
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1809
    val = __intVal(__INST(asciivalue));
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1810
    if (val < ' ' || val == 0xFF) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1811
	RETURN ( true );
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1812
    }
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1813
#endif
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1814
    RETURN (false);
3667
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1815
%}.
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1816
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1817
    "
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1818
     (Character value:1) isControlCharacter
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1819
     $a isControlCharacter
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1820
    "
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1821
!
83b1cebac287 added #isControlCharacter
Claus Gittinger <cg@exept.de>
parents: 3190
diff changeset
  1822
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1823
isDigit
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1824
    "return true, if I am a digit (i.e. $0 .. $9)"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1825
7980
058af5174df2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7979
diff changeset
  1826
%{  /* NOCONTEXT */
6527
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1827
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1828
    REGISTER INT val;
6527
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1829
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1830
    val = __intVal(__INST(asciivalue));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1831
    if ((unsigned INT)(val - '0') <= ('9' - '0')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1832
	RETURN ( true );
6527
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1833
    }
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1834
    RETURN ( false );
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1835
%}.
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1836
    ^ asciivalue between:$0 codePoint and:$9 codePoint
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1837
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1838
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1839
isDigitRadix:r
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1840
    "return true, if I am a digit of a base r number"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1841
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1842
    (asciivalue < $0 codePoint) ifTrue:[^ false].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1843
    (r > 10) ifTrue:[
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1844
	(asciivalue <= $9 codePoint) ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1845
	    ^ true
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1846
	].
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1847
	((asciivalue - $a codePoint) between:0 and:(r - 11)) ifTrue:[
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1848
	    ^ true
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1849
	].
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1850
	^ (asciivalue - $A codePoint) between:0 and:(r - 11)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1851
    ].
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1852
    (asciivalue - $0 codePoint) < r ifTrue:[^ true].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1853
    ^ false
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1854
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1855
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1856
isEndOfLineCharacter
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1857
    "return true if I am a line delimitting character"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1858
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1859
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1860
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1861
    REGISTER INT val;
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1862
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  1863
    val = __intVal(__INST(asciivalue));
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1864
    if ((val == '\n')
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1865
     || (val == '\r')
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1866
     || (val == '\f')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1867
	RETURN ( true );
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 37
diff changeset
  1868
    }
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1869
    RETURN (false);
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1870
%}.
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1871
    ^ asciivalue == 16r0A
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1872
      or:[asciivalue == 16r0D
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1873
      or:[asciivalue == 16r0C]]
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1874
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1875
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1876
5473
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1877
isImmediate
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1878
    "return true if I am an immediate object
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1879
     i.e. I am represented in the pointer itself and
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1880
     no real object header/storage is used me.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1881
     For VW compatibility, shared characters (i.e. in the range 0..MAX_IMMEDIATE_CHARACTER)
5473
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1882
     also return true here"
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1883
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1884
%{  /* NOCONTEXT */
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1885
    if (__smallIntegerVal(__INST(asciivalue)) <= MAX_IMMEDIATE_CHARACTER) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1886
	RETURN ( true );
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1887
    }
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1888
%}.
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1889
    ^ false
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1890
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1891
    "
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1892
	$a isImmediate.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1893
	(Character value:255) isImmediate.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1894
	(Character value:256) isImmediate.
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1895
	(Character value:1566) isImmediate.
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1896
    "
5473
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1897
!
c48d8c45c740 isImmediate returns true for shared characters
Claus Gittinger <cg@exept.de>
parents: 5471
diff changeset
  1898
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1899
isLetter
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  1900
    "return true, if I am a letter in the 'a'..'z' range.
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  1901
     Use isNationalLetter, if you are interested in those."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1902
7980
058af5174df2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7979
diff changeset
  1903
%{  /* NOCONTEXT */
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1904
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1905
    REGISTER INT val;
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1906
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  1907
    val = __intVal(__INST(asciivalue));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1908
    if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1909
	RETURN ( true );
6527
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1910
    }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1911
    if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1912
	RETURN ( true );
6527
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1913
    }
e6528da50c43 isXXX tuned
Claus Gittinger <cg@exept.de>
parents: 6526
diff changeset
  1914
    RETURN ( false );
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1915
%}.
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1916
    ^ (asciivalue between:($a codePoint) and:($z codePoint))
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  1917
      or:[(asciivalue between:($A codePoint) and:($Z codePoint))]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1918
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1919
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
  1920
isLetterOrDigit
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  1921
    "return true, if I am a letter (a..z or A..Z) or a digit (0..9)
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  1922
     Use isNationalAlphaNumeric, if you are interested in those."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1923
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1924
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1925
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1926
    REGISTER INT val;
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1927
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  1928
    val = __intVal(__INST(asciivalue));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1929
    if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1930
	RETURN ( true );
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1931
    }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1932
    if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1933
	RETURN ( true );
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1934
    }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1935
    if ((unsigned INT)(val - '0') <= ('9' - '0')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1936
	RETURN ( true );
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1937
    }
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1938
    RETURN ( false );
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1939
%}.
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  1940
    ^ self isLetter or:[self isDigit]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1941
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1942
17440
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1943
isLetterOrUnderline
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1944
    "return true, if I am a letter or $_"
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1945
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1946
    ^ self == $_ or:[ self isLetter ]
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1947
!
6c2d9887ba90 class: Character
Claus Gittinger <cg@exept.de>
parents: 17346
diff changeset
  1948
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1949
isLowercase
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  1950
    "return true, if I am a lower-case letter.
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  1951
     This one does care for national characters.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  1952
     Caveat:
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1953
	only returns the correct value for codes up to u+1d6ff (Unicode3.1).
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1954
	(which is more than mozilla does, btw. ;-)"
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1955
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1956
%{  /* NOCONTEXT */
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  1957
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1958
    REGISTER unsigned INT val;
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1959
    REGISTER unsigned int lowByte;
7989
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  1960
#define TRUE_IF_ODD(x)      ((x & 1) ? true : false)
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  1961
#define TRUE_IF_EVEN(x)     ((x & 1) ? false : true)
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
  1962
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1963
    /* because used so often, this is open coded, instead of table driven */
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  1964
    val = __intVal(__INST(asciivalue));
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1965
    lowByte = val & 0xFF;
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1966
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1967
    /* the most likely case here, outside the switch */
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1968
    if (val <= 0xFF) {
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1969
	if ((unsigned)(lowByte - 'a') <= ('z' - 'a')) {
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1970
	    RETURN ( true );
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1971
	}
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1972
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1973
	/* iso8859 puts national lower case characters at e0 .. ff */
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1974
	if ((lowByte >= 0xDF) && (lowByte <= 0xFF)) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1975
	    if (lowByte != 0xF7) {
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1976
		RETURN(true);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1977
	    }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1978
	}
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1979
	if (lowByte == 0xAA) RETURN(true);     /* FEMININE ORDINAL INDICATOR (high a-underline) */
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1980
	if (lowByte == 0xB5) RETURN(true);     /* MICRO SIGN */
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1981
	if (lowByte == 0xBA) RETURN(true);     /* MASCULINE ORDINAL INDICATOR (high o-underline) */
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1982
	RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1983
    }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1984
7989
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  1985
    switch (val >> 8) {
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1986
	case 0x01:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1987
	    if (lowByte <= 0x37) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1988
	    if (lowByte <= 0x48) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1989
	    if (lowByte <= 0x78) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1990
	    if (lowByte <= 0x7E) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1991
	    if (lowByte <= 0x80) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1992
	    if (lowByte < 0xCD) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1993
		if (lowByte == 0x81) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1994
		if (lowByte <= 0x85) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1995
		    RETURN (TRUE_IF_ODD(lowByte));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  1996
		}
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1997
		if (lowByte == 0x88) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1998
		if (lowByte == 0x8C) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  1999
		if (lowByte == 0x8D) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2000
		if (lowByte == 0x92) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2001
		if (lowByte == 0x95) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2002
		if (lowByte == 0x99) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2003
		if (lowByte == 0x9A) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2004
		if (lowByte == 0x9B) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2005
		if (lowByte == 0x9E) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2006
		if (lowByte <= 0xA0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2007
		if (lowByte <= 0xA6) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2008
		if (lowByte <= 0xAA) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2009
		if (lowByte <= 0xAE) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2010
		if (lowByte == 0xB2) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2011
		if (lowByte <= 0xB6) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2012
		if (lowByte == 0xB9) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2013
		if (lowByte == 0xBA) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2014
		if (lowByte == 0xBD) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2015
		if (lowByte == 0xBE) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2016
		if (lowByte == 0xBF) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2017
		if (lowByte == 0xC6) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2018
		if (lowByte == 0xC9) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2019
		if (lowByte == 0xCC) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2020
		RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2021
	    }
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2022
	    if (lowByte <= 0xDC) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2023
	    if (lowByte <= 0xEF) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2024
	    if (lowByte == 0xF0) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2025
	    if (lowByte == 0xF1) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2026
	    if (lowByte == 0xF2) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2027
	    if (lowByte == 0xF3) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2028
	    if (lowByte <= 0xF6) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2029
	    if (lowByte == 0xF7) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2030
	    RETURN (TRUE_IF_ODD(lowByte));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2031
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2032
	case 0x02:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2033
	    if (lowByte <= 0x33) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2034
	    if (lowByte <= 0x36) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2035
	    if (lowByte < 0x50) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2036
	    if (lowByte < 0xB0) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2037
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2038
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2039
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2040
	case 0x03:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2041
	    if (lowByte == 0x90) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2042
	    if (lowByte <= 0xAB) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2043
	    if (lowByte <= 0xD1) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2044
	    if (lowByte == 0xD5) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2045
	    if (lowByte == 0xD6) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2046
	    if (lowByte < 0xD7) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2047
	    if (lowByte <= 0xEF) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2048
	    if (lowByte <= 0xF3) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2049
	    if (lowByte == 0xF5) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2050
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2051
	    if (lowByte == 0xF8) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2052
	    if (lowByte == 0xFB) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2053
#endif
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2054
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2055
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2056
	case 0x04:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2057
	    if (lowByte <= 0x2F) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2058
	    if (lowByte <= 0x5F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2059
	    if (lowByte <= 0x81) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2060
	    if (lowByte < 0x8A) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2061
	    if (lowByte <= 0xC0) { RETURN (TRUE_IF_ODD(lowByte)); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2062
#ifdef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2063
	    if (lowByte == 0xC5) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2064
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2065
#ifdef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2066
	    if (lowByte <= 0xC8) { RETURN (TRUE_IF_EVEN(lowByte)); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2067
#else
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2068
	    if (lowByte <= 0xCA) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2069
	    if (lowByte == 0xCD) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2070
	    if (lowByte == 0xCE) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2071
#endif
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2072
	    if (lowByte == 0xCB) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2073
	    if (lowByte == 0xCC) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2074
	    RETURN (TRUE_IF_ODD(lowByte));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2075
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2076
	case 0x05:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2077
	    if (lowByte <= 0x0F) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2078
	    if (lowByte < 0x61) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2079
	    if (lowByte <= 0x87) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2080
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2081
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2082
	case 0x1D:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2083
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2084
	    if (lowByte <= 0x2B) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2085
	    if (lowByte <= 0x61) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2086
	    if (lowByte <= 0x70) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2087
#endif
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2088
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2089
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2090
	case 0x1E:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2091
	    if (lowByte < 0x96) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2092
	    if (lowByte <= 0x9F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2093
	    RETURN (TRUE_IF_ODD(lowByte));
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2094
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2095
	case 0x1F:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2096
	    if (lowByte <= 0x6F) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2097
		if (lowByte & 0x0008) { RETURN (false); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2098
		RETURN (true);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2099
	    }
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2100
	    if (lowByte <= 0x87) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2101
	    if (lowByte < 0xB8) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2102
		if (lowByte & 0x0008) { RETURN (false); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2103
		RETURN (true);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2104
	    }
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2105
	    if (lowByte == 0xBE) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2106
	    if (lowByte == 0xD4) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2107
	    if (lowByte == 0xC5) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2108
	    if (lowByte == 0xD5) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2109
	    if (lowByte == 0xC1) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2110
	    if (lowByte == 0xF1) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2111
	    if (lowByte == 0xC0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2112
	    if (lowByte == 0xF0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2113
	    if (((lowByte & 0x000F) >= 0x0000) && ((lowByte & 0x000F) <= 0x0007)) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2114
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2115
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2116
	case 0x20:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2117
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2118
	    if (lowByte == 0x71) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2119
#endif
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2120
	    if (lowByte == 0x7F) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2121
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2122
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2123
	case 0x21:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2124
	    if (lowByte == 0x0A) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2125
	    if (lowByte < 0x0E) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2126
	    if (lowByte <= 0x0F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2127
	    if (lowByte == 0x13) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2128
	    if (lowByte == 0x2F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2129
	    if (lowByte == 0x34) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2130
	    if (lowByte == 0x39) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2131
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2132
	    if (lowByte == 0x3D) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2133
	    if (lowByte <= 0x45) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2134
	    if (lowByte <= 0x49) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2135
#endif
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2136
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2137
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2138
	case 0xFB:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2139
	    if (lowByte <= 0x1C) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2140
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2141
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2142
	case 0xFF:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2143
	    if ((lowByte >= 0x41) && (lowByte <= 0x5A)) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2144
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2145
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2146
	case 0x104:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2147
	    if (lowByte <= 0x27) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2148
	    if (lowByte <= 0x4D) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2149
#ifdef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2150
	    if (lowByte <= 0x4D) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2151
#else
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2152
	    if (lowByte <= 0x4F) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2153
#endif
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2154
	    RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2155
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2156
	case 0x1D4:
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2157
	case 0x1D5:
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2158
	case 0x1D6:
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2159
	    if (val <= 0x1D419) { RETURN (false); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2160
	    if (val < 0x1D6be) {
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2161
		if (((val - 0x1D41A) % 52) <= 25) { RETURN (true); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2162
		RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2163
	    }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2164
	    if (val < 0x1D6c2) { RETURN (false); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2165
	    if (val < 0x1D6db) { RETURN (true); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2166
	    if (val == 0x1D6db) { RETURN (false); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2167
	    if (val < 0x1D6e2) { RETURN (true); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2168
	    if (val <= 0x1D6fb) { RETURN (false); }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2169
	    RETURN (true);
13558
8257cf70c967 changed: #isLowercase
Claus Gittinger <cg@exept.de>
parents: 13499
diff changeset
  2170
8257cf70c967 changed: #isLowercase
Claus Gittinger <cg@exept.de>
parents: 13499
diff changeset
  2171
#ifdef UNICODE_4
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2172
	case 0x1D7:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2173
	    if (lowByte <= 0x1b) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2174
	    if (lowByte <= 0x35) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2175
	    if (lowByte <= 0x55) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2176
	    if (lowByte <= 0x6f) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2177
	    if (lowByte <= 0x8F) { RETURN (true); }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2178
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2179
	    RETURN (false);
13558
8257cf70c967 changed: #isLowercase
Claus Gittinger <cg@exept.de>
parents: 13499
diff changeset
  2180
#endif
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2181
    }
7989
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  2182
#undef TRUE_IF_ODD
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  2183
#undef TRUE_IF_EVEN
7907420b2fab asUppercase / asLowercase for U0100..U04FF
Claus Gittinger <cg@exept.de>
parents: 7988
diff changeset
  2184
    RETURN (false);
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2185
%}.
13558
8257cf70c967 changed: #isLowercase
Claus Gittinger <cg@exept.de>
parents: 13499
diff changeset
  2186
8257cf70c967 changed: #isLowercase
Claus Gittinger <cg@exept.de>
parents: 13499
diff changeset
  2187
    "Modified: / 05-08-2011 / 18:56:33 / cg"
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
  2188
!
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
  2189
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2190
isPrintable
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2191
    "return true, if the receiver is a useful printable character
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2192
     (see fileBrowsers showFile:-method on how it can be used)"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2193
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2194
    (asciivalue between:32 and:127) ifTrue:[^ true].
6398
1a32afa7b397 ff isPrintable -> true
Claus Gittinger <cg@exept.de>
parents: 6327
diff changeset
  2195
    asciivalue == 12 ifTrue:[^ true].   "/ FF
1a32afa7b397 ff isPrintable -> true
Claus Gittinger <cg@exept.de>
parents: 6327
diff changeset
  2196
    asciivalue == 13 ifTrue:[^ true].   "/ CR
1a32afa7b397 ff isPrintable -> true
Claus Gittinger <cg@exept.de>
parents: 6327
diff changeset
  2197
    asciivalue == 9 ifTrue:[^ true].    "/ TAB
1a32afa7b397 ff isPrintable -> true
Claus Gittinger <cg@exept.de>
parents: 6327
diff changeset
  2198
    asciivalue == 10 ifTrue:[^ true].   "/ NL
2840
493b24293589 isPrintable
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2199
8097
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  2200
    (asciivalue between:16rA0 and:16rBF) ifTrue:[^ true]. "/ ISO-8859
abec585462e8 Fix c-compiler warnings.
Stefan Vogel <sv@exept.de>
parents: 8030
diff changeset
  2201
    ^ self isNationalAlphaNumeric
2840
493b24293589 isPrintable
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2202
493b24293589 isPrintable
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2203
    "Modified: 7.8.1997 / 17:05:24 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2204
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2205
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2206
isSeparator
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2207
    "return true if I am a space, cr, tab, nl, or newPage"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2208
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2209
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2210
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2211
    REGISTER INT val;
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2212
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  2213
    val = __intVal(__INST(asciivalue));
328
claus
parents: 314
diff changeset
  2214
#ifndef NON_ASCII       /* i.e. EBCDIC ;-) */
claus
parents: 314
diff changeset
  2215
    if (val <= ' ')
claus
parents: 314
diff changeset
  2216
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2217
	if ((val == ' ')
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2218
	 || (val == '\n')
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2219
	 || (val == '\t')
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2220
	 || (val == '\r')
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2221
	 || (val == '\f')) {
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2222
	    RETURN ( true );
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2223
	}
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2224
    RETURN (false);
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2225
%}.
5423
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2226
    ^ (asciivalue == 16r20)
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2227
      or:[asciivalue == 16r0D
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2228
      or:[asciivalue == 16r0A
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2229
      or:[asciivalue == 16r09
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2230
      or:[asciivalue == 16r0C]]]]
e33decc83182 non-primitive fallBack code added
Claus Gittinger <cg@exept.de>
parents: 5407
diff changeset
  2231
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2232
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2233
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2234
isUppercase
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  2235
    "return true, if I am an upper-case letter.
8022
d901d41171a5 isXXX and asXXX are now valid up to U+1d6FF
Claus Gittinger <cg@exept.de>
parents: 8012
diff changeset
  2236
     This one does care for national characters.
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2237
     Caveat:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2238
	only returns the correct value for codes up to u+1d6ff (Unicode3.1).
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2239
	(which is more than mozilla does, btw. ;-)"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2240
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2241
%{  /* NOCONTEXT */
7988
cb1c920e67eb isUppercase / isLowercase unicode changes
Claus Gittinger <cg@exept.de>
parents: 7987
diff changeset
  2242
#define TRUE_IF_ODD(x)      ((x & 1) ? true : false)
cb1c920e67eb isUppercase / isLowercase unicode changes
Claus Gittinger <cg@exept.de>
parents: 7987
diff changeset
  2243
#define TRUE_IF_EVEN(x)     ((x & 1) ? false : true)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2244
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2245
    /* because used so often, this is open coded, instead of table driven */
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2246
    REGISTER unsigned INT val;
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2247
    REGISTER int lowByte;
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2248
1133
961f2b095c22 underline cleanup
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
  2249
    val = __intVal(__INST(asciivalue));
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2250
    lowByte = val & 0xFF;
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  2251
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2252
    /* the most likely case here, outside the switch */
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2253
    if (val <= 0xFF) {
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2254
	if ((unsigned int)(lowByte - 'A') <= ('Z' - 'A')) {
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2255
	    RETURN ( true );
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2256
	}
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2257
	/* iso8859 puts national upper case characters at c0 .. df */
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2258
	if ((lowByte >= 0xC0) && (lowByte <= 0xDE)) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2259
	    if (lowByte != 0xD7) {
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2260
		RETURN(true);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2261
	    }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2262
	}
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2263
	RETURN (false);
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2264
    }
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2265
7988
cb1c920e67eb isUppercase / isLowercase unicode changes
Claus Gittinger <cg@exept.de>
parents: 7987
diff changeset
  2266
    switch (val >> 8) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2267
	case 0x01:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2268
	    if (lowByte <= 0x37) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2269
	    if (lowByte <= 0x48) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2270
	    if (lowByte <= 0x78) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2271
	    if (lowByte <= 0x7E) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2272
	    if (lowByte < 0xCD) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2273
		if (lowByte == 0x80) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2274
		if (lowByte == 0x81) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2275
		if (lowByte <= 0x86) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2276
		    RETURN (TRUE_IF_EVEN(lowByte));
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2277
		}
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2278
		if (lowByte <= 0x89) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2279
		    RETURN (TRUE_IF_ODD(lowByte));
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2280
		}
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2281
		if (lowByte <= 0x8B) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2282
		if (lowByte <= 0x8D) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2283
		if (lowByte <= 0x91) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2284
		if (lowByte == 0x93) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2285
		if (lowByte == 0x94) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2286
		if (lowByte == 0x96) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2287
		if (lowByte == 0x97) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2288
		if (lowByte == 0x98) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2289
		if (lowByte == 0x9C) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2290
		if (lowByte == 0x9D) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2291
		if (lowByte == 0x9F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2292
		if (lowByte < 0xA0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2293
		if (lowByte <= 0xA6) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2294
		if (lowByte <= 0xAA) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2295
		if (lowByte <= 0xAE) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2296
		if (lowByte == 0xB2) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2297
		if (lowByte <= 0xB7) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2298
		if (lowByte == 0xB8) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2299
		if (lowByte == 0xBC) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2300
		if (lowByte == 0xC4) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2301
		if (lowByte == 0xC7) { RETURN (true); }
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
  2302
#if 0
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2303
		if (lowByte == 0xC8) { RETURN (true); }
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
  2304
#endif
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2305
		if (lowByte == 0xCA) { RETURN (true); }
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
  2306
#if 0
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2307
		if (lowByte == 0xCB) { RETURN (true); }
8308
19a958b21ac0 no const for hpux
Claus Gittinger <cg@exept.de>
parents: 8222
diff changeset
  2308
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2309
		RETURN (false);         /* WRONG !!! */
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2310
	    }
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2311
	    if (lowByte <= 0xDC) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2312
	    if (lowByte <= 0xEF) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2313
	    if (lowByte == 0xF0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2314
	    if (lowByte == 0xF1) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2315
	    if (lowByte == 0xF2) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2316
	    if (lowByte == 0xF3) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2317
	    if (lowByte == 0xF4) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2318
	    if (lowByte == 0xF5) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2319
	    if (lowByte == 0xF6) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2320
	    if (lowByte == 0xF7) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2321
	    RETURN (TRUE_IF_EVEN(lowByte));
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2322
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2323
	case 0x02:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2324
	    if (lowByte <= 0x33) { RETURN (TRUE_IF_EVEN(lowByte)); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2325
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2326
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2327
	case 0x03:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2328
	    if (lowByte < 0x86) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2329
	    if (lowByte == 0x87) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2330
	    if (lowByte == 0x90) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2331
	    if (lowByte <= 0xAB) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2332
	    if (lowByte <= 0xD1) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2333
	    if (lowByte <= 0xD4) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2334
	    if (lowByte <= 0xD7) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2335
	    if (lowByte <= 0xEF) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2336
	    if (lowByte == 0xF4) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2337
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2338
	    if (lowByte == 0xF7) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2339
	    if (lowByte == 0xF9) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2340
	    if (lowByte == 0xFa) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2341
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2342
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2343
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2344
	case 0x04:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2345
	    if (lowByte <= 0x2F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2346
	    if (lowByte <= 0x5F) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2347
	    if (lowByte <= 0x81) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2348
	    if (lowByte < 0x8A) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2349
	    if (lowByte <= 0xC0) { RETURN (TRUE_IF_EVEN(lowByte)); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2350
#ifdef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2351
	    if (lowByte == 0xC5) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2352
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2353
#ifdef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2354
	    if (lowByte <= 0xC8) { RETURN (TRUE_IF_ODD(lowByte)); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2355
#else
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2356
	    if (lowByte <= 0xCA) { RETURN (TRUE_IF_ODD(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2357
	    if (lowByte == 0xCD) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2358
	    if (lowByte == 0xCE) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2359
#endif
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2360
	    if (lowByte == 0xCB) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2361
	    if (lowByte == 0xCC) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2362
	    RETURN (TRUE_IF_EVEN(lowByte));
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2363
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2364
	case 0x05:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2365
	    if (lowByte <= 0x0F) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2366
	    if (lowByte < 0x31) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2367
	    if (lowByte <= 0x56) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2368
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2369
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2370
	case 0x10:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2371
	    if (lowByte < 0xA0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2372
	    if (lowByte <= 0xCF) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2373
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2374
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2375
	case 0x1E:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2376
	    if (lowByte < 0x96) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2377
	    if (lowByte < 0xA0) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2378
	    RETURN (TRUE_IF_EVEN(lowByte));
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2379
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2380
	case 0x1F:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2381
	    if (lowByte <= 0x6F) {
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2382
		if (lowByte & 0x0008) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2383
	    }
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2384
	    if (lowByte <= 0x87) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2385
	    if (lowByte < 0xB8) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2386
	    if (lowByte < 0xBC) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2387
	    if (lowByte == 0xEC) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2388
	    if (((lowByte & 0x000F) >= 0x0008) && ((lowByte & 0x000F) <= 0x000B)) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2389
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2390
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2391
	case 0x21:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2392
	    if (lowByte == 0x02) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2393
	    if (lowByte == 0x07) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2394
	    if (lowByte < 0x0B) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2395
	    if (lowByte < 0x0E) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2396
	    if (lowByte == 0x10) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2397
	    if (lowByte == 0x11) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2398
	    if (lowByte == 0x12) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2399
	    if (lowByte == 0x15) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2400
	    if (lowByte == 0x19) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2401
	    if (lowByte == 0x1A) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2402
	    if (lowByte == 0x1B) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2403
	    if (lowByte == 0x1C) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2404
	    if (lowByte == 0x1D) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2405
	    if (lowByte < 0x24) { RETURN (false); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2406
	    if (lowByte <= 0x2A) { RETURN (TRUE_IF_EVEN(lowByte)); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2407
	    if (lowByte == 0x2B) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2408
	    if (lowByte == 0x2C) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2409
	    if (lowByte == 0x2D) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2410
	    if (lowByte == 0x30) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2411
	    if (lowByte == 0x31) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2412
	    if (lowByte == 0x33) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2413
#ifndef UNICODE_3_2
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2414
	    if (lowByte == 0x3E) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2415
	    if (lowByte == 0x3F) { RETURN (true); }
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2416
	    if (lowByte == 0x45) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2417
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2418
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2419
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2420
	case 0xFF:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2421
	    if ((lowByte >= 0x21) && (lowByte <= 0x3A)) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2422
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2423
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2424
	case 0x104:
18658
d1665870d020 better code for asLowercase and asUppercase
Claus Gittinger <cg@exept.de>
parents: 18656
diff changeset
  2425
	    if (lowByte <= 0x27) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2426
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2427
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2428
	case 0x1D4:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2429
	case 0x1D5:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2430
	case 0x1D6:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2431
	    if (val <= 0x1D419) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2432
	    if (val < 0x1D6be) {
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2433
		if (((val - 0x1D41A) % 52) <= 25) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2434
		RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2435
	    }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2436
	    if (val < 0x1D6c1) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2437
	    if (val < 0x1D6e2) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2438
	    if (val < 0x1D6fb) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2439
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2440
	    RETURN (false);
7979
7515722ccfb1 isUppercase / isLowercase fix for division character.
Claus Gittinger <cg@exept.de>
parents: 7976
diff changeset
  2441
    }
7988
cb1c920e67eb isUppercase / isLowercase unicode changes
Claus Gittinger <cg@exept.de>
parents: 7987
diff changeset
  2442
    RETURN (false);
7985
4a28f0e3832d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7980
diff changeset
  2443
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2444
#undef TRUE_IF_ODD
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2445
#undef TRUE_IF_EVEN
7988
cb1c920e67eb isUppercase / isLowercase unicode changes
Claus Gittinger <cg@exept.de>
parents: 7987
diff changeset
  2446
%}
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2447
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2448
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2449
isVowel
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2450
    "return true, if I am a vowel (lower- or uppercase)"
333
claus
parents: 328
diff changeset
  2451
6066
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2452
    "/ I know the code is ugly;
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2453
    "/ better code is:
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2454
    "/     'aeiou' includes:self asLowercase
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2455
    "/ or:
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2456
    "/     'aeiouAEIOU' includes:self
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2457
    "/
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2458
    "/ until I have a smart compiler, I use the shorter (codewise):
ca508f7658dc comment
Claus Gittinger <cg@exept.de>
parents: 6029
diff changeset
  2459
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2460
    (self == $a) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2461
    (self == $e) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2462
    (self == $i) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2463
    (self == $o) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2464
    (self == $u) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2465
    (self == $A) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2466
    (self == $E) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2467
    (self == $I) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2468
    (self == $O) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2469
    (self == $U) ifTrue:[^ true].
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2470
    ^ false
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2471
! !
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  2472
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2473
!Character methodsFor:'testing - national'!
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2474
17188
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2475
asNonDiacritical
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2476
    "return a new character which represents the receiver without diacritics.
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2477
     This is used with string search and when lists are to be ordered/sorted by base character order.
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2478
     CAVEAT:
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2479
	for now, this method is only correct for unicode characters up to u+2FF,
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2480
	i.e. latin languages"
17188
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2481
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2482
%{  /* NOCONTEXT */
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2483
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2484
    REGISTER INT val;
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2485
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2486
    /* because used so often, this is open coded, instead of table driven */
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2487
    val = __intVal(__INST(asciivalue));
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2488
    switch (val >> 8) {
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2489
	case 0x00:
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2490
	    if (val < 0xC0) { RETURN(self); }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2491
	    if (val <= 0xC6) { val = 'A'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2492
	    if (val == 0xC7) { val = 'C'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2493
	    if (val <= 0xCB) { val = 'E'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2494
	    if (val <= 0xCF) { val = 'I'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2495
	    if (val == 0xD0) { val = 'D'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2496
	    if (val == 0xD1) { val = 'N'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2497
	    if (val <= 0xD6) { val = 'O'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2498
	    if (val == 0xD7) { RETURN(self) }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2499
	    if (val == 0xD8) { val = 'O'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2500
	    if (val <= 0xDC) { val = 'U'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2501
	    if (val == 0xDD) { val = 'Y'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2502
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2503
	    if (val < 0xE0) { RETURN(self) }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2504
	    if (val <= 0xE6) { val = 'a'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2505
	    if (val == 0xE7) { val = 'c'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2506
	    if (val <= 0xEB) { val = 'e'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2507
	    if (val <= 0xEF) { val = 'i'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2508
	    if (val == 0xF0) { val = 'd'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2509
	    if (val == 0xF1) { val = 'n'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2510
	    if (val <= 0xF6) { val = 'o'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2511
	    if (val == 0xF7) { RETURN(self) }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2512
	    if (val == 0xF8) { val = 'o'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2513
	    if (val <= 0xFC) { val = 'u'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2514
	    if (val == 0xFD) { val = 'y'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2515
	    if (val == 0xFF) { val = 'y'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2516
	    RETURN (self);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2517
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2518
	case 0x01:
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2519
	    if (val <= 0x105) { val = (val & 1) ? 'a' : 'A'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2520
	    if (val <= 0x10D) { val = (val & 1) ? 'c' : 'C'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2521
	    if (val <= 0x111) { val = (val & 1) ? 'd' : 'D'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2522
	    if (val <= 0x11B) { val = (val & 1) ? 'e' : 'E'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2523
	    if (val <= 0x123) { val = (val & 1) ? 'g' : 'G'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2524
	    if (val <= 0x127) { val = (val & 1) ? 'h' : 'H'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2525
	    if (val <= 0x133) { val = (val & 1) ? 'i' : 'I'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2526
	    if (val <= 0x137) { val = (val & 1) ? 'k' : 'K'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2527
	    if (val == 0x138) { val = 'K'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2528
	    if (val <= 0x142) { val = (val & 1) ? 'L' : 'l'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2529
	    if (val <= 0x148) { val = (val & 1) ? 'N' : 'n'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2530
	    if (val <= 0x14B) { val = (val & 1) ? 'n' : 'N'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2531
	    if (val <= 0x153) { val = (val & 1) ? 'o' : 'O'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2532
	    if (val <= 0x159) { val = (val & 1) ? 'r' : 'R'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2533
	    if (val <= 0x161) { val = (val & 1) ? 's' : 'S'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2534
	    if (val <= 0x167) { val = (val & 1) ? 't' : 'T'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2535
	    if (val <= 0x173) { val = (val & 1) ? 'u' : 'U'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2536
	    if (val <= 0x175) { val = (val & 1) ? 'w' : 'W'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2537
	    if (val <= 0x178) { val = (val & 1) ? 'y' : 'Y'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2538
	    if (val <= 0x17E) { val = (val & 1) ? 'Z' : 'z'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2539
	    RETURN (self);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2540
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2541
	case 0x02:
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2542
	    if (val <= 0x203) { val = (val & 1) ? 'a' : 'A'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2543
	    if (val <= 0x207) { val = (val & 1) ? 'e' : 'E'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2544
	    if (val <= 0x20B) { val = (val & 1) ? 'i' : 'I'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2545
	    if (val <= 0x20F) { val = (val & 1) ? 'o' : 'O'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2546
	    if (val <= 0x213) { val = (val & 1) ? 'r' : 'R'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2547
	    if (val <= 0x217) { val = (val & 1) ? 'u' : 'U'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2548
	    if (val <= 0x219) { val = (val & 1) ? 's' : 'S'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2549
	    if (val <= 0x21B) { val = (val & 1) ? 't' : 'T'; break; }
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2550
	    RETURN (self);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2551
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2552
	case 0x03:
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2553
	    // to be done
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2554
	    RETURN (self);
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2555
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2556
	case 0x04:
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2557
	    // to be done
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2558
	    RETURN (self);
17188
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2559
    }
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2560
    if (val <= MAX_IMMEDIATE_CHARACTER) {
18215
5940d5eff81b java preps
Claus Gittinger <cg@exept.de>
parents: 17440
diff changeset
  2561
	RETURN (__MKCHARACTER(val)) ;
17188
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2562
    }
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2563
    RETURN (__MKUCHARACTER(val)) ;
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2564
%}
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2565
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2566
    "
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2567
     $e asNonDiacritical
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  2568
     $é asNonDiacritical
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  2569
     $ä asNonDiacritical
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  2570
     $Ã¥ asNonDiacritical
17188
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2571
    "
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2572
!
6a19e6954c3e class: Character
Claus Gittinger <cg@exept.de>
parents: 17184
diff changeset
  2573
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2574
isNationalAlphaNumeric
18268
70af591a198c class: Character
Stefan Vogel <sv@exept.de>
parents: 18240
diff changeset
  2575
    "return true, if the receiver is a letter or digit.
70af591a198c class: Character
Stefan Vogel <sv@exept.de>
parents: 18240
diff changeset
  2576
     This assumes unicode encoding."
70af591a198c class: Character
Stefan Vogel <sv@exept.de>
parents: 18240
diff changeset
  2577
70af591a198c class: Character
Stefan Vogel <sv@exept.de>
parents: 18240
diff changeset
  2578
    ^ self isNationalLetter or:[self isNationalDigit]
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2579
!
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2580
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2581
isNationalDigit
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2582
    "return true, if the receiver is a digit.
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2583
     This assumes unicode encoding.
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2584
     WARNING: this method is not complete."
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2585
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2586
    |codePoint "{ Class SmallInteger }"|
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2587
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2588
    codePoint := asciivalue.
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2589
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2590
    codePoint <= 16rFF ifTrue:[                "/ u00xx - unicode latin1 page
18298
541b114e644a schteam
Claus Gittinger <cg@exept.de>
parents: 18268
diff changeset
  2591
	^ codePoint between:$0 codePoint and:$9 codePoint.
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2592
    ].
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2593
18268
70af591a198c class: Character
Stefan Vogel <sv@exept.de>
parents: 18240
diff changeset
  2594
    ^ codePoint between:16rFF10 and:16rFF19
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2595
!
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2596
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2597
isNationalLetter
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2598
    "return true, if the receiver is a letter.
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2599
     CAVEAT:
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2600
	for now, this method is only correct for unicode characters up to u+1d6ff (Unicode3.1).
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2601
	(which is more than mozilla does, btw. ;-)"
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2602
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2603
%{  /* NOCONTEXT */
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2604
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2605
    REGISTER INT val;
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2606
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2607
    /* because used so often, this is open coded, instead of table driven */
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2608
    val = __intVal(__INST(asciivalue));
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2609
    switch (val >> 8) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2610
	case 0x00:
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2611
	    if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2612
		RETURN ( true );
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2613
	    }
14684
dfe58a6be944 64bit fix;
Claus Gittinger <cg@exept.de>
parents: 14663
diff changeset
  2614
	    if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2615
		RETURN ( true );
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2616
	    }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2617
	    if (val == 0xAA) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2618
	    if (val == 0xB5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2619
	    if (val == 0xBA) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2620
	    if (val < 0xC0) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2621
	    if (val == 0xD7) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2622
	    if (val == 0xF7) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2623
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2624
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2625
	case 0x01:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2626
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2627
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2628
	case 0x02:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2629
#ifdef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2630
	    if (val <= 0x2B8) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2631
	    if (val == 0x2B9) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2632
	    if (val == 0x2BA) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2633
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2634
	    if (val <= 0x2BA) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2635
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2636
	    if (val <= 0x2C1) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2637
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2638
	    if (val <= 0x2C5) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2639
	    if (val <= 0x2CF) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2640
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2641
	    if (val == 0x2D0) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2642
	    if (val == 0x2D1) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2643
	    if (val <= 0x2DF) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2644
	    if (val <= 0x2E4) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2645
	    if (val == 0x2EE) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2646
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2647
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2648
	case 0x03:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2649
	    if (val == 0x37A) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2650
	    if (val <= 0x385) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2651
	    if (val == 0x387) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2652
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2653
	    if (val == 0x3F6) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2654
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2655
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2656
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2657
	case 0x04:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2658
	    if (val <= 0x481) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2659
	    if (val <= 0x486) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2660
	    if (val == 0x487) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2661
#ifdef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2662
	    if (val <= 0x48A) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2663
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2664
	    if (val <= 0x489) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2665
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2666
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2667
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2668
	case 0x05:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2669
	    if (val <= 0x50f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2670
	    if (val <= 0x530) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2671
	    if (val <= 0x556) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2672
	    if (val <= 0x558) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2673
	    if (val <= 0x559) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2674
	    if (val <= 0x55F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2675
	    if (val <= 0x587) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2676
	    if (val <= 0x5cf) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2677
	    if (val <= 0x5f2) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2678
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2679
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2680
	case 0x06:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2681
	    if (val <= 0x620) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2682
	    if (val <= 0x64A) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2683
	    if (val <= 0x66D) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2684
	    if (val == 0x670) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2685
	    if (val <= 0x6D3) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2686
	    if (val == 0x6D5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2687
	    if (val == 0x6E5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2688
	    if (val == 0x6E6) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2689
	    if (val == 0x6EE) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2690
	    if (val == 0x6EF) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2691
	    if (val == 0x6FA) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2692
	    if (val == 0x6FB) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2693
	    if (val == 0x6FC) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2694
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2695
	    if (val == 0x6FF) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2696
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2697
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2698
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2699
	case 0x07:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2700
	    if (val <= 0x70F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2701
	    if (val == 0x711) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2702
	    if (val <= 0x72F) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2703
#ifdef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2704
	    if (val <= 0x74d) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2705
	    if (val <= 0x74e) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2706
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2707
	    if (val <= 0x74c) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2708
	    if (val <= 0x74f) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2709
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2710
	    if (val <= 0x77F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2711
	    if (val <= 0x7a5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2712
	    if (val <= 0x7af) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2713
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2714
	    if (val == 0x7B1) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2715
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2716
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2717
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2718
	case 0x09:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2719
#ifdef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2720
	    if (val <= 0x904) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2721
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2722
	    if (val <= 0x903) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2723
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2724
	    if (val <= 0x93B) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2725
	    if (val == 0x93D) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2726
	    if (val == 0x950) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2727
	    if (val <= 0x957) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2728
	    if (val <= 0x961) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2729
	    if (val <= 0x984) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2730
	    if (val <= 0x9BB) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2731
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2732
	    if (val == 0x9BD) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2733
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2734
	    if (val <= 0x9DB) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2735
	    if (val <= 0x9E1) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2736
	    if (val <= 0x9EF) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2737
	    if (val <= 0x9F1) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2738
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2739
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2740
	case 0x0A:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2741
	    if (val <= 0xa04) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2742
	    if (val <= 0xa3B) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2743
	    if (val <= 0xa58) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2744
	    if (val <= 0xa65) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2745
	    if (val <= 0xa71) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2746
	    if (val <= 0xa80) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2747
	    if (val <= 0xa84) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2748
	    if (val <= 0xaBB) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2749
	    if (val == 0xaBD) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2750
	    if (val <= 0xaCF) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2751
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2752
	    if (val == 0xAE2) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2753
	    if (val == 0xAE3) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2754
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2755
	    if (val <= 0xaE5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2756
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2757
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2758
	case 0x0B:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2759
	    if (val <= 0xB04) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2760
	    if (val <= 0xb3B) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2761
	    if (val == 0xb3d) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2762
	    if (val <= 0xb5B) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2763
	    if (val <= 0xb65) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2764
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2765
	    if (val == 0xB71) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2766
	    if (val == 0xB83) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2767
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2768
	    if (val <= 0xb84) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2769
	    if (val <= 0xbBB) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2770
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2771
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2772
	case 0x0c:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2773
	    if (val <= 0xc04) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2774
	    if (val <= 0xc3d) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2775
	    if (val <= 0xc5f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2776
	    if (val <= 0xc65) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2777
	    if (val <= 0xc84) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2778
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2779
	    if (val == 0xcbc) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2780
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2781
	    if (val <= 0xcbd) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2782
	    if (val <= 0xcdc) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2783
	    if (val <= 0xce5) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2784
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2785
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2786
	case 0x0d:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2787
	    if (val <= 0xd04) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2788
	    if (val <= 0xd3d) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2789
	    if (val <= 0xd5f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2790
	    if (val <= 0xd65) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2791
	    if (val <= 0xd84) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2792
	    if (val <= 0xdc9) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2793
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2794
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2795
	case 0x0E:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2796
	    if (val == 0xE31) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2797
	    if (val <= 0xE33) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2798
	    if (val <= 0xE3F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2799
	    if (val <= 0xE46) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2800
	    if (val <= 0xE7f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2801
	    if (val <= 0xEb0) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2802
	    if (val == 0xEb1) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2803
	    if (val <= 0xEb3) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2804
	    if (val <= 0xEbc) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2805
	    if (val <= 0xEc7) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2806
	    if (val <= 0xEdb) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2807
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2808
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2809
	case 0x0F:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2810
	    if (val == 0xf00) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2811
	    if (val <= 0xf3F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2812
	    if (val <= 0xf70) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2813
	    if (val <= 0xf87) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2814
	    if (val <= 0xf8f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2815
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2816
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2817
	case 0x10:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2818
	    if (val <= 0x102b) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2819
	    if (val <= 0x104f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2820
	    if (val <= 0x1055) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2821
	    if (val <= 0x109f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2822
	    if (val <= 0x10fa) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2823
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2824
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2825
	case 0x11:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2826
	case 0x12:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2827
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2828
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2829
	case 0x13:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2830
	    if (val <= 0x1360) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2831
	    if (val <= 0x139f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2832
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2833
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2834
	case 0x14:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2835
	case 0x15:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2836
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2837
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2838
	case 0x16:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2839
	    if (val == 0x166d) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2840
	    if (val == 0x166e) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2841
	    if (val == 0x1680) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2842
	    if (val == 0x169b) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2843
	    if (val == 0x169c) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2844
	    if (val <= 0x16ea) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2845
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2846
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2847
	case 0x17:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2848
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2849
	    if (val == 0x1712) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2850
	    if (val == 0x1713) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2851
	    if (val == 0x1714) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2852
	    if (val == 0x1732) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2853
	    if (val == 0x1733) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2854
	    if (val == 0x1734) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2855
	    if (val == 0x1735) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2856
	    if (val == 0x1736) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2857
	    if (val == 0x1752) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2858
	    if (val == 0x1753) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2859
	    if (val == 0x1772) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2860
	    if (val == 0x1773) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2861
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2862
	    if (val <= 0x17b3) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2863
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2864
	    if (val == 0x17D7) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2865
	    if (val == 0x17DC) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2866
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2867
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2868
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2869
	case 0x18:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2870
	    if (val <= 0x181f) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2871
	    if (val <= 0x18a8) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2872
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2873
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2874
	case 0x19:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2875
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2876
	    if (val <= 0x191F) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2877
	    if (val <= 0x194F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2878
	    if (val <= 0x197F) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2879
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2880
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2881
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2882
	case 0x1d:
18656
fab035561c68 fix: assign instead of compare
Claus Gittinger <cg@exept.de>
parents: 18605
diff changeset
  2883
	    if (val == 0x1d00) { RETURN (true); }
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2884
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2885
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2886
	case 0x1e:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2887
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2888
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2889
	case 0x1f:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2890
	    if (val <= 0x1fbc) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2891
	    if (val == 0x1fbe) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2892
	    if (val <= 0x1fc1) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2893
	    if (val <= 0x1fcc) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2894
	    if (val <= 0x1fcf) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2895
	    if (val <= 0x1fdc) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2896
	    if (val <= 0x1fdf) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2897
	    if (val <= 0x1fec) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2898
	    if (val <= 0x1ff1) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2899
	    if (val <= 0x1ffc) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2900
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2901
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2902
	case 0x20:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2903
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2904
	    if (val == 0x2071) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2905
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2906
	    if (val == 0x207f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2907
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2908
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2909
	case 0x21:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2910
	    if (val == 0x2102) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2911
	    if (val == 0x2107) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2912
	    if (val <= 0x2109) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2913
	    if (val <= 0x2113) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2914
	    if (val == 0x2115) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2915
	    if (val <= 0x2118) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2916
	    if (val <= 0x211d) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2917
	    if (val <= 0x2123) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2918
	    if (val == 0x2125) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2919
	    if (val == 0x2127) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2920
	    if (val == 0x2129) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2921
	    if (val == 0x212E) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2922
	    if (val == 0x2132) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2923
	    if (val == 0x213A) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2924
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2925
	    if (val == 0x213B) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2926
	    if (val <= 0x213F) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2927
	    if (val <= 0x2144) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2928
	    if (val == 0x214A) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2929
	    if (val == 0x214B) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2930
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2931
	    if (val <= 0x2152) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2932
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2933
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2934
	case 0x30:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2935
	    if (val == 0x3005) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2936
	    if (val == 0x3006) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2937
	    if (val <= 0x3030) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2938
	    if (val <= 0x3035) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2939
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2940
	    if (val == 0x303B) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2941
	    if (val == 0x303C) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2942
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2943
	    if (val <= 0x3040) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2944
	    if (val <= 0x3098) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2945
	    if (val <= 0x309c) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2946
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2947
	    if (val == 0x30A0) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2948
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2949
	    if (val == 0x30Fb) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2950
	    RETURN ((true));
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2951
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2952
	case 0x31:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2953
	    if (val <= 0x318f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2954
	    if (val <= 0x319F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2955
	    RETURN ((true));
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2956
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2957
	case 0x34:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2958
	    RETURN ((true));
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2959
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2960
	case 0x4d:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2961
	    if (val <= 0x4DB4) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2962
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2963
	    if (val <= 0x4DBF) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2964
	    RETURN (false);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2965
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2966
	    RETURN (true);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2967
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  2968
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2969
	case 0x4e:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2970
	    RETURN ((true));
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2971
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2972
	case 0x9f:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2973
	    if (val <= 0x9fa4) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2974
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2975
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2976
	case 0xA0:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2977
	case 0xA1:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2978
	case 0xA2:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2979
	case 0xA3:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2980
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2981
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2982
	case 0xA4:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2983
	    if (val <= 0xa48f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2984
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2985
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2986
	case 0xA5:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2987
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2988
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2989
	case 0xAC:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2990
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2991
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2992
	case 0xD7:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2993
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2994
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2995
	case 0xF9:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2996
	case 0xFA:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2997
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2998
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  2999
	case 0xFB:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3000
	    if (val == 0xfb1e) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3001
	    if (val == 0xfb29) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3002
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3003
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3004
	case 0xFC:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3005
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3006
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3007
	case 0xFD:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3008
	    if (val <= 0xFD3d) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3009
	    if (val <= 0xFD4F) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3010
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3011
	    if (val == 0xFDFC) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3012
	    if (val == 0xFDFD) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3013
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3014
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3015
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3016
	case 0xFE:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3017
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3018
	    if (val <= 0xFE0F) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3019
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3020
	    if (val <= 0xFE1f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3021
	    if (val <= 0xFE6F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3022
	    if (val <= 0xFEFE) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3023
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3024
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3025
	case 0xFF:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3026
	    if (val <= 0xFF20) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3027
	    if (val <= 0xFF3a) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3028
	    if (val <= 0xFF40) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3029
	    if (val <= 0xFF5a) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3030
	    if (val <= 0xFF65) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3031
	    if (val <= 0xFFdC) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3032
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3033
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3034
	case 0x100:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3035
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3036
	    RETURN (true);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3037
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3038
	    RETURN (false);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3039
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3040
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3041
	case 0x103:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3042
	    if (val <= 0x1031f) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3043
	    if (val <= 0x1032F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3044
	    if (val <= 0x10349) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3045
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3046
	    if (val <= 0x1037F) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3047
	    if (val <= 0x1039E) { RETURN (true); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3048
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3049
	    RETURN (false);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3050
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3051
	case 0x104:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3052
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3053
	    if (val <= 0x1049F) { RETURN (true); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3054
	    if (val <= 0x104aF) { RETURN (false); }
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3055
#endif
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3056
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3057
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3058
	case 0x108:
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3059
#ifndef UNICODE_3_2
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3060
	    RETURN (true);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3061
#else
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3062
	    RETURN (false);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3063
#endif
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3064
9153
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3065
	case 0x1D4:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3066
	case 0x1D5:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3067
	    RETURN (true);
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3068
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3069
	case 0x1D6:
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3070
	    if (val == 0x1d6c1) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3071
	    if (val == 0x1d6db) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3072
	    if (val == 0x1d6fb) { RETURN (false); }
197d00a1e50a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9148
diff changeset
  3073
	    RETURN (true);
8030
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3074
    }
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3075
    RETURN (false);
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3076
%}
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3077
! !
5a4323d0280f updated to Unicode4.0.0 spec
Claus Gittinger <cg@exept.de>
parents: 8029
diff changeset
  3078
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3079
!Character methodsFor:'tracing'!
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3080
4682
4158042a9c8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4655
diff changeset
  3081
traceInto:aRequestor level:level from:referrer
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3082
    "double dispatch into tracer, passing my type implicitely in the selector"
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3083
4682
4158042a9c8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4655
diff changeset
  3084
    ^ aRequestor traceCharacter:self level:level from:referrer
4655
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3085
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3086
! !
b9405ca0bb4e added #hasSharedInstances & tracing support
Claus Gittinger <cg@exept.de>
parents: 4340
diff changeset
  3087
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3088
!Character methodsFor:'visiting'!
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3089
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3090
acceptVisitor:aVisitor with:aParameter
16727
75e88a387e62 comment/format only
Claus Gittinger <cg@exept.de>
parents: 16225
diff changeset
  3091
    "dispatch for visitor pattern; send #visitCharacter:with: to aVisitor"
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3092
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3093
    ^ aVisitor visitCharacter:self with:aParameter
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3094
! !
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8308
diff changeset
  3095
2124
6238280f6120 new infoMessage scheme
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
  3096
!Character class methodsFor:'documentation'!
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  3097
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  3098
version
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  3099
    ^ '$Header$'
14120
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  3100
!
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  3101
fdf215af772c added: #displayOn: (instead of #displaySting)
Stefan Vogel <sv@exept.de>
parents: 14117
diff changeset
  3102
version_CVS
18588
ed9d4665224c class: Character
Stefan Vogel <sv@exept.de>
parents: 18298
diff changeset
  3103
    ^ '$Header$'
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 544
diff changeset
  3104
! !
18691
0b9e9bc60d61 class: Character
Claus Gittinger <cg@exept.de>
parents: 18658
diff changeset
  3105