update NOTICE and LICENSE
[nit.git] / c_src / kernel._sep.h
index a122d5d..93e2e01 100644 (file)
@@ -14,7 +14,7 @@ extern const classtable_elt_t VFT_Discrete[];
 extern const classtable_elt_t VFT_Bool[];
 
 extern const classtable_elt_t VFT_Float[];
-struct TBOX_Float { const classtable_elt_t * vft; float val;};
+struct TBOX_Float { const classtable_elt_t * vft; bigint object_id; float val;};
 val_t BOX_Float(float val);
 #define UNBOX_Float(x) (((struct TBOX_Float *)(VAL2OBJ(x)))->val)
 
@@ -23,7 +23,7 @@ extern const classtable_elt_t VFT_Int[];
 extern const classtable_elt_t VFT_Char[];
 
 extern const classtable_elt_t VFT_Pointer[];
-struct TBOX_Pointer { const classtable_elt_t * vft; void * val;};
+struct TBOX_Pointer { const classtable_elt_t * vft; bigint object_id; void * val;};
 val_t BOX_Pointer(void * val);
 #define UNBOX_Pointer(x) (((struct TBOX_Pointer *)(VAL2OBJ(x)))->val)
 extern const char *LOCATE_kernel;
@@ -91,6 +91,8 @@ extern const int SFT_kernel[];
 #define CALL_kernel___Int___ascii(recv) ((kernel___Int___ascii_t)CALL((recv), (SFT_kernel[20] + 8)))
 #define CALL_kernel___Int___digit_count(recv) ((kernel___Int___digit_count_t)CALL((recv), (SFT_kernel[20] + 9)))
 #define CALL_kernel___Int___to_c(recv) ((kernel___Int___to_c_t)CALL((recv), (SFT_kernel[20] + 10)))
+#define CALL_kernel___Int___enumerate_to(recv) ((kernel___Int___enumerate_to_t)CALL((recv), (SFT_kernel[20] + 11)))
+#define CALL_kernel___Int___enumerate_before(recv) ((kernel___Int___enumerate_before_t)CALL((recv), (SFT_kernel[20] + 12)))
 #define ID_Char (SFT_kernel[21])
 #define COLOR_Char (SFT_kernel[22])
 #define INIT_TABLE_POS_Char (SFT_kernel[23] + 0)
@@ -98,254 +100,278 @@ extern const int SFT_kernel[];
 #define CALL_kernel___Char___ascii(recv) ((kernel___Char___ascii_t)CALL((recv), (SFT_kernel[23] + 2)))
 #define CALL_kernel___Char___to_lower(recv) ((kernel___Char___to_lower_t)CALL((recv), (SFT_kernel[23] + 3)))
 #define CALL_kernel___Char___to_upper(recv) ((kernel___Char___to_upper_t)CALL((recv), (SFT_kernel[23] + 4)))
+#define CALL_kernel___Char___is_digit(recv) ((kernel___Char___is_digit_t)CALL((recv), (SFT_kernel[23] + 5)))
+#define CALL_kernel___Char___is_lower(recv) ((kernel___Char___is_lower_t)CALL((recv), (SFT_kernel[23] + 6)))
+#define CALL_kernel___Char___is_upper(recv) ((kernel___Char___is_upper_t)CALL((recv), (SFT_kernel[23] + 7)))
+#define CALL_kernel___Char___is_letter(recv) ((kernel___Char___is_letter_t)CALL((recv), (SFT_kernel[23] + 8)))
 #define ID_Pointer (SFT_kernel[24])
 #define COLOR_Pointer (SFT_kernel[25])
 #define INIT_TABLE_POS_Pointer (SFT_kernel[26] + 0)
