summaryrefslogtreecommitdiff
path: root/snd-menu.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@iem.at>2016-08-04 10:52:15 +0200
committerIOhannes m zmölnig <zmoelnig@iem.at>2016-08-04 10:52:15 +0200
commit595a8d637b81d45fe73f566b25d64cf8bca672c1 (patch)
tree0a88f6ef6f0c857ba5c37842a0c5ad63b84d3915 /snd-menu.c
parent3eb3c4d013403119c639870bf55d61e3456c1078 (diff)
Imported Upstream version 16.7
Diffstat (limited to 'snd-menu.c')
-rw-r--r--snd-menu.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/snd-menu.c b/snd-menu.c
index 584d632..2f851c9 100644
--- a/snd-menu.c
+++ b/snd-menu.c
@@ -352,8 +352,8 @@ func (a function of no args) when the new menu is activated. Returns the new men
widget_t result;
char *errmsg = NULL;
- Xen_check_type(Xen_is_string(label) || Xen_is_false(label), label, 2, S_add_to_menu, "a string");
Xen_check_type(Xen_is_integer(menu), menu, 1, S_add_to_menu, "an integer");
+ Xen_check_type(Xen_is_string(label) || Xen_is_false(label), label, 2, S_add_to_menu, "a string");
Xen_check_type(Xen_is_procedure(callback) || Xen_is_false(callback), callback, 3, S_add_to_menu, "a procedure");
Xen_check_type(Xen_is_integer_or_unbound(gpos), gpos, 4, S_add_to_menu, "an integer");
@@ -406,8 +406,8 @@ static Xen gl_remove_from_menu(Xen menu, Xen label)
#define H_remove_from_menu "(" S_remove_from_menu " menu label): removes menu item label from menu"
int m;
- Xen_check_type(Xen_is_string(label), label, 2, S_remove_from_menu, "a string");
Xen_check_type(Xen_is_integer(menu), menu, 1, S_remove_from_menu, "an integer");
+ Xen_check_type(Xen_is_string(label), label, 2, S_remove_from_menu, "a string");
m = Xen_integer_to_C_int(menu);
if (m < 0)
@@ -438,8 +438,18 @@ Xen_wrap_1_arg(g_main_menu_w, g_main_menu)
void g_init_menu(void)
{
- Xen_define_procedure(S_add_to_main_menu, gl_add_to_main_menu_w, 1, 1, 0, H_add_to_main_menu);
- Xen_define_procedure(S_add_to_menu, gl_add_to_menu_w, 3, 1, 0, H_add_to_menu);
- Xen_define_procedure(S_remove_from_menu, gl_remove_from_menu_w, 2, 0, 0, H_remove_from_menu);
- Xen_define_procedure(S_main_menu, g_main_menu_w, 1, 0, 0, H_main_menu);
+#if HAVE_SCHEME
+ s7_pointer i, p, b, fnc, s;
+ i = s7_make_symbol(s7, "integer?");
+ p = s7_make_symbol(s7, "pair?");
+ b = s7_make_symbol(s7, "boolean?");
+ fnc = s7_make_symbol(s7, "procedure?");
+ s = s7_make_symbol(s7, "string?");
+#endif
+
+ Xen_define_typed_procedure(S_add_to_main_menu, gl_add_to_main_menu_w, 1, 1, 0, H_add_to_main_menu, s7_make_signature(s7, 3, i, s, fnc));
+ Xen_define_typed_procedure(S_add_to_menu, gl_add_to_menu_w, 3, 1, 0, H_add_to_menu,
+ s7_make_signature(s7, 5, p, i, s7_make_signature(s7, 2, s, b), s7_make_signature(s7, 2, fnc, b), i));
+ Xen_define_typed_procedure(S_remove_from_menu, gl_remove_from_menu_w, 2, 0, 0, H_remove_from_menu, s7_make_signature(s7, 3, i, i, s));
+ Xen_define_typed_procedure(S_main_menu, g_main_menu_w, 1, 0, 0, H_main_menu, s7_make_signature(s7, 2, p, i));
}