turn off fastcall feature, add budy to unify.h
[gule-log:guile-log.git] / logic / guile-log / src / unify.h
1 /*
2         Copyright (C) 2009, 2010 Free Software Foundation, Inc.
3  
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Lesser General Public
6  License as published by the Free Software Foundation; either
7  version 3 of the License, or (at your option) any later version.
8  
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  Lesser General Public License for more details.
13  
14  You should have received a copy of the GNU Lesser General Public
15  License along with this library; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #define Q(x) ((((scm_t_bits) x) << 2) + 2)
20 #define Ix   (SCM_UNPACK(*pat))
21 #define i_end    Q(0)
22 #define i_cons   Q(1)
23 #define i_var    Q(2)
24 #define i_eq     Q(3)
25 #define i_pop    Q(4)
26 #define i_insert Q(5)
27 #define i_unify  Q(6)
28 #define i_match  Q(7)
29 #define i_scheme Q(8)
30 #define i_load   Q(9)
31 #define i_arbr   Q(10)
32
33 SCM_API SCM gp_gp(SCM scm);
34
35 SCM_API SCM  gp_varp(SCM x, SCM s);
36 SCM_API SCM  gp_atomicp(SCM x, SCM s);
37 SCM_API SCM  gp_consp(SCM x);
38
39 SCM_API SCM  gp_set(SCM var, SCM val, SCM s);
40 SCM_API SCM  gp_ref_set(SCM var, SCM val, SCM s);
41 SCM_API SCM  gp_clear(SCM s);
42 SCM_API SCM  gp_gp_newframe(SCM s);
43 SCM_API SCM  gp_mkvar(SCM s);
44 SCM_API SCM  smob2scm(SCM scm, SCM s);
45 SCM_API SCM  gp_gp_unify(SCM scm1, SCM scm2, SCM s);
46 SCM_API SCM  gp_gp_lookup(SCM scm, SCM s);
47
48 SCM_API SCM  gp_var_number(SCM x, SCM s);
49 SCM_API SCM  gp_soft_init();
50
51 SCM_API SCM  gp_next_budy(SCM x);
52
53 SCM_API SCM gp_cons_bang(SCM car, SCM cdr, SCM s);
54 SCM_API SCM gp_pair_bang(SCM x, SCM s);
55 SCM_API SCM gp_pair(SCM x, SCM s);
56 SCM_API SCM gp_null(SCM x, SCM s);
57 SCM_API SCM gp_null_bang(SCM x, SCM s);
58 SCM_API SCM gp_m_unify(SCM x, SCM y, SCM s);
59 SCM_API SCM gp_gp_cdr(SCM x, SCM s);
60 SCM_API SCM gp_car(SCM x, SCM s); 
61
62 SCM_API SCM gp_gp_unwind(SCM fr);
63 SCM_API SCM gp_gp_store_state(SCM s);
64 SCM_API SCM gp_gp_restore_state(SCM cont);
65
66 SCM_API SCM gp_make_fluid(SCM s); 
67 SCM_API SCM gp_fluid_set_bang(SCM f, SCM v, SCM s);
68
69 SCM_API SCM gp_dynwind(SCM in, SCM out, SCM s);
70
71 //SCM_API SCM gp_copy(SCM x);
72
73 SCM_API SCM gp_jumpframe_start(SCM s);
74 SCM_API SCM gp_jumpframe_end(SCM s);
75 SCM_API SCM gp_logical_incr(SCM s);
76 SCM_API SCM gp_logical_decr(SCM s);
77 SCM_API SCM gp_set_stack(SCM var, SCM val, SCM s);
78
79 SCM_API SCM gp_make_stack(SCM id, SCM thread_id, SCM nc, SCM ns, SCM ncs);
80
81 SCM_API SCM gp_member(SCM x, SCM l, SCM s);
82 SCM_API SCM gp_right_of(SCM x, SCM y, SCM l, SCM s);
83
84 SCM_API SCM gp_make_member();
85 SCM_API SCM gp_make_right();
86 SCM_API SCM gp_set_closure_tag(SCM tag);
87 SCM_API SCM gp_make_einstein();
88
89 SCM_API SCM gp_wind_set(SCM s, SCM v);
90 SCM_API SCM gp_setup_set(SCM s, SCM v);
91 SCM_API SCM gp_wind_ref(SCM s);
92 SCM_API SCM gp_setup_ref(SCM s);