GNU PROLOG with UTF8 support
foreign_supp.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------*
2  * GNU Prolog *
3  * *
4  * Part : Prolog buit-in predicates *
5  * File : foreign_supp.h *
6  * Descr.: foreign interface support - header file *
7  * Author: Daniel Diaz *
8  * *
9  * Copyright (C) 1999-2015 Daniel Diaz *
10  * *
11  * This file is part of GNU Prolog *
12  * *
13  * GNU Prolog is free software: you can redistribute it and/or *
14  * modify it under the terms of either: *
15  * *
16  * - the GNU Lesser General Public License as published by the Free *
17  * Software Foundation; either version 3 of the License, or (at your *
18  * option) any later version. *
19  * *
20  * or *
21  * *
22  * - the GNU General Public License as published by the Free *
23  * Software Foundation; either version 2 of the License, or (at your *
24  * option) any later version. *
25  * *
26  * or both in parallel, as here. *
27  * *
28  * GNU Prolog is distributed in the hope that it will be useful, *
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
31  * General Public License for more details. *
32  * *
33  * You should have received copies of the GNU General Public License and *
34  * the GNU Lesser General Public License along with this program. If *
35  * not, see http://www.gnu.org/licenses/. *
36  *-------------------------------------------------------------------------*/
37 
38 
39 /*---------------------------------*
40  * Constants *
41  *---------------------------------*/
42 
43 #define PL_RECOVER 0
44 #define PL_CUT 1
45 #define PL_KEEP_FOR_PROLOG 2
46 
47 #define PL_FAILURE FALSE
48 #define PL_SUCCESS TRUE
49 #define PL_EXCEPTION 2
50 
51 
52 
53 
54 /*---------------------------------*
55  * Type Definitions *
56  *---------------------------------*/
57 
58 typedef WamWord PlTerm;
59 
60 typedef enum { PL_FALSE, PL_TRUE} PlBool;
61 
62 typedef struct
63 {
66  union
67  {
69  char *s;
70  double d;
71  }
72  value;
73 }
74 PlFIOArg;
75 
76 
77 
78 
79 
80 /*---------------------------------*
81  * Global Variables *
82  *---------------------------------*/
83 
84 #ifdef FOREIGN_SUPP_FILE
85 
88 
89 #else
90 
91 extern int pl_foreign_bkt_counter;
92 extern char *pl_foreign_bkt_buffer;
93 
94 #endif
95 
96 
97 
98 
99 /*---------------------------------*
100  * Function Prototypes *
101  *---------------------------------*/
102 
103 void Pl_Foreign_Create_Choice(CodePtr codep_alt, int arity, int choice_size);
104 
105 void Pl_Foreign_Update_Choice(CodePtr codep_alt, int arity, int choice_size);
106 
107 CodePtr Pl_Foreign_Jump_Ret(CodePtr codep);
108 
109 PlFIOArg *Pl_Foreign_Rd_IO_Arg(int arg_long, WamWord start_word,
110  PlLong (*rd_fct) (), int fio_arg_index);
111 
112 Bool Pl_Foreign_Un_IO_Arg(int arg_long, Bool (*un_fct) (), PlFIOArg *fa,
113  WamWord start_word);
114 
115 
116 
117 void Pl_Emit_Syntax_Error(char *file_name, int err_line, int err_col,
118  char *err_msg);
119 
120 
121 
122 void Pl_Exec_Continuation(int func, int arity, WamWord *arg_adr);
123 
124 void Pl_Throw(WamWord ball_word);
125 
126 void Pl_Query_Begin(Bool recoverable);
127 
128 int Pl_Query_Call(int func, int arity, WamWord *arg_adr);
129 
130 int Pl_Query_Start(int func, int arity, WamWord *arg_adr, Bool recoverable);
131 
132 int Pl_Query_Next_Solution(void);
133 
134 void Pl_Query_End(int op);
135 
137 
138 
139 
140 #define Pl_Get_Choice_Counter() pl_foreign_bkt_counter
141 
142 #define Pl_Get_Choice_Buffer(t) ((t) pl_foreign_bkt_buffer)
143 
144 void Pl_No_More_Choice(void);
145 
146 
147 
148 int Pl_Type_Of_Term(WamWord start_word);
149 
150 
151 char *Pl_Atom_Name(int atom);
152 
153 int Pl_Atom_Length(int atom);
154 
155 Bool Pl_Atom_Needs_Quote(int atom);
156 
157 Bool Pl_Atom_Needs_Scan(int atom);
158 
159 Bool Pl_Is_Valid_Atom(int atom);
160 
161 int Pl_Atom_Char(char c);
162 
163 int Pl_Atom_Nil(void);
164 
165 int Pl_Atom_False(void);
166 
167 int Pl_Atom_True(void);
168 
169 int Pl_Atom_End_Of_File(void);
170 
171 
172 
173 PlBool Pl_Unif(PlTerm term1, PlTerm term2);
174 
176 
177 
178 
180 
182 
184 
186 
188 
190 
192 
194 
196 
198 
200 
202 
204 
206 
208 
210 
211 
212 
213 Bool Pl_Builtin_Term_Eq(WamWord term1, WamWord term2);
214 
216 
217 Bool Pl_Builtin_Term_Lt(WamWord term1, WamWord term2);
218 
220 
221 Bool Pl_Builtin_Term_Gt(WamWord term1, WamWord term2);
222 
224 
225 
226 
227 Bool Pl_Builtin_Compare(WamWord cmp, WamWord term1, WamWord term2);
228 
229 Bool Pl_Builtin_Arg(WamWord arg_no, WamWord term, WamWord sub_term);
230 
231 Bool Pl_Builtin_Functor(WamWord term, WamWord functor, WamWord arity);
232 
233 Bool Pl_Builtin_Univ(WamWord term, WamWord list);
234 
235 
236 
237 
238 Bool Pl_Builtin_Eq(WamWord expr1, WamWord expr2);
239 
240 Bool Pl_Builtin_Neq(WamWord expr1, WamWord expr2);
241 
242 Bool Pl_Builtin_Lt(WamWord expr1, WamWord expr2);
243 
244 Bool Pl_Builtin_Lte(WamWord expr1, WamWord expr2);
245 
246 Bool Pl_Builtin_Gt(WamWord expr1, WamWord expr2);
247 
248 Bool Pl_Builtin_Gte(WamWord expr1, WamWord expr2);
249 
250 void Pl_Math_Evaluate(WamWord expr, WamWord *result);
251 
252 
253 
254 
255 
256 
257 #define PLV REF
258 
259 #define Stream_Pointer(s) (pl_stm_tbl + (s))
260 
void Pl_Throw(WamWord ball_word)
Definition: foreign_supp.c:301
int Pl_Atom_True(void)
Definition: foreign_supp.c:596
Bool Pl_Builtin_Compound(WamWord term)
Definition: foreign_supp.c:737
Bool Pl_Atom_Needs_Scan(int atom)
Definition: foreign_supp.c:537
Bool Pl_Builtin_Eq(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:968
Bool Pl_Builtin_Non_Fd_Var(WamWord term)
Definition: foreign_supp.c:773
Bool Pl_Builtin_Univ(WamWord term, WamWord list)
Definition: foreign_supp.c:955
WamWord PlTerm
Definition: foreign_supp.h:58
Bool Pl_Builtin_Arg(WamWord arg_no, WamWord term, WamWord sub_term)
Definition: foreign_supp.c:931
Bool Pl_Builtin_List_Or_Partial_List(WamWord term)
Definition: foreign_supp.c:833
static CHAR32_T c
Definition: scan_supp.c:65
void Pl_Query_End(int op)
Definition: foreign_supp.c:400
Bool Pl_Atom_Needs_Quote(int atom)
Definition: foreign_supp.c:524
Bool unify
Definition: foreign_supp.h:65
Bool Pl_Builtin_Number(WamWord term)
Definition: foreign_supp.c:713
Bool Pl_Builtin_Non_Generic_Var(WamWord term)
Definition: foreign_supp.c:797
Bool Pl_Builtin_Term_Eq(WamWord term1, WamWord term2)
Definition: foreign_supp.c:846
Definition: foreign_supp.h:60
static char * err_msg
Definition: scan_supp.c:68
char * pl_foreign_bkt_buffer
Bool Pl_Builtin_Integer(WamWord term)
Definition: foreign_supp.c:689
int Pl_Atom_False(void)
Definition: foreign_supp.c:584
void Pl_Foreign_Create_Choice(CodePtr codep_alt, int arity, int choice_size)
Definition: foreign_supp.c:130
intptr_t PlLong
Definition: gprolog.h:88
Bool Pl_Builtin_Term_Gt(WamWord term1, WamWord term2)
Definition: foreign_supp.c:894
void Pl_No_More_Choice(void)
Definition: foreign_supp.c:468
Bool Pl_Builtin_Callable(WamWord term)
Definition: foreign_supp.c:749
int pl_foreign_bkt_counter
PlLong l
Definition: foreign_supp.h:68
int Pl_Atom_Length(int atom)
Definition: foreign_supp.c:511
int Pl_Query_Start(int func, int arity, WamWord *arg_adr, Bool recoverable)
Definition: foreign_supp.c:355
Bool Pl_Builtin_Gte(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:1028
int Pl_Query_Next_Solution(void)
Definition: foreign_supp.c:383
Bool Pl_Builtin_Fd_Var(WamWord term)
Definition: foreign_supp.c:761
Bool Pl_Builtin_Term_Lt(WamWord term1, WamWord term2)
Definition: foreign_supp.c:870
Bool Pl_Builtin_Lte(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:1004
PlBool Pl_Unif(PlTerm term1, PlTerm term2)
Definition: foreign_supp.c:621
int Pl_Atom_Nil(void)
Definition: foreign_supp.c:573
Bool Pl_Builtin_Atom(WamWord term)
Definition: foreign_supp.c:677
void Pl_Math_Evaluate(WamWord expr, WamWord *result)
Definition: foreign_supp.c:1041
int Pl_Atom_Char(char c)
Definition: foreign_supp.c:561
int Pl_Query_Call(int func, int arity, WamWord *arg_adr)
Definition: foreign_supp.c:339
Bool Pl_Builtin_Partial_List(WamWord term)
Definition: foreign_supp.c:821
Definition: foreign_supp.h:60
Bool Pl_Builtin_Var(WamWord term)
Definition: foreign_supp.c:653
void Pl_Foreign_Update_Choice(CodePtr codep_alt, int arity, int choice_size)
Definition: foreign_supp.c:144
void Pl_Emit_Syntax_Error(char *file_name, int err_line, int err_col, char *err_msg)
Definition: foreign_supp.c:233
char * Pl_Atom_Name(int atom)
Definition: foreign_supp.c:498
Bool Pl_Builtin_Float(WamWord term)
Definition: foreign_supp.c:701
int Pl_Type_Of_Term(WamWord start_word)
Definition: foreign_supp.c:481
Bool is_var
Definition: foreign_supp.h:64
Bool Pl_Builtin_Compare(WamWord cmp, WamWord term1, WamWord term2)
Definition: foreign_supp.c:919
Definition: foreign_supp.h:62
Bool Pl_Builtin_Generic_Var(WamWord term)
Definition: foreign_supp.c:785
Bool Pl_Foreign_Un_IO_Arg(int arg_long, Bool(*un_fct)(), PlFIOArg *fa, WamWord start_word)
Definition: foreign_supp.c:213
CodePtr Pl_Foreign_Jump_Ret(CodePtr codep)
Definition: foreign_supp.c:165
Bool Pl_Builtin_List(WamWord term)
Definition: foreign_supp.c:809
Bool Pl_Builtin_Non_Var(WamWord term)
Definition: foreign_supp.c:665
void Pl_Exec_Continuation(int func, int arity, WamWord *arg_adr)
Definition: foreign_supp.c:288
Bool Pl_Builtin_Neq(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:980
WamWord Pl_Get_Exception(void)
Definition: foreign_supp.c:452
long WamWord
Definition: LINUX_SIGSEGV.c:4
Bool Pl_Builtin_Term_Gte(WamWord term1, WamWord term2)
Definition: foreign_supp.c:906
Bool Pl_Is_Valid_Atom(int atom)
Definition: foreign_supp.c:549
PlBool Pl_Unif_With_Occurs_Check(PlTerm term1, PlTerm term2)
Definition: foreign_supp.c:635
Bool Pl_Builtin_Functor(WamWord term, WamWord functor, WamWord arity)
Definition: foreign_supp.c:943
Bool Pl_Builtin_Lt(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:992
PlBool
Definition: foreign_supp.h:60
Bool Pl_Builtin_Gt(WamWord expr1, WamWord expr2)
Definition: foreign_supp.c:1016
char * s
Definition: foreign_supp.h:69
Bool Pl_Builtin_Atomic(WamWord term)
Definition: foreign_supp.c:725
Bool Pl_Builtin_Term_Neq(WamWord term1, WamWord term2)
Definition: foreign_supp.c:858
PlFIOArg * Pl_Foreign_Rd_IO_Arg(int arg_long, WamWord start_word, PlLong(*rd_fct)(), int fio_arg_index)
Definition: foreign_supp.c:178
void Pl_Query_Begin(Bool recoverable)
Definition: foreign_supp.c:320
int Bool
Definition: bool.h:65
int Pl_Atom_End_Of_File(void)
Definition: foreign_supp.c:608
double d
Definition: foreign_supp.h:70
Bool Pl_Builtin_Term_Lte(WamWord term1, WamWord term2)
Definition: foreign_supp.c:882