-typedef val_t (* kernel___Object___object_id_t)(val_t  self);
-val_t kernel___Object___object_id(val_t  self);
-#define LOCATE_kernel___Object___object_id "kernel::Object::object_id"
-typedef val_t (* kernel___Object___is_same_type_t)(val_t  self, val_t  param0);
-val_t kernel___Object___is_same_type(val_t  self, val_t  param0);
-#define LOCATE_kernel___Object___is_same_type "kernel::Object::is_same_type"
-typedef val_t (* kernel___Object_____eqeq_t)(val_t  self, val_t  param0);
-val_t kernel___Object_____eqeq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Object_____eqeq "kernel::Object::=="
-typedef val_t (* kernel___Object_____neq_t)(val_t  self, val_t  param0);
-val_t kernel___Object_____neq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Object_____neq "kernel::Object::!="
-typedef void (* kernel___Object___output_t)(val_t  self);
-void kernel___Object___output(val_t  self);
-#define LOCATE_kernel___Object___output "kernel::Object::output"
-typedef void (* kernel___Object___exit_t)(val_t  self, val_t  param0);
-void kernel___Object___exit(val_t  self, val_t  param0);
-#define LOCATE_kernel___Object___exit "kernel::Object::exit"
-typedef val_t (* kernel___Object___sys_t)(val_t  self);
-val_t kernel___Object___sys(val_t  self);
-#define LOCATE_kernel___Object___sys "kernel::Object::sys"
-typedef void (* kernel___Sys___main_t)(val_t  self);
-void kernel___Sys___main(val_t  self);
-#define LOCATE_kernel___Sys___main "kernel::Sys::main"
-typedef void (* kernel___Sys___init_t)(val_t  self, int* init_table);
-void kernel___Sys___init(val_t  self, int* init_table);
-#define LOCATE_kernel___Sys___init "kernel::Sys::init"
+static const char * const LOCATE_kernel___Object___object_id = "kernel::Object::object_id";
+val_t kernel___Object___object_id(val_t p0);
+typedef val_t (*kernel___Object___object_id_t)(val_t p0);
+static const char * const LOCATE_kernel___Object___is_same_type = "kernel::Object::is_same_type";
+val_t kernel___Object___is_same_type(val_t p0, val_t p1);
+typedef val_t (*kernel___Object___is_same_type_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Object_____eqeq = "kernel::Object::==";
+val_t kernel___Object_____eqeq(val_t p0, val_t p1);
+typedef val_t (*kernel___Object_____eqeq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Object_____neq = "kernel::Object::!=";
+val_t kernel___Object_____neq(val_t p0, val_t p1);
+typedef val_t (*kernel___Object_____neq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Object___output = "kernel::Object::output";
+void kernel___Object___output(val_t p0);
+typedef void (*kernel___Object___output_t)(val_t p0);
+static const char * const LOCATE_kernel___Object___exit = "kernel::Object::exit";
+void kernel___Object___exit(val_t p0, val_t p1);
+typedef void (*kernel___Object___exit_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Object___sys = "kernel::Object::sys";
+val_t kernel___Object___sys(val_t p0);
+typedef val_t (*kernel___Object___sys_t)(val_t p0);
+static const char * const LOCATE_kernel___Sys___main = "kernel::Sys::main";
+void kernel___Sys___main(val_t p0);
+typedef void (*kernel___Sys___main_t)(val_t p0);
+static const char * const LOCATE_kernel___Sys___init = "kernel::Sys::init";
+void kernel___Sys___init(val_t p0, int* init_table);
+typedef void (*kernel___Sys___init_t)(val_t p0, int* init_table);
 val_t NEW_Sys_kernel___Sys___init();
-typedef val_t (* kernel___Comparable_____l_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable_____l(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable_____l "kernel::Comparable::<"
-typedef val_t (* kernel___Comparable_____leq_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable_____leq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable_____leq "kernel::Comparable::<="
-typedef val_t (* kernel___Comparable_____geq_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable_____geq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable_____geq "kernel::Comparable::>="
-typedef val_t (* kernel___Comparable_____g_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable_____g(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable_____g "kernel::Comparable::>"
-typedef val_t (* kernel___Comparable_____leqg_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable_____leqg(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable_____leqg "kernel::Comparable::<=>"
-typedef val_t (* kernel___Comparable___is_between_t)(val_t  self, val_t  param0, val_t  param1);
-val_t kernel___Comparable___is_between(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_kernel___Comparable___is_between "kernel::Comparable::is_between"
-typedef val_t (* kernel___Comparable___max_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable___max(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable___max "kernel::Comparable::max"
-typedef val_t (* kernel___Comparable___min_t)(val_t  self, val_t  param0);
-val_t kernel___Comparable___min(val_t  self, val_t  param0);
-#define LOCATE_kernel___Comparable___min "kernel::Comparable::min"
-typedef val_t (* kernel___Discrete___succ_t)(val_t  self);
-val_t kernel___Discrete___succ(val_t  self);
-#define LOCATE_kernel___Discrete___succ "kernel::Discrete::succ"
-typedef val_t (* kernel___Discrete___prec_t)(val_t  self);
-val_t kernel___Discrete___prec(val_t  self);
-#define LOCATE_kernel___Discrete___prec "kernel::Discrete::prec"
-typedef val_t (* kernel___Discrete_____plus_t)(val_t  self, val_t  param0);
-val_t kernel___Discrete_____plus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Discrete_____plus "kernel::Discrete::+"
-typedef val_t (* kernel___Discrete_____minus_t)(val_t  self, val_t  param0);
-val_t kernel___Discrete_____minus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Discrete_____minus "kernel::Discrete::-"
-typedef val_t (* kernel___Discrete___distance_t)(val_t  self, val_t  param0);
-val_t kernel___Discrete___distance(val_t  self, val_t  param0);
-#define LOCATE_kernel___Discrete___distance "kernel::Discrete::distance"
-typedef val_t (* kernel___Bool___object_id_t)(val_t  self);
-val_t kernel___Bool___object_id(val_t  self);
-#define LOCATE_kernel___Bool___object_id "kernel::Bool::(kernel::Object::object_id)"
-typedef val_t (* kernel___Bool_____eqeq_t)(val_t  self, val_t  param0);
-val_t kernel___Bool_____eqeq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Bool_____eqeq "kernel::Bool::(kernel::Object::==)"
-typedef val_t (* kernel___Bool_____neq_t)(val_t  self, val_t  param0);
-val_t kernel___Bool_____neq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Bool_____neq "kernel::Bool::(kernel::Object::!=)"
-typedef void (* kernel___Bool___output_t)(val_t  self);
-void kernel___Bool___output(val_t  self);
-#define LOCATE_kernel___Bool___output "kernel::Bool::(kernel::Object::output)"
-typedef val_t (* kernel___Float___object_id_t)(val_t  self);
-val_t kernel___Float___object_id(val_t  self);
-#define LOCATE_kernel___Float___object_id "kernel::Float::(kernel::Object::object_id)"
-typedef void (* kernel___Float___output_t)(val_t  self);
-void kernel___Float___output(val_t  self);
-#define LOCATE_kernel___Float___output "kernel::Float::(kernel::Object::output)"
-typedef val_t (* kernel___Float_____leq_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____leq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____leq "kernel::Float::<="
-typedef val_t (* kernel___Float_____l_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____l(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____l "kernel::Float::<"
-typedef val_t (* kernel___Float_____geq_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____geq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____geq "kernel::Float::>="
-typedef val_t (* kernel___Float_____g_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____g(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____g "kernel::Float::>"
-typedef val_t (* kernel___Float_____plus_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____plus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____plus "kernel::Float::+"
-typedef val_t (* kernel___Float___unary__minus_t)(val_t  self);
-val_t kernel___Float___unary__minus(val_t  self);
-#define LOCATE_kernel___Float___unary__minus "kernel::Float::unary -"
-typedef val_t (* kernel___Float_____minus_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____minus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____minus "kernel::Float::-"
-typedef val_t (* kernel___Float_____star_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____star(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____star "kernel::Float::*"
-typedef val_t (* kernel___Float_____slash_t)(val_t  self, val_t  param0);
-val_t kernel___Float_____slash(val_t  self, val_t  param0);
-#define LOCATE_kernel___Float_____slash "kernel::Float::/"
-typedef val_t (* kernel___Float___to_i_t)(val_t  self);
-val_t kernel___Float___to_i(val_t  self);
-#define LOCATE_kernel___Float___to_i "kernel::Float::to_i"
-typedef val_t (* kernel___Int___object_id_t)(val_t  self);
-val_t kernel___Int___object_id(val_t  self);
-#define LOCATE_kernel___Int___object_id "kernel::Int::(kernel::Object::object_id)"
-typedef val_t (* kernel___Int_____eqeq_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____eqeq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____eqeq "kernel::Int::(kernel::Object::==)"
-typedef val_t (* kernel___Int_____neq_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____neq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____neq "kernel::Int::(kernel::Object::!=)"
-typedef void (* kernel___Int___output_t)(val_t  self);
-void kernel___Int___output(val_t  self);
-#define LOCATE_kernel___Int___output "kernel::Int::(kernel::Object::output)"
-typedef val_t (* kernel___Int_____l_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____l(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____l "kernel::Int::(kernel::Comparable::<)"
-typedef val_t (* kernel___Int_____leq_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____leq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____leq "kernel::Int::(kernel::Comparable::<=)"
-typedef val_t (* kernel___Int_____geq_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____geq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____geq "kernel::Int::(kernel::Comparable::>=)"
-typedef val_t (* kernel___Int_____g_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____g(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____g "kernel::Int::(kernel::Comparable::>)"
-typedef val_t (* kernel___Int_____leqg_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____leqg(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____leqg "kernel::Int::(kernel::Comparable::<=>)"
-typedef val_t (* kernel___Int___is_between_t)(val_t  self, val_t  param0, val_t  param1);
-val_t kernel___Int___is_between(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_kernel___Int___is_between "kernel::Int::(kernel::Comparable::is_between)"
-typedef val_t (* kernel___Int___max_t)(val_t  self, val_t  param0);
-val_t kernel___Int___max(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___max "kernel::Int::(kernel::Comparable::max)"
-typedef val_t (* kernel___Int___min_t)(val_t  self, val_t  param0);
-val_t kernel___Int___min(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___min "kernel::Int::(kernel::Comparable::min)"
-typedef val_t (* kernel___Int___succ_t)(val_t  self);
-val_t kernel___Int___succ(val_t  self);
-#define LOCATE_kernel___Int___succ "kernel::Int::(kernel::Discrete::succ)"
-typedef val_t (* kernel___Int___prec_t)(val_t  self);
-val_t kernel___Int___prec(val_t  self);
-#define LOCATE_kernel___Int___prec "kernel::Int::(kernel::Discrete::prec)"
-typedef val_t (* kernel___Int_____plus_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____plus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____plus "kernel::Int::(kernel::Discrete::+)"
-typedef val_t (* kernel___Int_____minus_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____minus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____minus "kernel::Int::(kernel::Discrete::-)"
-typedef val_t (* kernel___Int___distance_t)(val_t  self, val_t  param0);
-val_t kernel___Int___distance(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___distance "kernel::Int::(kernel::Discrete::distance)"
-typedef val_t (* kernel___Int___unary__minus_t)(val_t  self);
-val_t kernel___Int___unary__minus(val_t  self);
-#define LOCATE_kernel___Int___unary__minus "kernel::Int::unary -"
-typedef val_t (* kernel___Int_____star_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____star(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____star "kernel::Int::*"
-typedef val_t (* kernel___Int_____slash_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____slash(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____slash "kernel::Int::/"
-typedef val_t (* kernel___Int_____percent_t)(val_t  self, val_t  param0);
-val_t kernel___Int_____percent(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int_____percent "kernel::Int::%"
-typedef val_t (* kernel___Int___lshift_t)(val_t  self, val_t  param0);
-val_t kernel___Int___lshift(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___lshift "kernel::Int::lshift"
-typedef val_t (* kernel___Int___rshift_t)(val_t  self, val_t  param0);
-val_t kernel___Int___rshift(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___rshift "kernel::Int::rshift"
-typedef val_t (* kernel___Int___to_f_t)(val_t  self);
-val_t kernel___Int___to_f(val_t  self);
-#define LOCATE_kernel___Int___to_f "kernel::Int::to_f"
-typedef val_t (* kernel___Int___ascii_t)(val_t  self);
-val_t kernel___Int___ascii(val_t  self);
-#define LOCATE_kernel___Int___ascii "kernel::Int::ascii"
-typedef val_t (* kernel___Int___digit_count_t)(val_t  self, val_t  param0);
-val_t kernel___Int___digit_count(val_t  self, val_t  param0);
-#define LOCATE_kernel___Int___digit_count "kernel::Int::digit_count"
-typedef val_t (* kernel___Int___to_c_t)(val_t  self);
-val_t kernel___Int___to_c(val_t  self);
-#define LOCATE_kernel___Int___to_c "kernel::Int::to_c"
-typedef val_t (* kernel___Char___object_id_t)(val_t  self);
-val_t kernel___Char___object_id(val_t  self);
-#define LOCATE_kernel___Char___object_id "kernel::Char::(kernel::Object::object_id)"
-typedef val_t (* kernel___Char_____eqeq_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____eqeq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____eqeq "kernel::Char::(kernel::Object::==)"
-typedef val_t (* kernel___Char_____neq_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____neq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____neq "kernel::Char::(kernel::Object::!=)"
-typedef void (* kernel___Char___output_t)(val_t  self);
-void kernel___Char___output(val_t  self);
-#define LOCATE_kernel___Char___output "kernel::Char::(kernel::Object::output)"
-typedef val_t (* kernel___Char_____l_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____l(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____l "kernel::Char::(kernel::Comparable::<)"
-typedef val_t (* kernel___Char_____leq_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____leq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____leq "kernel::Char::(kernel::Comparable::<=)"
-typedef val_t (* kernel___Char_____geq_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____geq(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____geq "kernel::Char::(kernel::Comparable::>=)"
-typedef val_t (* kernel___Char_____g_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____g(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____g "kernel::Char::(kernel::Comparable::>)"
-typedef val_t (* kernel___Char___succ_t)(val_t  self);
-val_t kernel___Char___succ(val_t  self);
-#define LOCATE_kernel___Char___succ "kernel::Char::(kernel::Discrete::succ)"
-typedef val_t (* kernel___Char___prec_t)(val_t  self);
-val_t kernel___Char___prec(val_t  self);
-#define LOCATE_kernel___Char___prec "kernel::Char::(kernel::Discrete::prec)"
-typedef val_t (* kernel___Char_____plus_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____plus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____plus "kernel::Char::(kernel::Discrete::+)"
-typedef val_t (* kernel___Char_____minus_t)(val_t  self, val_t  param0);
-val_t kernel___Char_____minus(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char_____minus "kernel::Char::(kernel::Discrete::-)"
-typedef val_t (* kernel___Char___distance_t)(val_t  self, val_t  param0);
-val_t kernel___Char___distance(val_t  self, val_t  param0);
-#define LOCATE_kernel___Char___distance "kernel::Char::(kernel::Discrete::distance)"
-typedef val_t (* kernel___Char___to_i_t)(val_t  self);
-val_t kernel___Char___to_i(val_t  self);
-#define LOCATE_kernel___Char___to_i "kernel::Char::to_i"
-typedef val_t (* kernel___Char___ascii_t)(val_t  self);
-val_t kernel___Char___ascii(val_t  self);
-#define LOCATE_kernel___Char___ascii "kernel::Char::ascii"
-typedef val_t (* kernel___Char___to_lower_t)(val_t  self);
-val_t kernel___Char___to_lower(val_t  self);
-#define LOCATE_kernel___Char___to_lower "kernel::Char::to_lower"
-typedef val_t (* kernel___Char___to_upper_t)(val_t  self);
-val_t kernel___Char___to_upper(val_t  self);
-#define LOCATE_kernel___Char___to_upper "kernel::Char::to_upper"
+static const char * const LOCATE_kernel___Comparable_____l = "kernel::Comparable::<";
+val_t kernel___Comparable_____l(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable_____l_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable_____leq = "kernel::Comparable::<=";
+val_t kernel___Comparable_____leq(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable_____leq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable_____geq = "kernel::Comparable::>=";
+val_t kernel___Comparable_____geq(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable_____geq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable_____g = "kernel::Comparable::>";
+val_t kernel___Comparable_____g(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable_____g_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable_____leqg = "kernel::Comparable::<=>";
+val_t kernel___Comparable_____leqg(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable_____leqg_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable___is_between = "kernel::Comparable::is_between";
+val_t kernel___Comparable___is_between(val_t p0, val_t p1, val_t p2);
+typedef val_t (*kernel___Comparable___is_between_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_kernel___Comparable___max = "kernel::Comparable::max";
+val_t kernel___Comparable___max(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable___max_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Comparable___min = "kernel::Comparable::min";
+val_t kernel___Comparable___min(val_t p0, val_t p1);
+typedef val_t (*kernel___Comparable___min_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Discrete___succ = "kernel::Discrete::succ";
+val_t kernel___Discrete___succ(val_t p0);
+typedef val_t (*kernel___Discrete___succ_t)(val_t p0);
+static const char * const LOCATE_kernel___Discrete___prec = "kernel::Discrete::prec";
+val_t kernel___Discrete___prec(val_t p0);
+typedef val_t (*kernel___Discrete___prec_t)(val_t p0);
+static const char * const LOCATE_kernel___Discrete_____plus = "kernel::Discrete::+";
+val_t kernel___Discrete_____plus(val_t p0, val_t p1);
+typedef val_t (*kernel___Discrete_____plus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Discrete_____minus = "kernel::Discrete::-";
+val_t kernel___Discrete_____minus(val_t p0, val_t p1);
+typedef val_t (*kernel___Discrete_____minus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Discrete___distance = "kernel::Discrete::distance";
+val_t kernel___Discrete___distance(val_t p0, val_t p1);
+typedef val_t (*kernel___Discrete___distance_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Bool___object_id = "kernel::Bool::(kernel::Object::object_id)";
+val_t kernel___Bool___object_id(val_t p0);
+typedef val_t (*kernel___Bool___object_id_t)(val_t p0);
+static const char * const LOCATE_kernel___Bool_____eqeq = "kernel::Bool::(kernel::Object::==)";
+val_t kernel___Bool_____eqeq(val_t p0, val_t p1);
+typedef val_t (*kernel___Bool_____eqeq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Bool_____neq = "kernel::Bool::(kernel::Object::!=)";
+val_t kernel___Bool_____neq(val_t p0, val_t p1);
+typedef val_t (*kernel___Bool_____neq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Bool___output = "kernel::Bool::(kernel::Object::output)";
+void kernel___Bool___output(val_t p0);
+typedef void (*kernel___Bool___output_t)(val_t p0);
+static const char * const LOCATE_kernel___Float___object_id = "kernel::Float::(kernel::Object::object_id)";
+val_t kernel___Float___object_id(val_t p0);
+typedef val_t (*kernel___Float___object_id_t)(val_t p0);
+static const char * const LOCATE_kernel___Float___output = "kernel::Float::(kernel::Object::output)";
+void kernel___Float___output(val_t p0);
+typedef void (*kernel___Float___output_t)(val_t p0);
+static const char * const LOCATE_kernel___Float_____leq = "kernel::Float::<=";
+val_t kernel___Float_____leq(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____leq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____l = "kernel::Float::<";
+val_t kernel___Float_____l(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____l_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____geq = "kernel::Float::>=";
+val_t kernel___Float_____geq(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____geq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____g = "kernel::Float::>";
+val_t kernel___Float_____g(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____g_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____plus = "kernel::Float::+";
+val_t kernel___Float_____plus(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____plus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float___unary__minus = "kernel::Float::unary -";
+val_t kernel___Float___unary__minus(val_t p0);
+typedef val_t (*kernel___Float___unary__minus_t)(val_t p0);
+static const char * const LOCATE_kernel___Float_____minus = "kernel::Float::-";
+val_t kernel___Float_____minus(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____minus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____star = "kernel::Float::*";
+val_t kernel___Float_____star(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____star_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float_____slash = "kernel::Float::/";
+val_t kernel___Float_____slash(val_t p0, val_t p1);
+typedef val_t (*kernel___Float_____slash_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Float___to_i = "kernel::Float::to_i";
+val_t kernel___Float___to_i(val_t p0);
+typedef val_t (*kernel___Float___to_i_t)(val_t p0);
+static const char * const LOCATE_kernel___Int___object_id = "kernel::Int::(kernel::Object::object_id)";
+val_t kernel___Int___object_id(val_t p0);
+typedef val_t (*kernel___Int___object_id_t)(val_t p0);
+static const char * const LOCATE_kernel___Int_____eqeq = "kernel::Int::(kernel::Object::==)";
+val_t kernel___Int_____eqeq(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____eqeq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____neq = "kernel::Int::(kernel::Object::!=)";
+val_t kernel___Int_____neq(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____neq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___output = "kernel::Int::(kernel::Object::output)";
+void kernel___Int___output(val_t p0);
+typedef void (*kernel___Int___output_t)(val_t p0);
+static const char * const LOCATE_kernel___Int_____leq = "kernel::Int::(kernel::Comparable::<=)";
+val_t kernel___Int_____leq(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____leq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____l = "kernel::Int::(kernel::Comparable::<)";
+val_t kernel___Int_____l(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____l_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____geq = "kernel::Int::(kernel::Comparable::>=)";
+val_t kernel___Int_____geq(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____geq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____g = "kernel::Int::(kernel::Comparable::>)";
+val_t kernel___Int_____g(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____g_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____plus = "kernel::Int::(kernel::Discrete::+)";
+val_t kernel___Int_____plus(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____plus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___unary__minus = "kernel::Int::unary -";
+val_t kernel___Int___unary__minus(val_t p0);
+typedef val_t (*kernel___Int___unary__minus_t)(val_t p0);
+static const char * const LOCATE_kernel___Int_____minus = "kernel::Int::(kernel::Discrete::-)";
+val_t kernel___Int_____minus(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____minus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____star = "kernel::Int::*";
+val_t kernel___Int_____star(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____star_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____slash = "kernel::Int::/";
+val_t kernel___Int_____slash(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____slash_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____percent = "kernel::Int::%";
+val_t kernel___Int_____percent(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____percent_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___lshift = "kernel::Int::lshift";
+val_t kernel___Int___lshift(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___lshift_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___rshift = "kernel::Int::rshift";
+val_t kernel___Int___rshift(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___rshift_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___to_f = "kernel::Int::to_f";
+val_t kernel___Int___to_f(val_t p0);
+typedef val_t (*kernel___Int___to_f_t)(val_t p0);
+static const char * const LOCATE_kernel___Int___succ = "kernel::Int::(kernel::Discrete::succ)";
+val_t kernel___Int___succ(val_t p0);
+typedef val_t (*kernel___Int___succ_t)(val_t p0);
+static const char * const LOCATE_kernel___Int___prec = "kernel::Int::(kernel::Discrete::prec)";
+val_t kernel___Int___prec(val_t p0);
+typedef val_t (*kernel___Int___prec_t)(val_t p0);
+static const char * const LOCATE_kernel___Int___distance = "kernel::Int::(kernel::Discrete::distance)";
+val_t kernel___Int___distance(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___distance_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int_____leqg = "kernel::Int::(kernel::Comparable::<=>)";
+val_t kernel___Int_____leqg(val_t p0, val_t p1);
+typedef val_t (*kernel___Int_____leqg_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___is_between = "kernel::Int::(kernel::Comparable::is_between)";
+val_t kernel___Int___is_between(val_t p0, val_t p1, val_t p2);
+typedef val_t (*kernel___Int___is_between_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_kernel___Int___max = "kernel::Int::(kernel::Comparable::max)";
+val_t kernel___Int___max(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___max_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___min = "kernel::Int::(kernel::Comparable::min)";
+val_t kernel___Int___min(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___min_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___ascii = "kernel::Int::ascii";
+val_t kernel___Int___ascii(val_t p0);
+typedef val_t (*kernel___Int___ascii_t)(val_t p0);
+static const char * const LOCATE_kernel___Int___digit_count = "kernel::Int::digit_count";
+val_t kernel___Int___digit_count(val_t p0, val_t p1);
+typedef val_t (*kernel___Int___digit_count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Int___to_c = "kernel::Int::to_c";
+val_t kernel___Int___to_c(val_t p0);
+typedef val_t (*kernel___Int___to_c_t)(val_t p0);
+typedef void (*CLOS_kernel___Int___enumerate_to_0)(struct stack_frame_t *, val_t);
+static const char * const LOCATE_kernel___Int___enumerate_to = "kernel::Int::enumerate_to";
+void kernel___Int___enumerate_to(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*kernel___Int___enumerate_to_t)(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*CLOS_kernel___Int___enumerate_before_0)(struct stack_frame_t *, val_t);
+static const char * const LOCATE_kernel___Int___enumerate_before = "kernel::Int::enumerate_before";
+void kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*kernel___Int___enumerate_before_t)(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_kernel___Char___object_id = "kernel::Char::(kernel::Object::object_id)";
+val_t kernel___Char___object_id(val_t p0);
+typedef val_t (*kernel___Char___object_id_t)(val_t p0);
+static const char * const LOCATE_kernel___Char_____eqeq = "kernel::Char::(kernel::Object::==)";
+val_t kernel___Char_____eqeq(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____eqeq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char_____neq = "kernel::Char::(kernel::Object::!=)";
+val_t kernel___Char_____neq(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____neq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char___output = "kernel::Char::(kernel::Object::output)";
+void kernel___Char___output(val_t p0);
+typedef void (*kernel___Char___output_t)(val_t p0);
+static const char * const LOCATE_kernel___Char_____leq = "kernel::Char::(kernel::Comparable::<=)";
+val_t kernel___Char_____leq(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____leq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char_____l = "kernel::Char::(kernel::Comparable::<)";
+val_t kernel___Char_____l(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____l_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char_____geq = "kernel::Char::(kernel::Comparable::>=)";
+val_t kernel___Char_____geq(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____geq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char_____g = "kernel::Char::(kernel::Comparable::>)";
+val_t kernel___Char_____g(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____g_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char___succ = "kernel::Char::(kernel::Discrete::succ)";
+val_t kernel___Char___succ(val_t p0);
+typedef val_t (*kernel___Char___succ_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___prec = "kernel::Char::(kernel::Discrete::prec)";
+val_t kernel___Char___prec(val_t p0);
+typedef val_t (*kernel___Char___prec_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___distance = "kernel::Char::(kernel::Discrete::distance)";
+val_t kernel___Char___distance(val_t p0, val_t p1);
+typedef val_t (*kernel___Char___distance_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char___to_i = "kernel::Char::to_i";
+val_t kernel___Char___to_i(val_t p0);
+typedef val_t (*kernel___Char___to_i_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___ascii = "kernel::Char::ascii";
+val_t kernel___Char___ascii(val_t p0);
+typedef val_t (*kernel___Char___ascii_t)(val_t p0);
+static const char * const LOCATE_kernel___Char_____plus = "kernel::Char::(kernel::Discrete::+)";
+val_t kernel___Char_____plus(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____plus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char_____minus = "kernel::Char::(kernel::Discrete::-)";
+val_t kernel___Char_____minus(val_t p0, val_t p1);
+typedef val_t (*kernel___Char_____minus_t)(val_t p0, val_t p1);
+static const char * const LOCATE_kernel___Char___to_lower = "kernel::Char::to_lower";
+val_t kernel___Char___to_lower(val_t p0);
+typedef val_t (*kernel___Char___to_lower_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___to_upper = "kernel::Char::to_upper";
+val_t kernel___Char___to_upper(val_t p0);
+typedef val_t (*kernel___Char___to_upper_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___is_digit = "kernel::Char::is_digit";
+val_t kernel___Char___is_digit(val_t p0);
+typedef val_t (*kernel___Char___is_digit_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___is_lower = "kernel::Char::is_lower";
+val_t kernel___Char___is_lower(val_t p0);
+typedef val_t (*kernel___Char___is_lower_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___is_upper = "kernel::Char::is_upper";
+val_t kernel___Char___is_upper(val_t p0);
+typedef val_t (*kernel___Char___is_upper_t)(val_t p0);
+static const char * const LOCATE_kernel___Char___is_letter = "kernel::Char::is_letter";
+val_t kernel___Char___is_letter(val_t p0);
+typedef val_t (*kernel___Char___is_letter_t)(val_t p0);
 #endif