aboutsummaryrefslogtreecommitdiffstats
path: root/cmd.h
diff options
context:
space:
mode:
Diffstat (limited to 'cmd.h')
-rw-r--r--cmd.h212
1 files changed, 212 insertions, 0 deletions
diff --git a/cmd.h b/cmd.h
new file mode 100644
index 00000000..d40d3e32
--- /dev/null
+++ b/cmd.h
@@ -0,0 +1,212 @@
+/*
+ * cmd.h - definitions for command parser
+ */
+
+/*
+ * Copyright (C) 2004, 2010 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#ifdef HAVE_LIBREADLINE
+#include <readline/readline.h>
+#include <readline/history.h>
+extern char **command_completion(const char *text, int start, int end);
+extern void initialize_pager(FILE *fp); /* debug.c */
+extern NODE **get_varlist(void);
+extern char **get_parmlist(void);
+#else
+#define initialize_pager(x) /* nothing */
+#define add_history(x) /* nothing */
+#endif
+
+extern int gprintf(FILE *fp, const char *format, ...);
+extern jmp_buf pager_quit_tag;
+
+extern int output_is_tty;
+extern int input_fd;
+extern int input_from_tty;
+extern FILE *out_fp;
+extern char *dPrompt;
+extern char *commands_Prompt;
+extern char *eval_Prompt;
+extern char *dgawk_Prompt;
+
+enum argtype {
+ D_illegal,
+
+ /* commands */
+ D_backtrace,
+ D_break,
+ D_clear,
+ D_commands,
+ D_condition,
+ D_continue,
+ D_delete,
+ D_disable,
+ D_display,
+ D_down,
+ D_dump,
+ D_enable,
+ D_end,
+ D_eval,
+ D_finish,
+ D_frame,
+ D_help,
+ D_ignore,
+ D_info,
+ D_list,
+ D_next,
+ D_nexti,
+ D_option,
+ D_print,
+ D_printf,
+ D_quit,
+ D_return,
+ D_run,
+ D_save,
+ D_set,
+ D_silent,
+ D_source,
+ D_step,
+ D_stepi,
+ D_tbreak,
+ D_trace,
+ D_undisplay,
+ D_until,
+ D_unwatch,
+ D_up,
+ D_watch,
+
+ /* arguments */
+ D_argument,
+ D_int,
+ D_string,
+ D_variable,
+ D_node,
+ D_field,
+ D_array,
+ D_subscript,
+ D_func,
+ D_range
+};
+
+/* non-number arguments to commands */
+
+enum nametypeval {
+ A_ARGS = 1,
+ A_BREAK,
+ A_DEL,
+ A_DISPLAY,
+ A_FRAME,
+ A_FUNCTIONS,
+ A_LOCALS,
+ A_ONCE,
+ A_SOURCE,
+ A_SOURCES,
+ A_TRACE_ON,
+ A_TRACE_OFF,
+ A_VARIABLES,
+ A_WATCH
+};
+
+typedef struct cmd_argument {
+ struct cmd_argument *next;
+ enum argtype type;
+ union {
+ long lval;
+ char *sval;
+ NODE *nodeval;
+ } value;
+
+#define a_int value.lval /* type = D_int or D_range */
+#define a_argument value.lval /* type = D_argument */
+#define a_string value.sval /* type = D_string, D_array, D_subscript or D_variable */
+#define a_node value.nodeval /* type = D_node, D_field or D_func */
+
+ int a_count; /* subscript count for D_subscript and D_array */
+} CMDARG;
+
+typedef int (*Func_cmd)(CMDARG *, int);
+
+struct cmdtoken {
+ const char *name;
+ char *abbrvn; /* abbreviation */
+ enum argtype type;
+ int class;
+ Func_cmd cf_ptr;
+ const char *help_txt;
+};
+
+/* command.c */
+extern void free_cmdarg(CMDARG *list);
+extern Func_cmd get_command(int ctype);
+extern const char *get_command_name(int ctype);
+
+/* debug.c */
+extern void d_error(const char *mesg, ...);
+
+/* command.c */
+extern int find_option(char *name);
+extern void option_help(void);
+extern char *(*read_a_line)(const char *prompt);
+extern char *read_commands_string(const char *prompt);
+extern int in_cmd_src(const char *);
+extern int get_eof_status(void);
+extern void push_cmd_src(int fd, int istty, char * (*readfunc)(const char *), int (*closefunc)(int), int cmd, int eofstatus);
+extern int pop_cmd_src(void);
+extern int has_break_or_watch_point(int *pnum, int any);
+extern int do_list(CMDARG *arg, int cmd);
+extern int do_info(CMDARG *arg, int cmd);
+extern int do_print_var(CMDARG *arg, int cmd);
+extern int do_backtrace(CMDARG *arg, int cmd);
+extern int do_breakpoint(CMDARG *arg, int cmd);
+extern int do_tmp_breakpoint(CMDARG *arg, int cmd);
+extern int do_delete_breakpoint(CMDARG *arg, int cmd);
+extern int do_enable_breakpoint(CMDARG *arg, int cmd);
+extern int do_disable_breakpoint(CMDARG *arg, int cmd) ;
+extern int do_ignore_breakpoint(CMDARG *arg, int cmd) ;
+extern int do_run(CMDARG *arg, int cmd);
+extern int do_quit(CMDARG *arg, int cmd);
+extern int do_continue(CMDARG *arg, int cmd);
+extern int do_step(CMDARG *arg, int cmd) ;
+extern int do_stepi(CMDARG *arg, int cmd) ;
+extern int do_next(CMDARG *arg, int cmd);
+extern int do_nexti(CMDARG *arg, int cmd);
+extern int do_clear(CMDARG *arg, int cmd);
+extern int do_finish(CMDARG *arg, int cmd) ;
+extern int do_help(CMDARG *arg, int cmd) ;
+extern int do_up(CMDARG *arg, int cmd);
+extern int do_down(CMDARG *arg, int cmd);
+extern int do_frame(CMDARG *arg, int cmd);
+extern int do_until(CMDARG *arg, int cmd);
+extern int do_set_var(CMDARG *arg, int cmd);
+extern int do_return(CMDARG *arg, int cmd);
+extern int do_display(CMDARG *arg, int cmd);
+extern int do_undisplay(CMDARG *arg, int cmd);
+extern int do_watch(CMDARG *arg, int cmd);
+extern int do_unwatch(CMDARG *arg, int cmd);
+extern int do_dump_instructions(CMDARG *arg, int cmd);
+extern int do_trace_instruction(CMDARG *arg, int cmd);
+extern int do_option(CMDARG *arg, int cmd);
+extern int do_commands(CMDARG *arg, int cmd);
+extern int do_print_f(CMDARG *arg, int cmd);
+extern int do_source(CMDARG *arg, int cmd);
+extern int do_save(CMDARG *arg, int cmd);
+extern int do_eval(CMDARG *arg, int cmd);
+extern int do_condition(CMDARG *arg, int cmd);