metamodel: rename 'universal' to 'enum'
[nit.git] / lib / standard / kernel.nit
index 994ddf0..30c592d 100644 (file)
@@ -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.