1 /*  Part of SWI-Prolog
2 
3     Author:        Jan Wielemaker
4     E-mail:        J.Wielemaker@vu.nl
5     WWW:           http://www.swi-prolog.org
6     Copyright (c)  2010-20120, University of Amsterdam
7 			      CWI, Amsterdam
8     All rights reserved.
9 
10     Redistribution and use in source and binary forms, with or without
11     modification, are permitted provided that the following conditions
12     are met:
13 
14     1. Redistributions of source code must retain the above copyright
15        notice, this list of conditions and the following disclaimer.
16 
17     2. Redistributions in binary form must reproduce the above copyright
18        notice, this list of conditions and the following disclaimer in
19        the documentation and/or other materials provided with the
20        distribution.
21 
22     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25     FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26     COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28     BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32     ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33     POSSIBILITY OF SUCH DAMAGE.
34 */
35 
36 #ifndef PL_LDPASS_H_INCLUDED
37 #define PL_LDPASS_H_INCLUDED
38 
39 		 /*******************************
40 		 *	LD-USING FUNCTIONS	*
41 		 *******************************/
42 
43 #define allocGlobal(n)		allocGlobal__LD(n PASS_LD)
44 #define getInputStream(t, k, s)		getInputStream__LD(t, k, s PASS_LD)
45 #define getTextInputStream(t, s)	getTextInputStream__LD(t, s PASS_LD)
46 #define getBinaryInputStream(t, s)	getBinaryInputStream__LD(t, s PASS_LD)
47 #define getOutputStream(t, k, s)	getOutputStream__LD(t, k, s PASS_LD)
48 #define getTextOutputStream(t, s)	getTextOutputStream__LD(t, s PASS_LD)
49 #define getBinaryOutputStream(t, s)	getBinaryOutputStream__LD(t, s PASS_LD)
50 #define getCharsString(s, l)	getCharsString__LD(s, l PASS_LD)
51 #define getCharsWString(s, l)	getCharsWString__LD(s, l PASS_LD)
52 #define compileTermToHeap(t, f)	\
53 	compileTermToHeap__LD(t, NULL, NULL, f PASS_LD)
54 #define linkVal(p)		linkVal__LD(p PASS_LD)
55 #define TrailAssignment(p)	TrailAssignment__LD(p PASS_LD)
56 #define bindConst(p, c)		bindConst__LD(p, c PASS_LD)
57 #define consPtr(p, ts)		consPtr__LD(p, ts PASS_LD)
58 #define allocGlobalNoShift(n)	allocGlobalNoShift__LD(n PASS_LD)
59 #define getProcDefinition(proc)	getProcDefinition__LD(proc->definition PASS_LD)
60 #define popTermRef()		popTermRef__LD(PASS_LD1)
61 #define pushWordAsTermRef(p)	pushWordAsTermRef__LD(p PASS_LD)
62 #define lookupHTable(ht, n)	lookupHTable__LD(ht, n PASS_LD)
63 #define pushPredicateAccess(def) (pushPredicateAccessObj(def PASS_LD)->generation)
64 #define popPredicateAccess(def) popPredicateAccess__LD(def PASS_LD)
65 #define popNPredicateAccess(cnt) popNPredicateAccess__LD(cnt PASS_LD)
66 #define nextClause(chp, argv, fr, def) nextClause__LD(chp, argv, fr, def PASS_LD)
67 #define lookupModule(name)	lookupModule__LD(name PASS_LD)
68 #define isCurrentModule(name)	isCurrentModule__LD(name PASS_LD)
69 #define acquireModule(name)	acquireModule__LD(name PASS_LD)
70 #define isCurrentProcedure(f,m) isCurrentProcedure__LD(f, m PASS_LD)
71 #define resolveProcedure(f,m)	resolveProcedure__LD(f, m PASS_LD)
72 #define ensureLocalSpace(n)	likely(ensureLocalSpace__LD(n PASS_LD))
73 #define ensureGlobalSpace(n,f)  likely(ensureStackSpace__LD(n,0,f PASS_LD))
74 #define ensureTrailSpace(n)     likely(ensureStackSpace__LD(0,n,ALLOW_GC PASS_LD))
75 #define ensureStackSpace(g,t)   likely(ensureStackSpace__LD(g,t,ALLOW_GC PASS_LD))
76 
77 #define _PL_get_arg(n, t, a)	_PL_get_arg__LD(n, t, a PASS_LD)
78 #define _PL_put_number(t, n)	_PL_put_number__LD(t, n PASS_LD)
79 #define PL_new_term_ref()	PL_new_term_ref__LD(PASS_LD1)
80 #define PL_new_term_ref_noshift()	PL_new_term_ref_noshift__LD(PASS_LD1)
81 #define PL_new_term_refs(n)	PL_new_term_refs__LD(n PASS_LD)
82 #define PL_reset_term_refs(t)	PL_reset_term_refs__LD(t PASS_LD)
83 #define PL_copy_term_ref(t)	PL_copy_term_ref__LD(t PASS_LD)
84 #define PL_unify(t1, t2)	PL_unify__LD(t1, t2 PASS_LD)
85 #define PL_unify_integer(t, i)	PL_unify_integer__LD(t, i PASS_LD)
86 #define PL_unify_int64(t, i)	PL_unify_int64__LD(t, i PASS_LD)
87 #define PL_unify_functor(t, f)	PL_unify_functor__LD(t, f PASS_LD)
88 #define PL_unify_term(t, ...)	PL_unify_term__LD(t PASS_LD, __VA_ARGS__)
89 #define PL_unify_output(t1,t2)	PL_unify_output__LD(t1, t2 PASS_LD)
90 #define PL_get_atom(t, a)	PL_get_atom__LD(t, a PASS_LD)
91 #define PL_put_atom(t, a)	PL_put_atom__LD(t, a PASS_LD)
92 #define PL_put_variable(t)	PL_put_variable__LD(t PASS_LD)
93 #define PL_is_functor(t, f)	PL_is_functor__LD(t, f PASS_LD)
94 #define PL_put_integer(t, i)	PL_put_integer__LD(t, i PASS_LD)
95 #define PL_put_intptr(t, i)	PL_put_intptr__LD(t, i PASS_LD)
96 #define PL_strip_module(q, m, t) PL_strip_module__LD(q, m, t, 0 PASS_LD)
97 #define PL_get_integer(t, i)	PL_get_integer__LD(t, i PASS_LD)
98 #define PL_get_long(t, i)	PL_get_long__LD(t, i PASS_LD)
99 #define PL_get_int64(t, i)	PL_get_int64__LD(t, i PASS_LD)
100 #define PL_get_size_ex(t,i)	PL_get_size_ex__LD(t,i PASS_LD)
101 #define PL_get_number(t, n)	PL_get_number__LD(t, n PASS_LD)
102 #define PL_unify_number(t, n)	PL_unify_number__LD(t, n PASS_LD)
103 #define PL_put_number(t, n)	PL_put_number__LD(t, n PASS_LD)
104 #define PL_get_pointer(t, ptr)	PL_get_pointer__LD(t, ptr PASS_LD)
105 #define PL_put_term(t1, t2)	PL_put_term__LD(t1, t2 PASS_LD)
106 #define PL_get_functor(t, f)	PL_get_functor__LD(t, f PASS_LD)
107 #define PL_unify_atom(t, a)	PL_unify_atom__LD(t, a PASS_LD)
108 #define _PL_unify_atomic(t, a)	PL_unify_atom__LD(t, a PASS_LD)
109 #define PL_unify_pointer(t, p)	PL_unify_pointer__LD(t, p PASS_LD)
110 #define PL_is_variable(t)	PL_is_variable__LD(t PASS_LD)
111 #define PL_is_atomic(t)		PL_is_atomic__LD(t PASS_LD)
112 #define PL_get_list(l, h, t)	PL_get_list__LD(l, h, t PASS_LD)
113 #define PL_is_atom(t)		PL_is_atom__LD(t PASS_LD)
114 #define PL_unify_list(l, h, t)	PL_unify_list__LD(l, h, t PASS_LD)
115 #define PL_cons_list(l, h, t)	PL_cons_list__LD(l, h, t PASS_LD)
116 #define PL_get_text(l, t, f)	PL_get_text__LD(l, t, f PASS_LD)
117 #define PL_unify_int64_ex(t, i)	PL_unify_int64_ex__LD(t, i PASS_LD)
118 #define PL_pending(sig)	        PL_pending__LD(sig PASS_LD)
119 #define PL_clearsig(sig)        PL_clearsig__LD(sig PASS_LD)
120 #define PL_same_term(t1, t2)	PL_same_term__LD(t1, t2 PASS_LD)
121 #define PL_get_name_arity_sz(t,n,a) PL_get_name_arity_sz__LD(t,n,a PASS_LD)
122 
123 #define PL_get_atom_ex(t, a)	PL_get_atom_ex__LD(t, a PASS_LD)
124 #define PL_open_foreign_frame() PL_open_foreign_frame__LD(PASS_LD1)
125 #define PL_close_foreign_frame(id) PL_close_foreign_frame__LD(id PASS_LD)
126 #define PL_strip_module_ex(t,m,p) PL_strip_module_ex__LD(t,m,p PASS_LD)
127 #define var_name_ptr(p, n)	var_name_ptr__LD(p, n PASS_LD)
128 #define classify_exception(ex)  classify_exception__LD(ex PASS_LD)
129 #define classify_exception_p(p) classify_exception_p__LD(p PASS_LD)
130 #define PL_mark_string_buffers(m) PL_mark_string_buffers__LD(m PASS_LD)
131 #define PL_release_string_buffers_from_mark(m) \
132 				PL_release_string_buffers_from_mark__LD(m PASS_LD)
133 
134 #endif /*PL_LDPASS_H_INCLUDED*/
135