/* * io.h * * Communication between PSSE and the outside world, via libcurl. * * (c) 2019 Simon Brooke * Licensed under GPL version 2.0, or, at your option, any later version. */ #ifndef __psse_io_io_h #define __psse_io_io_h #include #include /* * wide characters */ #include #include "io/fopen.h" #include "memory/pointer.h" extern CURLSH *io_share; int initialise_io(); struct pso_pointer initialise_default_streams(struct pso_pointer frame_pointer, struct pso_pointer env); #define C_IO_IN L"*in*" #define C_IO_OUT L"*out*" #define C_IO_LOG L"*log*" #define C_IO_READBASE L"*read_base*" #define C_IO_READTABLE L"*read_table*" extern struct pso_pointer lisp_io_in; extern struct pso_pointer lisp_io_out; extern struct pso_pointer lisp_io_log; extern struct pso_pointer lisp_io_readbase; extern struct pso_pointer lisp_io_read_table; extern struct pso_pointer lisp_stdin; extern struct pso_pointer lisp_stdout; extern struct pso_pointer lisp_stderr; #define INITIAL_PROMPT L"psse ]" #define C_IO_PROMPT L"*prompt*" extern struct pso_pointer lisp_io_prompt; URL_FILE *file_to_url_file(FILE *f); wint_t url_fgetwc(URL_FILE *input); wint_t url_ungetwc(wint_t wc, URL_FILE *input); struct pso_pointer push_back_character(struct pso_pointer c, struct pso_pointer r); struct pso_pointer get_default_stream(bool inputp, struct pso_pointer env); URL_FILE *stream_get_url_file(struct pso_pointer s); struct pso_pointer lisp_close(struct pso_pointer frame_pointer); struct pso_pointer lisp_open(struct pso_pointer frame_pointer); struct pso_pointer lisp_slurp(struct pso_pointer frame_pointer); #endif