Update spec to require automake >= 1.13
[platform/upstream/gawk.git] / cmd.h
1 /*
2  * cmd.h - definitions for command parser
3  */
4
5 /* 
6  * Copyright (C) 2004, 2010, 2011, 2013, 2014 the Free Software Foundation, Inc.
7  * 
8  * This file is part of GAWK, the GNU implementation of the
9  * AWK Programming Language.
10  * 
11  * GAWK is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  * 
16  * GAWK is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  * 
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
24  */
25
26 #ifdef HAVE_LIBREADLINE
27 #include <readline/readline.h>
28 #include <readline/history.h>
29 extern char **command_completion(const char *text, int start, int end);
30 extern void initialize_pager(FILE *fp); /* debug.c */
31 extern NODE *get_function(void);
32 #else
33 #define initialize_pager(x)             /* nothing */
34 #define add_history(x)          /* nothing */
35 #endif
36
37 extern int gprintf(FILE *fp, const char *format, ...);
38 extern jmp_buf pager_quit_tag;
39 extern bool pager_quit_tag_valid;
40
41 extern bool output_is_tty;
42 extern int input_fd;
43 extern bool input_from_tty;
44 extern FILE *out_fp;
45 extern char *dbg_prompt;
46 extern char *commands_prompt;
47 extern char *eval_prompt;
48 extern char *dgawk_prompt;
49
50 enum argtype {
51         D_illegal,
52
53         /* commands */
54         D_backtrace,
55         D_break,
56         D_clear,
57         D_commands,
58         D_condition,
59         D_continue,
60         D_delete,
61         D_disable,
62         D_display,
63         D_down,
64         D_dump,
65         D_enable,
66         D_end,
67         D_eval,
68         D_finish,
69         D_frame,
70         D_help,
71         D_ignore,
72         D_info,
73         D_list,
74         D_next,
75         D_nexti,
76         D_option,
77         D_print,
78         D_printf,
79         D_quit,
80         D_return,
81         D_run,
82         D_save,
83         D_set,
84         D_silent,
85         D_source,
86         D_step,
87         D_stepi,
88         D_tbreak,
89         D_trace,
90         D_undisplay,
91         D_until,
92         D_unwatch,
93         D_up,
94         D_watch,
95
96         /* arguments */
97         D_argument,
98         D_int,
99         D_string,
100         D_variable,
101         D_node,
102         D_field,
103         D_array,
104         D_subscript,
105         D_func,
106         D_range
107 };
108
109 /* non-number arguments to commands */ 
110
111 enum nametypeval {
112         A_NONE = 0,
113         A_ARGS,
114         A_BREAK,
115         A_DEL,
116         A_DISPLAY,
117         A_FRAME,
118         A_FUNCTIONS,
119         A_LOCALS,
120         A_ONCE,
121         A_SOURCE,
122         A_SOURCES,
123         A_TRACE_ON,
124         A_TRACE_OFF,
125         A_VARIABLES,
126         A_WATCH
127 };
128
129 typedef struct cmd_argument {
130         struct cmd_argument *next;
131         enum argtype type;
132         union {
133                 long lval;
134                 char *sval;
135                 NODE *nodeval;
136         } value;
137
138 #define a_int       value.lval  /* type = D_int or D_range */ 
139 #define a_argument  value.lval  /* type = D_argument */
140 #define a_string  value.sval    /* type = D_string, D_array, D_subscript or D_variable */
141 #define a_node    value.nodeval /* type = D_node, D_field or D_func */
142
143         int a_count;            /* subscript count for D_subscript and D_array */
144 } CMDARG;
145
146 typedef int (*Func_cmd)(CMDARG *, int);
147
148 struct cmdtoken {
149         const char *name;
150         char *abbrvn;   /* abbreviation */
151         enum argtype type;
152         int class;
153         Func_cmd cf_ptr;
154         const char *help_txt;
155 };
156
157 /* command.c */
158 extern void free_cmdarg(CMDARG *list);
159 extern Func_cmd get_command(int ctype);
160 extern const char *get_command_name(int ctype);
161
162 /* debug.c */
163 extern void d_error(const char *mesg, ...);
164
165 /* command.c */
166 extern int find_option(char *name);
167 extern void option_help(void);
168 extern char *(*read_a_line)(const char *prompt);
169 extern char *read_commands_string(const char *prompt);
170 extern int in_cmd_src(const char *);
171 extern int get_eof_status(void);
172 extern void push_cmd_src(int fd, bool istty, char * (*readfunc)(const char *),
173                 int (*closefunc)(int), int cmd, int eofstatus);
174 extern int pop_cmd_src(void);
175 extern int has_break_or_watch_point(int *pnum, bool any);
176 extern int do_list(CMDARG *arg, int cmd);
177 extern int do_info(CMDARG *arg, int cmd);
178 extern int do_print_var(CMDARG *arg, int cmd);
179 extern int do_backtrace(CMDARG *arg, int cmd);
180 extern int do_breakpoint(CMDARG *arg, int cmd);
181 extern int do_tmp_breakpoint(CMDARG *arg, int cmd);
182 extern int do_delete_breakpoint(CMDARG *arg, int cmd);
183 extern int do_enable_breakpoint(CMDARG *arg, int cmd);
184 extern int do_disable_breakpoint(CMDARG *arg, int cmd) ;
185 extern int do_ignore_breakpoint(CMDARG *arg, int cmd) ;
186 extern int do_run(CMDARG *arg, int cmd);
187 extern int do_quit(CMDARG *arg, int cmd);
188 extern int do_continue(CMDARG *arg, int cmd);
189 extern int do_step(CMDARG *arg, int cmd) ;
190 extern int do_stepi(CMDARG *arg, int cmd) ;
191 extern int do_next(CMDARG *arg, int cmd);
192 extern int do_nexti(CMDARG *arg, int cmd);
193 extern int do_clear(CMDARG *arg, int cmd);
194 extern int do_finish(CMDARG *arg, int cmd) ;
195 extern int do_help(CMDARG *arg, int cmd) ;
196 extern int do_up(CMDARG *arg, int cmd);
197 extern int do_down(CMDARG *arg, int cmd);
198 extern int do_frame(CMDARG *arg, int cmd);
199 extern int do_until(CMDARG *arg, int cmd);
200 extern int do_set_var(CMDARG *arg, int cmd);
201 extern int do_return(CMDARG *arg, int cmd);
202 extern int do_display(CMDARG *arg, int cmd);
203 extern int do_undisplay(CMDARG *arg, int cmd);
204 extern int do_watch(CMDARG *arg, int cmd);
205 extern int do_unwatch(CMDARG *arg, int cmd);
206 extern int do_dump_instructions(CMDARG *arg, int cmd);
207 extern int do_trace_instruction(CMDARG *arg, int cmd);
208 extern int do_option(CMDARG *arg, int cmd);
209 extern int do_commands(CMDARG *arg, int cmd);
210 extern int do_print_f(CMDARG *arg, int cmd);
211 extern int do_source(CMDARG *arg, int cmd);
212 extern int do_save(CMDARG *arg, int cmd);
213 extern int do_eval(CMDARG *arg, int cmd);
214 extern int do_condition(CMDARG *arg, int cmd);