# Discrete total orders.
interface Discrete
-special Comparable
+ super Comparable
redef type OTHER: Discrete
# Native integer numbers.
# Correspond to C int.
universal Int
-special Discrete
+ super Discrete
redef type OTHER: Int
redef fun object_id is intern
# Characters are denoted with simple quote.
# eg. 'a' or '\n'.
universal Char
-special Discrete
+ super Discrete
redef type OTHER: Char
redef fun object_id is intern
if self == '-' then
return -1
- else if self >= '0' and self <= '9' then
+ else if is_digit then
return self.ascii - '0'.ascii
else
return self.to_lower.ascii - ('a'.ascii + 10)
# Char to lower case
fun to_lower : Char
do
- if self >= 'A' and self <= 'Z' then
+ if is_upper then
return (ascii + ('a'.distance('A'))).ascii
else
return self
# Char to upper case
fun to_upper : Char
do
- if self >= 'a' and self <= 'z' then
+ if is_lower then
return (ascii - ('a'.distance('A'))).ascii
else
return self
end
end
+
+ fun is_digit : Bool
+ do
+ return self >= '0' and self <= '9'
+ end
+
+ fun is_lower : Bool
+ do
+ return self >= 'a' and self <= 'z'
+ end
+
+ fun is_upper : Bool
+ do
+ return self >= 'A' and self <= 'Z'
+ end
+
+ fun is_letter : Bool
+ do
+ return is_lower or is_upper
+ end
end
# Pointer classes are used to manipulate extern C structures.