X-Git-Url: http://nitlanguage.org diff --git a/lib/standard/kernel.nit b/lib/standard/kernel.nit index 259eac1..fb84d2e 100644 --- a/lib/standard/kernel.nit +++ b/lib/standard/kernel.nit @@ -17,6 +17,10 @@ module kernel import end # Mark this module is a top level one. (must be only one) +`{ +#include +`} + ############################################################################### # System Classes # ############################################################################### @@ -84,6 +88,11 @@ end class Sys # Instructions outside classes implicitly redefine this method. fun main do end + + # Number of the last error + fun errno: Int is extern `{ + return errno; + `} end ############################################################################### @@ -230,6 +239,14 @@ interface Numeric # The value of zero in the domain of `self` fun zero: OTHER is abstract + + # The value of `val` in the domain of `self` + # + # assert 1.0.value_of(2) == 2.0 + # assert 1.0.value_of(2.0) == 2.0 + # assert 1.value_of(2) == 2 + # assert 1.value_of(2.0) == 2 + fun value_of(val: Numeric): OTHER is abstract end ############################################################################### @@ -284,6 +301,7 @@ universal Float redef fun to_f do return self redef fun zero do return 0.0 + redef fun value_of(val) do return val.to_f end # Native integer numbers. @@ -316,6 +334,7 @@ universal Int fun %(i: Int): Int is intern redef fun zero do return 0 + redef fun value_of(val) do return val.to_i # `i` bits shift fo the left (aka <<) # @@ -591,9 +610,9 @@ universal Char end # Pointer classes are used to manipulate extern C structures. -extern Pointer +extern class Pointer # Is the address behind this Object at NULL? - fun address_is_null: Bool `{ return recv == NULL; `} + fun address_is_null: Bool is extern "address_is_null" # Free the memory pointed by this pointer fun free `{ free(recv); `}