post-scarcity/src/c/io/io.h
2026-05-05 19:16:44 +01:00

67 lines
1.7 KiB
C

/*
* io.h
*
* Communication between PSSE and the outside world, via libcurl.
*
* (c) 2019 Simon Brooke <simon@journeyman.cc>
* Licensed under GPL version 2.0, or, at your option, any later version.
*/
#ifndef __psse_io_io_h
#define __psse_io_io_h
#include <curl/curl.h>
#include <stdbool.h>
/*
* wide characters
*/
#include <wctype.h>
#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