/* Prototypes for functions defined in
eval.c
 */

extern struct backtrace * backtrace_list;

extern struct catchtag * catchlist;

extern int Qautoload;

extern int Qmacro;

extern int Qexit;

extern int Qinteractive;

extern int Qcommandp;

extern int Qdefun;

extern int Qinhibit_quit;

extern int Vinhibit_quit;

extern int Vquit_flag;

extern int Qmocklisp_arguments;

extern int Vmocklisp_arguments;

extern int Qmocklisp;

extern int Qand_rest;

extern int Qand_optional;

extern int Qdebug_on_error;

extern int Vrun_hooks;

extern int Vautoload_queue;

extern int specpdl_size;

extern struct specbinding * specpdl;

extern struct specbinding * specpdl_ptr;

extern int max_specpdl_size;

extern int lisp_eval_depth;

extern int max_lisp_eval_depth;

extern int debug_on_next_call;

extern int Vstack_trace_on_error;

extern int Vdebug_on_error;

extern int debug_on_quit;

extern int when_entered_debugger;

extern int Vdebugger;

int init_eval_once(void);

int init_eval(void);

int call_debugger(int arg);

int do_debug_on_call(int code);

extern struct Lisp_Subr Sor;

int For(int );

extern struct Lisp_Subr Sand;

int Fand(int );

extern struct Lisp_Subr Sif;

int Fif(int );

extern struct Lisp_Subr Scond;

int Fcond(int );

extern struct Lisp_Subr Sprogn;

int Fprogn(int );

extern struct Lisp_Subr Sprog1;

int Fprog1(int );

extern struct Lisp_Subr Sprog2;

int Fprog2(int );

extern struct Lisp_Subr Ssetq;

int Fsetq(int );

extern struct Lisp_Subr Squote;

int Fquote(int );

extern struct Lisp_Subr Sfunction;

int Ffunction(int );

extern struct Lisp_Subr Sinteractive_p;

int Finteractive_p(void);

extern struct Lisp_Subr Sdefun;

int Fdefun(int );

extern struct Lisp_Subr Sdefmacro;

int Fdefmacro(int );

extern struct Lisp_Subr Sdefvar;

int Fdefvar(int );

extern struct Lisp_Subr Sdefconst;

int Fdefconst(int );

extern struct Lisp_Subr Suser_variable_p;

int Fuser_variable_p(int );

extern struct Lisp_Subr SletX;

int FletX(int );

extern struct Lisp_Subr Slet;

int Flet(int );

extern struct Lisp_Subr Swhile;

int Fwhile(int );

extern struct Lisp_Subr Smacroexpand;

int Fmacroexpand(int , int );

extern struct Lisp_Subr Scatch;

int Fcatch(int );

int internal_catch(int tag,
                   int (* func)(),
                   int arg);

void unwind_to_catch(struct catchtag * catch,
                     int value);

extern struct Lisp_Subr Sthrow;

int Fthrow(int , int );

extern struct Lisp_Subr Sunwind_protect;

int Funwind_protect(int );

extern struct handler * handlerlist;

extern struct Lisp_Subr Scondition_case;

int Fcondition_case(int );

int internal_condition_case(int (* bfun)(),
                            int handlers,
                            int (* hfun)());

int internal_condition_case_1(int (* bfun)(),
                              int arg,
                              int handlers,
                              int (* hfun)());

extern struct Lisp_Subr Ssignal;

int Fsignal(int , int );

int wants_debugger(int list,
                   int conditions);

int find_handler_clause(int handlers,
                        int conditions,
                        int sig,
                        int data,
                        int * debugger_value_ptr);

void error(char * m, ...);
/*           char * a1,
           char * a2,
           char * a3);
	   */

extern struct Lisp_Subr Scommandp;

int Fcommandp(int );

extern struct Lisp_Subr Sautoload;

int Fautoload(int , int , int , int , int );

int un_autoload(int oldqueue);

int do_autoload(int fundef,
                int funname);

extern struct Lisp_Subr Seval;

int Feval(int );

extern struct Lisp_Subr Sapply;

int Fapply(int , int * );

int apply1(int fn,
           int arg);

int call0(int fn);

int call1(int fn,
          int arg1);

int call2(int fn,
          int arg1,
          int arg2);

int call3(int fn,
          int arg1,
          int arg2,
          int arg3);

int call4(int fn,
          int arg1,
          int arg2,
          int arg3,
          int arg4);

int call5(int fn,
          int arg1,
          int arg2,
          int arg3,
          int arg4,
          int arg5);

int call6(int fn,
          int arg1,
          int arg2,
          int arg3,
          int arg4,
          int arg5,
          int arg6);

extern struct Lisp_Subr Sfuncall;

int Ffuncall(int , int * );

int apply_lambda(int fun,
                 int args,
                 int eval_flag);

int funcall_lambda(int fun,
                   int nargs,
                   register int * arg_vector);

void grow_specpdl(void);

void specbind(int symbol,
              int value);

void record_unwind_protect(int (* function)(),
                           int arg);

int unbind_to(int count,
              int value);

extern struct Lisp_Subr Sbacktrace_debug;

int Fbacktrace_debug(int , int );

extern struct Lisp_Subr Sbacktrace;

int Fbacktrace(void);

extern struct Lisp_Subr Sbacktrace_frame;

int Fbacktrace_frame(int );

int syms_of_eval(void);

