added quite some code to handle byte string I/O
This commit is contained in:
@ -386,6 +386,7 @@ public:
|
||||
virtual int close (Pipe& io) = 0;
|
||||
virtual ssize_t read (Pipe& io, char_t* buf, size_t len) = 0;
|
||||
virtual ssize_t write (Pipe& io, const char_t* buf, size_t len) = 0;
|
||||
virtual ssize_t writeBytes (Pipe& io, const qse_mchar_t* buf, size_t len) = 0;
|
||||
virtual int flush (Pipe& io) = 0;
|
||||
};
|
||||
|
||||
@ -430,6 +431,7 @@ public:
|
||||
virtual int close (File& io) = 0;
|
||||
virtual ssize_t read (File& io, char_t* buf, size_t len) = 0;
|
||||
virtual ssize_t write (File& io, const char_t* buf, size_t len) = 0;
|
||||
virtual ssize_t writeBytes (File& io, const qse_mchar_t* buf, size_t len) = 0;
|
||||
virtual int flush (File& io) = 0;
|
||||
};
|
||||
|
||||
@ -493,6 +495,8 @@ public:
|
||||
/// for failure.
|
||||
virtual ssize_t write (Console& io, const char_t* buf, size_t len) = 0;
|
||||
|
||||
virtual ssize_t writeBytes (Console& io, const qse_mchar_t* buf, size_t len) = 0;
|
||||
|
||||
/// You may choose to buffer the data passed to the write()
|
||||
/// function and perform actual writing when flush() is called.
|
||||
/// It must return 0 for success and -1 for failure.
|
||||
@ -1282,6 +1286,7 @@ protected:
|
||||
|
||||
virtual ssize_t readPipe (Pipe& io, char_t* buf, size_t len);
|
||||
virtual ssize_t writePipe (Pipe& io, const char_t* buf, size_t len);
|
||||
virtual ssize_t writePipeBytes (Pipe& io, const qse_mchar_t* buf, size_t len);
|
||||
virtual int flushPipe (Pipe& io);
|
||||
/// \}
|
||||
|
||||
@ -1295,6 +1300,7 @@ protected:
|
||||
virtual int closeFile (File& io);
|
||||
virtual ssize_t readFile (File& io, char_t* buf, size_t len);
|
||||
virtual ssize_t writeFile (File& io, const char_t* buf, size_t len);
|
||||
virtual ssize_t writeFileBytes (File& io, const qse_mchar_t* buf, size_t len);
|
||||
virtual int flushFile (File& io);
|
||||
/// \}
|
||||
|
||||
@ -1308,6 +1314,7 @@ protected:
|
||||
virtual int closeConsole (Console& io);
|
||||
virtual ssize_t readConsole (Console& io, char_t* buf, size_t len);
|
||||
virtual ssize_t writeConsole (Console& io, const char_t* buf, size_t len);
|
||||
virtual ssize_t writeConsoleBytes (Console& io, const qse_mchar_t* buf, size_t len);
|
||||
virtual int flushConsole (Console& io);
|
||||
virtual int nextConsole (Console& io);
|
||||
/// \}
|
||||
@ -1330,13 +1337,13 @@ protected:
|
||||
|
||||
static ssize_t pipeHandler (
|
||||
rtx_t* rtx, rio_cmd_t cmd, rio_arg_t* riod,
|
||||
char_t* data, size_t count);
|
||||
void* data, size_t count);
|
||||
static ssize_t fileHandler (
|
||||
rtx_t* rtx, rio_cmd_t cmd, rio_arg_t* riod,
|
||||
char_t* data, size_t count);
|
||||
void* data, size_t count);
|
||||
static ssize_t consoleHandler (
|
||||
rtx_t* rtx, rio_cmd_t cmd, rio_arg_t* riod,
|
||||
char_t* data, size_t count);
|
||||
void* data, size_t count);
|
||||
|
||||
static int functionHandler (rtx_t* rtx, const fnc_info_t* fi);
|
||||
|
||||
|
@ -133,6 +133,7 @@ protected:
|
||||
int closePipe (Pipe& io);
|
||||
ssize_t readPipe (Pipe& io, char_t* buf, size_t len);
|
||||
ssize_t writePipe (Pipe& io, const char_t* buf, size_t len);
|
||||
ssize_t writePipeBytes (Pipe& io, const qse_mchar_t* buf, size_t len);
|
||||
int flushPipe (Pipe& io);
|
||||
|
||||
// file io handlers
|
||||
@ -140,6 +141,7 @@ protected:
|
||||
int closeFile (File& io);
|
||||
ssize_t readFile (File& io, char_t* buf, size_t len);
|
||||
ssize_t writeFile (File& io, const char_t* buf, size_t len);
|
||||
ssize_t writeFileBytes (File& io, const qse_mchar_t* buf, size_t len);
|
||||
int flushFile (File& io);
|
||||
|
||||
// console io handlers
|
||||
@ -147,6 +149,7 @@ protected:
|
||||
int closeConsole (Console& io);
|
||||
ssize_t readConsole (Console& io, char_t* buf, size_t len);
|
||||
ssize_t writeConsole (Console& io, const char_t* buf, size_t len);
|
||||
ssize_t writeConsoleBytes (Console& io, const qse_mchar_t* buf, size_t len);
|
||||
int flushConsole (Console& io);
|
||||
int nextConsole (Console& io);
|
||||
|
||||
|
@ -586,13 +586,15 @@ typedef qse_ssize_t (*qse_awk_sio_impl_t) (
|
||||
*/
|
||||
enum qse_awk_rio_cmd_t
|
||||
{
|
||||
QSE_AWK_RIO_OPEN = 0, /**< open a stream */
|
||||
QSE_AWK_RIO_CLOSE = 1, /**< close a stream */
|
||||
QSE_AWK_RIO_READ = 2, /**< read a stream */
|
||||
QSE_AWK_RIO_WRITE = 3, /**< write to a stream */
|
||||
QSE_AWK_RIO_FLUSH = 4, /**< flush buffered data to a stream */
|
||||
QSE_AWK_RIO_NEXT = 5 /**< close the current stream and
|
||||
open the next stream (only for console) */
|
||||
QSE_AWK_RIO_OPEN = 0, /**< open a stream */
|
||||
QSE_AWK_RIO_CLOSE = 1, /**< close a stream */
|
||||
QSE_AWK_RIO_READ = 2, /**< read a stream */
|
||||
QSE_AWK_RIO_WRITE = 3, /**< write to a stream */
|
||||
/*QSE_AWK_RIO_READ_BYTES = 4,*/
|
||||
QSE_AWK_RIO_WRITE_BYTES = 5,
|
||||
QSE_AWK_RIO_FLUSH = 6, /**< flush buffered data to a stream */
|
||||
QSE_AWK_RIO_NEXT = 7 /**< close the current stream and
|
||||
open the next stream (only for console) */
|
||||
};
|
||||
typedef enum qse_awk_rio_cmd_t qse_awk_rio_cmd_t;
|
||||
|
||||
@ -644,7 +646,7 @@ struct qse_awk_rio_arg_t
|
||||
|
||||
/* read-write. a user handler can do whatever it likes to do with these. */
|
||||
void* handle; /**< I/O handle set by a handler */
|
||||
int uflags; /**< flags set by a handler */
|
||||
int uflags; /**< user-flags set by a handler */
|
||||
|
||||
/*-- from here down, internal use only --*/
|
||||
int type;
|
||||
@ -676,7 +678,7 @@ typedef qse_ssize_t (*qse_awk_rio_impl_t) (
|
||||
qse_awk_rtx_t* rtx,
|
||||
qse_awk_rio_cmd_t cmd,
|
||||
qse_awk_rio_arg_t* arg,
|
||||
qse_char_t* data,
|
||||
void* data,
|
||||
qse_size_t count
|
||||
);
|
||||
|
||||
|
@ -214,6 +214,12 @@ QSE_EXPORT qse_ssize_t qse_nwio_write (
|
||||
qse_size_t size
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_ssize_t qse_nwio_writebytes (
|
||||
qse_nwio_t* nwio,
|
||||
const void* data,
|
||||
qse_size_t size
|
||||
);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
@ -365,6 +365,13 @@ QSE_EXPORT qse_ssize_t qse_pio_write (
|
||||
qse_size_t size /**< data size */
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_ssize_t qse_pio_writebytes (
|
||||
qse_pio_t* pio, /**< pio object */
|
||||
qse_pio_hid_t hid, /**< handle ID */
|
||||
const void* data, /**< data to write */
|
||||
qse_size_t size /**< data size */
|
||||
);
|
||||
|
||||
/**
|
||||
* The qse_pio_flush() flushes buffered data if #QSE_PIO_TEXT has been
|
||||
* specified to qse_pio_open() and qse_pio_init().
|
||||
|
Reference in New Issue
Block a user