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

extern int Qread_char;

extern int Qget_file_char;

extern int Qstandard_input;

extern int Qcurrent_load_list;

extern int Qvariable_documentation;

extern int Vvalues;

extern int Vstandard_input;

extern int Vafter_load_alist;

extern int Qascii_character;

extern int Qload;

extern int load_in_progress;

extern int Vload_path;

extern int Vload_history;

extern int Vcurrent_load_list;

extern int load_descriptor_list;

extern struct __iobuf * instream;

extern int read_pure;

extern int read_from_string_index;

extern int read_from_string_limit;

int readchar(int readcharfun);

void unreadchar(int readcharfun,
                int c);

int read_filtered_event(int no_switch_frame,
                        int ascii_required,
                        int error_nonascii);

extern struct Lisp_Subr Sread_char;

int Fread_char(void);

extern struct Lisp_Subr Sread_event;

int Fread_event(void);

extern struct Lisp_Subr Sread_char_exclusive;

int Fread_char_exclusive(void);

extern struct Lisp_Subr Sget_file_char;

int Fget_file_char(void);

extern struct Lisp_Subr Sload;

int Fload(int , int , int , int );

int load_unwind(int stream);

int load_descriptor_unwind(int oldlist);

void close_load_descs(void);

int complete_filename_p(int pathname);

int openp(int path,
          int str,
          char * suffix,
          int * storeptr,
          int exec_only);

void build_load_history(struct __iobuf * stream,
                        int source);

int unreadpure(void);

void readevalloop(int readcharfun,
                  struct __iobuf * stream,
                  int sourcename,
                  int (* evalfun)(),
                  int printflag);

extern struct Lisp_Subr Seval_buffer;

int Feval_buffer(int , int );

extern struct Lisp_Subr Seval_region;

int Feval_region(int , int , int );

extern struct Lisp_Subr Sread;

int Fread(int );

extern struct Lisp_Subr Sread_from_string;

int Fread_from_string(int , int , int );

int read0(int readcharfun);

extern int read_buffer_size;

extern char * read_buffer;

int read_escape(int readcharfun);

int read1(register int readcharfun);

int read_vector(int readcharfun);

int read_list(int flag,
              register int readcharfun);

extern int Vobarray;

extern int initial_obarray;

int check_obarray(int obarray);

int intern(char * str);

extern struct Lisp_Subr Sintern;

int Fintern(int , int );

extern struct Lisp_Subr Sintern_soft;

int Fintern_soft(int , int );

int oblookup(int obarray,
             register char * ptr,
             register int size);

int hash_string(unsigned char * ptr,
                int len);

void map_obarray(int obarray,
                 int (* fn)(),
                 int arg);

int mapatoms_1(int sym,
               int function);

extern struct Lisp_Subr Smapatoms;

int Fmapatoms(int , int );

void init_obarray(void);

void defsubr(struct Lisp_Subr * sname);

void defvar_int(char * namestring,
                int * address);

void defvar_bool(char * namestring,
                 int * address);

void defvar_lisp(char * namestring,
                 int * address);

void defvar_lisp_nopro(char * namestring,
                       int * address);

void defvar_per_buffer(char * namestring,
                       int * address,
                       int type,
                       char * doc);

int init_lread(void);

void syms_of_lread(void);

