GNU PROLOG with UTF8 support
error_supp.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------*
2  * GNU Prolog *
3  * *
4  * Part : Prolog buit-in predicates *
5  * File : error_supp.h *
6  * Descr.: Prolog errors 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 /*---------------------------------*
44  * Type Definitions *
45  *---------------------------------*/
46 
47 /*---------------------------------*
48  * Global Variables *
49  *---------------------------------*/
50 
51 #ifdef ERROR_SUPP_FILE
52 
53 int pl_type_atom;
54 int pl_type_atomic;
55 int pl_type_byte;
60 int pl_type_float; /* for arithmetic */
61 int pl_type_boolean; /* for setarg/4 */
62 int pl_type_in_byte;
64 int pl_type_integer;
65 int pl_type_list;
66 int pl_type_number;
68 int pl_type_variable; /* deprecated: new code should emit an uninstantiation_error */
69 int pl_type_pair;
70 int pl_type_fd_variable; /* for FD */
71 int pl_type_fd_evaluable; /* for FD */
72 int pl_type_fd_bool_evaluable; /* for FD */
73 
74 
92 int pl_domain_order;
93 int pl_domain_term_stream_or_alias; /* for term_streams */
94 int pl_domain_g_array_index; /* for g_vars */
95 int pl_domain_g_argument_selector; /* for g_vars */
96 int pl_domain_stream_seek_method; /* for seek/4 */
97 int pl_domain_format_control_sequence; /* for format/2-3 */
98 int pl_domain_os_path; /* for absolute_file_name/2 */
99 int pl_domain_os_file_permission; /* for file_permission/2 */
100 int pl_domain_selectable_item; /* for select_read/3 */
101 int pl_domain_date_time; /* for os_interf */
102 #ifndef NO_USE_SOCKETS
103 int pl_domain_socket_domain; /* for sockets */
104 int pl_domain_socket_address; /* for sockets */
105 #endif
106 
110 int pl_existence_sr_descriptor; /* for source reader */
111 
120 
121 
131 
132 
139 int pl_representation_too_many_variables; /* for Pl_Copy_Term(),... */
140 
146 
147 
148 int pl_resource_print_object_not_linked; /* for print and format */
149 int pl_resource_too_big_fd_constraint; /* for FD */
150 
151 
152 #else
153 
154 
155 extern int pl_type_atom;
156 extern int pl_type_atomic;
157 extern int pl_type_byte;
158 extern int pl_type_callable;
159 extern int pl_type_character;
160 extern int pl_type_compound;
161 extern int pl_type_evaluable;
162 extern int pl_type_float; /* for arithmetic */
163 extern int pl_type_boolean; /* for setarg/4 */
164 extern int pl_type_in_byte;
165 extern int pl_type_in_character;
166 extern int pl_type_integer;
167 extern int pl_type_list;
168 extern int pl_type_number;
169 extern int pl_type_predicate_indicator;
170 extern int pl_type_variable; /* deprecated: new code should emit an uninstantiation_error */
171 extern int pl_type_pair;
172 extern int pl_type_fd_variable; /* for FD */
173 extern int pl_type_fd_evaluable; /* for FD */
174 extern int pl_type_fd_bool_evaluable; /* for FD */
175 
176 
178 extern int pl_domain_close_option;
179 extern int pl_domain_flag_value;
180 extern int pl_domain_io_mode;
181 extern int pl_domain_non_empty_list;
183 extern int pl_domain_operator_priority;
185 extern int pl_domain_prolog_flag;
186 extern int pl_domain_read_option;
187 extern int pl_domain_source_sink;
188 extern int pl_domain_stream;
189 extern int pl_domain_stream_option;
190 extern int pl_domain_stream_or_alias;
191 extern int pl_domain_stream_position;
192 extern int pl_domain_stream_property;
193 extern int pl_domain_write_option;
194 extern int pl_domain_order;
195 extern int pl_domain_term_stream_or_alias; /* for term_streams */
196 extern int pl_domain_g_array_index; /* for g_vars */
197 extern int pl_domain_g_argument_selector; /* for g_vars */
198 extern int pl_domain_stream_seek_method; /* for seek/4 */
199 extern int pl_domain_format_control_sequence; /* for format/2-3 */
200 extern int pl_domain_os_path; /* for absolute_file_name/2 */
201 extern int pl_domain_os_file_permission; /* for file_permission/2 */
202 extern int pl_domain_selectable_item; /* for select_read/3 */
203 extern int pl_domain_date_time; /* for os_interf */
204 #ifndef NO_USE_SOCKETS
205 extern int pl_domain_socket_domain; /* for sockets */
206 extern int pl_domain_socket_address; /* for sockets */
207 #endif
208 
209 
210 extern int pl_existence_procedure;
211 extern int pl_existence_source_sink;
212 extern int pl_existence_stream;
213 extern int pl_existence_sr_descriptor; /* for source reader */
214 
215 
224 
225 
227 extern int pl_permission_type_flag;
228 extern int pl_permission_type_operator;
233 extern int pl_permission_type_stream;
235 
236 
237 extern int pl_representation_character;
240 extern int pl_representation_max_arity;
243 extern int pl_representation_too_many_variables;/* for Pl_Copy_Term(),... */
244 
245 
246 extern int pl_evluation_float_overflow;
247 extern int pl_evluation_int_overflow;
248 extern int pl_evluation_undefined;
249 extern int pl_evluation_underflow;
250 extern int pl_evluation_zero_divisor;
251 
252 
253 extern int resource_too_many_open_streams; /* for streams */
254 extern int pl_resource_print_object_not_linked; /* for print and format */
255 extern int pl_resource_too_big_fd_constraint; /* for FD */
256 
257 #endif
258 
259 
260 
261 
262 /*---------------------------------*
263  * Function Prototypes *
264  *---------------------------------*/
265 
266 void Pl_Set_Bip_Name_2(WamWord func_word, WamWord arity_word);
267 
268 void Pl_Set_Bip_Name_Untagged_2(int func, int arity);
269 
270 void Pl_Set_C_Bip_Name(char *func_str, int arity);
271 
272 void Pl_Unset_C_Bip_Name(void);
273 
274 int Pl_Get_Current_Bip(int *arity);
275 
276 void Pl_Set_Last_Syntax_Error(char *file_name, int err_line, int err_col,
277  char *err_msg);
278 
279 void Pl_Syntax_Error(int flag_value);
280 
281 void Pl_Unknown_Pred_Error(int func, int arity);
282 
283 void Pl_Os_Error(int ret_val);
284 
285 void Pl_Err_Instantiation(void);
286 
288 
289 void Pl_Err_Type(int atom_type, WamWord term);
290 
291 void Pl_Err_Domain(int atom_domain, WamWord term);
292 
293 void Pl_Err_Existence(int atom_object, WamWord term);
294 
295 void Pl_Err_Permission(int atom_oper, int atom_perm, WamWord term);
296 
297 void Pl_Err_Representation(int atom_flag);
298 
300 
301 void Pl_Err_Resource(int atom_resource);
302 
303 void Pl_Err_Syntax(int pl_atom_error);
304 
305 void Pl_Err_System(int pl_atom_error);
306 
307 #define Os_Test_Error_Null(tst) \
308  do { \
309  if ((tst) == NULL) \
310  { \
311  Pl_Os_Error(-1); \
312  return FALSE; \
313  } \
314  } while(0)
315 
316 
317 #define Os_Test_Error(tst) \
318  do { \
319  int _tst = (tst); \
320  if (_tst < 0) \
321  { \
322  Pl_Os_Error(_tst); \
323  return FALSE; \
324  } \
325  } while(0)
int pl_domain_io_mode
int pl_domain_stream_property
int pl_permission_type_static_procedure
int pl_domain_flag_value
int pl_permission_operation_output
int pl_representation_max_integer
int pl_resource_print_object_not_linked
int pl_domain_socket_domain
void Pl_Err_Existence(int atom_object, WamWord term)
Definition: error_supp.c:593
int pl_type_atom
int pl_domain_format_control_sequence
int pl_representation_in_character_code
int pl_domain_stream_or_alias
int pl_domain_read_option
int pl_permission_type_binary_stream
int pl_evluation_zero_divisor
int pl_evluation_int_overflow
int pl_representation_character_code
int pl_domain_g_argument_selector
int pl_domain_write_option
int pl_type_callable
void Pl_Set_Bip_Name_Untagged_2(int func, int arity)
Definition: error_supp.c:280
int pl_domain_character_code_list
int pl_evluation_undefined
int pl_domain_stream_option
int pl_type_predicate_indicator
int pl_type_variable
int pl_existence_stream
int pl_type_in_byte
int pl_permission_operation_open
int pl_type_in_character
int pl_type_fd_bool_evaluable
int pl_permission_operation_input
int pl_domain_not_less_than_zero
int pl_domain_stream_position
int pl_permission_type_past_end_of_stream
int pl_permission_type_stream
static char * err_msg
Definition: scan_supp.c:68
int pl_atom_error
void Pl_Os_Error(int ret_val)
Definition: error_supp.c:510
int pl_domain_selectable_item
int pl_type_fd_variable
int pl_representation_character
int pl_permission_operation_access
int pl_existence_source_sink
static PlLong ret_val
Definition: ctrl_c.c:71
int pl_domain_term_stream_or_alias
int pl_permission_operation_reposition
int pl_domain_close_option
void Pl_Set_Bip_Name_2(WamWord func_word, WamWord arity_word)
Definition: error_supp.c:256
void Pl_Err_Resource(int atom_resource)
Definition: error_supp.c:656
int pl_domain_source_sink
int pl_type_integer
int pl_permission_type_source_sink
void Pl_Unset_C_Bip_Name(void)
Definition: error_supp.c:329
int pl_type_character
int pl_representation_max_arity
int pl_domain_g_array_index
int pl_existence_sr_descriptor
void Pl_Err_Type(int atom_type, WamWord term)
Definition: error_supp.c:561
int pl_type_list
int pl_permission_type_private_procedure
int pl_permission_type_text_stream
int pl_domain_date_time
int pl_type_fd_evaluable
void Pl_Set_Last_Syntax_Error(char *file_name, int err_line, int err_col, char *err_msg)
Definition: error_supp.c:415
void Pl_Err_Syntax(int pl_atom_error)
Definition: error_supp.c:671
int pl_existence_procedure
void Pl_Err_Representation(int atom_flag)
Definition: error_supp.c:626
void Pl_Err_Evaluation(int pl_atom_error)
Definition: error_supp.c:641
int pl_representation_min_integer
int pl_evluation_float_overflow
int pl_type_number
void Pl_Unknown_Pred_Error(int func, int arity)
Definition: error_supp.c:483
int pl_domain_os_file_permission
int pl_type_pair
int pl_domain_prolog_flag
int pl_resource_too_big_fd_constraint
int pl_type_evaluable
int pl_permission_type_operator
int pl_permission_operation_close
void Pl_Err_Uninstantiation(WamWord term)
Definition: error_supp.c:546
int pl_domain_stream_seek_method
int pl_representation_too_many_variables
int Pl_Get_Current_Bip(int *arity)
Definition: error_supp.c:343
void Pl_Syntax_Error(int flag_value)
Definition: error_supp.c:455
int pl_type_byte
int pl_domain_operator_specifier
int pl_permission_operation_modify
int pl_domain_non_empty_list
long WamWord
Definition: LINUX_SIGSEGV.c:4
int resource_too_many_open_streams
void Pl_Err_Domain(int atom_domain, WamWord term)
Definition: error_supp.c:577
int pl_evluation_underflow
int pl_type_compound
int pl_type_boolean
int pl_type_float
int pl_domain_stream
int pl_permission_operation_create
void Pl_Err_Permission(int atom_oper, int atom_perm, WamWord term)
Definition: error_supp.c:609
int pl_type_atomic
void Pl_Err_System(int pl_atom_error)
Definition: error_supp.c:686
int pl_domain_os_path
int pl_domain_order
void Pl_Set_C_Bip_Name(char *func_str, int arity)
Definition: error_supp.c:315
int pl_domain_operator_priority
int pl_domain_socket_address
void Pl_Err_Instantiation(void)
Definition: error_supp.c:532
int pl_permission_type_flag