X-Git-Url: http://nitlanguage.org diff --git a/lib/standard/kernel.nit b/lib/standard/kernel.nit index 994ddf0..30c592d 100644 --- a/lib/standard/kernel.nit +++ b/lib/standard/kernel.nit @@ -119,7 +119,7 @@ end # Discrete total orders. interface Discrete -special Comparable + super Comparable redef type OTHER: Discrete @@ -200,7 +200,7 @@ end # Native integer numbers. # Correspond to C int. universal Int -special Discrete + super Discrete redef type OTHER: Int redef fun object_id is intern @@ -340,7 +340,7 @@ end # 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 @@ -372,7 +372,7 @@ special Discrete 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) @@ -388,7 +388,7 @@ special Discrete # 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 @@ -398,12 +398,32 @@ special Discrete # 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.