/[eiffelstudio]/FreeELKS/trunk/library/kernel/character_8_ref.e
ViewVC logotype

Diff of /FreeELKS/trunk/library/kernel/character_8_ref.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

FreeELKS/trunk/library/kernel/character_ref.e revision 91475 by ericb, Mon Nov 14 10:53:30 2005 UTC FreeELKS/trunk/library/kernel/character_8_ref.e revision 91477 by ericb, Sun Jan 14 09:47:13 2007 UTC
# Line 6  indexing Line 6  indexing
6          date: "$Date$"          date: "$Date$"
7          revision: "$Revision$"          revision: "$Revision$"
8    
9  class CHARACTER_REF inherit  class CHARACTER_8_REF inherit
10    
11          COMPARABLE          COMPARABLE
12                  redefine                  redefine
# Line 17  class CHARACTER_REF inherit Line 17  class CHARACTER_REF inherit
17                  redefine                  redefine
18                          is_hashable, out, is_equal                          is_hashable, out, is_equal
19                  end                  end
20                    
21          REFACTORING_HELPER          REFACTORING_HELPER
22                  redefine                  redefine
23                          out, is_equal                          out, is_equal
# Line 25  class CHARACTER_REF inherit Line 25  class CHARACTER_REF inherit
25    
26  feature -- Access  feature -- Access
27    
28          item: CHARACTER is          item: CHARACTER_8 is
29                          -- Character value                          -- Character value
30                  external                  external
31                          "built_in"                          "built_in"
# Line 37  feature -- Access Line 37  feature -- Access
37                          Result := item.code                          Result := item.code
38                  end                  end
39    
40            natural_32_code: NATURAL_32 is
41                            -- Associated integer value
42                    do
43                            Result := code.to_natural_32
44                    end
45    
46          hash_code: INTEGER is          hash_code: INTEGER is
47                          -- Hash code value                          -- Hash code value
48                  do                  do
# Line 75  feature -- Comparison Line 81  feature -- Comparison
81    
82  feature -- Basic routines  feature -- Basic routines
83    
84          infix "+" (incr: INTEGER): CHARACTER is          infix "+" (incr: INTEGER): CHARACTER_8 is
85                          -- Add `incr' to the code of `item'                          -- Add `incr' to the code of `item'
86                  require                  require
87                          valid_increment: (item.code + incr).is_valid_character_code                          valid_increment: (item.code + incr).is_valid_character_8_code
88                  do                  do
89                          Result := (item.code + incr).to_character                          Result := (item.code + incr).to_character_8
90                  ensure                  ensure
91                          valid_result: Result |-| item = incr                          valid_result: Result |-| item = incr
92                  end                  end
93    
94          infix "-" (decr: INTEGER): CHARACTER is          infix "-" (decr: INTEGER): CHARACTER_8 is
95                          -- Subtract `decr' to the code of `item'                          -- Subtract `decr' to the code of `item'
96                  require                  require
97                          valid_decrement: (item.code - decr).is_valid_character_code                          valid_decrement: (item.code - decr).is_valid_character_8_code
98                  do                  do
99                          Result := (item.code - decr).to_character                          Result := (item.code - decr).to_character_8
100                  ensure                  ensure
101                          valid_result: item |-| Result = decr                          valid_result: item |-| Result = decr
102                  end                  end
103    
104          infix "|-|" (other: CHARACTER): INTEGER is          infix "|-|" (other: CHARACTER_8): INTEGER is
105                          -- Difference between the codes of `item' and `other'                          -- Difference between the codes of `item' and `other'
106                  do                  do
107                          Result := item.code - other.code                          Result := item.code - other.code
# Line 103  feature -- Basic routines Line 109  feature -- Basic routines
109                          valid_result: other + Result = item                          valid_result: other + Result = item
110                  end                  end
111    
112          next: CHARACTER is          next: CHARACTER_8 is
113                          -- Next character                          -- Next character
114                  require                  require
115                          valid_character: (item.code + 1).is_valid_character_code                          valid_character: (item.code + 1).is_valid_character_8_code
116                  do                  do
117                          Result := item + 1                          Result := item + 1
118                  ensure                  ensure
119                          valid_result: Result |-| item = 1                          valid_result: Result |-| item = 1
120                  end                  end
121    
122          previous: CHARACTER is          previous: CHARACTER_8 is
123                          -- Previous character                          -- Previous character
124                  require                  require
125                          valid_character: (item.code - 1).is_valid_character_code                          valid_character: (item.code - 1).is_valid_character_8_code
126                  do                  do
127                          Result := item - 1                          Result := item - 1
128                  ensure                  ensure
# Line 125  feature -- Basic routines Line 131  feature -- Basic routines
131    
132  feature -- Element change  feature -- Element change
133    
134          set_item (c: CHARACTER) is          set_item (c: CHARACTER_8) is
135                          -- Make `c' the `item' value.                          -- Make `c' the `item' value.
136                  external                  external
137                          "built_in"                          "built_in"
# Line 142  feature -- Output Line 148  feature -- Output
148    
149  feature {NONE} -- Initialization  feature {NONE} -- Initialization
150    
151          make_from_reference (v: CHARACTER_REF) is          make_from_reference (v: CHARACTER_8_REF) is
152                          -- Initialize `Current' with `v.item'.                          -- Initialize `Current' with `v.item'.
153                  require                  require
154                          v_not_void: v /= Void                          v_not_void: v /= Void
155                  do                  do
156                          set_item (v)                          set_item (v)
157                  ensure                  ensure
158                          item_set: item = v.item                          item_set: item = v.item
159                  end                  end
160    
161  feature -- Conversion  feature -- Conversion
162    
163          to_reference: CHARACTER_REF is          to_reference: CHARACTER_8_REF is
164                          -- Associated reference of Current                          -- Associated reference of Current
165                  do                  do
166                          create Result                          create Result
# Line 163  feature -- Conversion Line 169  feature -- Conversion
169                          to_reference_not_void: Result /= Void                          to_reference_not_void: Result /= Void
170                  end                  end
171    
172          as_upper, upper: CHARACTER is          to_character_8: CHARACTER_8 is
173                            -- Associated character in 8 bit version.
174                    do
175                            Result := item
176                    end
177    
178            to_character_32: CHARACTER_32 is
179                            -- Associated character in 32 bit version.
180                    do
181                            Result := item.to_character_32
182                    end
183    
184            as_upper, upper: CHARACTER_8 is
185                          -- Uppercase value of `item'                          -- Uppercase value of `item'
186                          -- Returns `item' if not `is_lower'                          -- Returns `item' if not `is_lower'
187                  do                  do
188                          if is_lower then                          if is_lower then
189                                  Result := (item.code - ('a').code + ('A').code).to_character                                  Result := (item.code - ('a').code + ('A').code).to_character_8
190                          else                          else
191                                  Result := item                                  Result := item
192                          end                          end
193                  end                  end
194    
195          as_lower, lower: CHARACTER is          as_lower, lower: CHARACTER_8 is
196                          -- Lowercase value of `item'                          -- Lowercase value of `item'
197                          -- Returns `item' if not `is_upper'                          -- Returns `item' if not `is_upper'
198                  do                  do
199                          if is_upper then                          if is_upper then
200                                  Result := (item.code - ('A').code + ('a').code).to_character                                  Result := (item.code - ('A').code + ('a').code).to_character_8
201                          else                          else
202                                  Result := item                                  Result := item
203                          end                          end
# Line 193  feature -- Status report Line 211  feature -- Status report
211                  do                  do
212                          Result := (character_types (item.code) & (is_upper_flag | is_lower_flag)) > 0                          Result := (character_types (item.code) & (is_upper_flag | is_lower_flag)) > 0
213                  end                  end
214                    
215          is_upper: BOOLEAN is          is_upper: BOOLEAN is
216                          -- Is `item' uppercase?                          -- Is `item' uppercase?
217                  do                  do
# Line 212  feature -- Status report Line 230  feature -- Status report
230                  do                  do
231                          Result := (character_types (item.code) & is_digit_flag) > 0                          Result := (character_types (item.code) & is_digit_flag) > 0
232                  end                  end
233                    
234          is_hexa_digit: BOOLEAN is          is_hexa_digit: BOOLEAN is
235                          -- Is `item' an hexadecimal digit?                          -- Is `item' an hexadecimal digit?
236                          -- A digit is one of 0123456789ABCDEFabcedf                          -- A digit is one of 0123456789ABCDEFabcedf
# Line 225  feature -- Status report Line 243  feature -- Status report
243                  do                  do
244                          Result := (character_types (item.code) & is_white_space_flag) > 0                          Result := (character_types (item.code) & is_white_space_flag) > 0
245                  end                  end
246                    
247          is_punctuation: BOOLEAN is          is_punctuation: BOOLEAN is
248                          -- Is `item' a punctuation?                          -- Is `item' a punctuation?
249                  do                  do
250                          Result := (character_types (item.code) & is_punctuation_flag) > 0                          Result := (character_types (item.code) & is_punctuation_flag) > 0
251                  end                  end
252                    
253          is_alpha_numeric: BOOLEAN is          is_alpha_numeric: BOOLEAN is
254                          -- Is `item' alphabetic or a digit?                          -- Is `item' alphabetic or a digit?
255                  do                  do
256                          Result := (character_types (item.code) & (is_upper_flag | is_lower_flag | is_digit_flag)) > 0                          Result := (character_types (item.code) & (is_upper_flag | is_lower_flag | is_digit_flag)) > 0
257                  end                  end
258                    
259          is_printable: BOOLEAN is          is_printable: BOOLEAN is
260                          -- Is `item' a printable character including space?                          -- Is `item' a printable character including space?
261                  do                  do
# Line 263  feature {NONE} -- Implementation Line 281  feature {NONE} -- Implementation
281          character_types (a_code: INTEGER): NATURAL_8 is          character_types (a_code: INTEGER): NATURAL_8 is
282                          -- Associated type for character of code `a_code'.                          -- Associated type for character of code `a_code'.
283                  do                  do
284                                  -- For character whose code is above 256, it is as if                                  -- For character whose code is above 256, it is as if
285                                  -- we had no information about it.                                  -- we had no information about it.
286                          if a_code < 256 then                          if a_code < 256 then
287                                  Result := internal_character_types.item (a_code)                                  Result := internal_character_types.item (a_code)
# Line 404  feature {NONE} -- Implementation Line 422  feature {NONE} -- Implementation
422                          Result.put (is_control_flag, 127)                          Result.put (is_control_flag, 127)
423                  end                  end
424    
425          is_upper_flag: NATURAL_8 is {NATURAL_8} 0x01              is_upper_flag: NATURAL_8 is {NATURAL_8} 0x01
426    
427          is_lower_flag: NATURAL_8 is {NATURAL_8} 0x02          is_lower_flag: NATURAL_8 is {NATURAL_8} 0x02
428            
429          is_digit_flag: NATURAL_8 is {NATURAL_8} 0x04          is_digit_flag: NATURAL_8 is {NATURAL_8} 0x04
430            
431          is_white_space_flag: NATURAL_8 is {NATURAL_8} 0x08          is_white_space_flag: NATURAL_8 is {NATURAL_8} 0x08
432            
433          is_punctuation_flag: NATURAL_8 is {NATURAL_8} 0x10          is_punctuation_flag: NATURAL_8 is {NATURAL_8} 0x10
434            
435          is_control_flag: NATURAL_8 is {NATURAL_8} 0x20          is_control_flag: NATURAL_8 is {NATURAL_8} 0x20
436    
437          is_hexa_digit_flag: NATURAL_8 is {NATURAL_8} 0x40          is_hexa_digit_flag: NATURAL_8 is {NATURAL_8} 0x40
438            
439          is_space_flag: NATURAL_8 is {NATURAL_8} 0x80;          is_space_flag: NATURAL_8 is {NATURAL_8} 0x80;
440            
441  end  end

Legend:
Removed from v.91475  
changed lines
  Added in v.91477

  ViewVC Help
Powered by ViewVC 1.1.23