#ifndef KIio #define KIio /* * ~ lexi hale * this header declares IO primitive functions and * structures. it is the same for all platforms. * platform-specific code is found in the *.platform.h * files. */ #include typedef enum kiostream_kind { kiostream_closed, // this kiostream cannot be written to kiostream_file, // this kiostream represents a file kiostream_sock, // this kiostream is attached to a socket, // UNIX, IP, or otherwise kiostream_term, // this socket is being used to communicate // directly with a human being kiostream_ansi, // like kiostream_term, but can also understand // ANSI control codes kiostream_other // no fuckin idea } kiostream_kind; typedef struct kiostream { kiostream_kind kind; #include "kiostream.platform.h" } kiostream; typedef struct kiochan { kiostream in; // text can be read from this stream kiostream out; // text can be written to this stream } kiochan; unsigned long long kiosend(kiochan); // send data to a channel unsigned long long kiorecv(kiochan); // receive data from a channel typedef enum kiocond { kiocond_ok, // success kiocond_fail, // action failed } kiocond; #endif