/* * 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 env ); struct pso_pointer lisp_open( struct pso_pointer frame_pointer, struct pso_pointer env ); struct pso_pointer lisp_slurp( struct pso_pointer frame_pointer, struct pso_pointer env ); #endif