39 #ifndef picox_core_detail_xstream_h_ 40 #define picox_core_detail_xstream_h_ 94 typedef int (*
XStreamReadFunc)(
void* driver,
void* dst,
size_t size,
size_t* nread);
102 typedef int (*
XStreamWriteFunc)(
void* driver,
const void* src,
size_t size,
size_t* nwritten);
134 typedef const char* (*XStreamErrorStringFunc)(
int errcode);
180 #define X_STREAM_TAG (X_MAKE_TAG('X', 'S', 'T', 'R')) 197 #define X_MEMSTREAM_TAG (X_MAKE_TAG('X', 'M', 'M', 'S')) int xstream_read(XStream *self, void *dst, size_t size, size_t *nread)
ストリームからdstにsizeバイトの読み出しを試みます
Definition: xstream.c:72
int(* XStreamSeekFunc)(void *driver, XOffset offset, XSeekMode mode)
ストリームの現在位置を移動する関数ポインタ型です
Definition: xstream.h:109
int(* XStreamCloseFunc)(void *driver)
ストリームのフラッシュと、リソースの開放を行う関数ポインタ型です
Definition: xstream.h:129
int xstream_putc(XStream *self, int c)
cをunsigned charにキャストしてストリームに書き込みます
Definition: xstream.c:146
int xstream_seek(XStream *self, XOffset offset, XSeekMode mode)
ストリームの現在位置を移動します
Definition: xstream.c:112
int xstream_vprintf(XStream *self, const char *fmt, va_list args)
ストリームにvprintf形式の出力を行います
Definition: xstream.c:216
int(* XStreamWriteFunc)(void *driver, const void *src, size_t size, size_t *nwritten)
ストリームへの書き込み関数ポインタ型です
Definition: xstream.h:102
int xstream_tell(XStream *self, XSize *pos)
ストリームの現在位置をposに格納します
Definition: xstream.c:122
XTag tag
ストリームの識別ID
Definition: xstream.h:160
uint32_t XSize
何らかの大きさを表すのに十分なサイズを備えた符号なし整数型です
Definition: xstddef.h:251
int(* XStreamReadFunc)(void *driver, void *dst, size_t size, size_t *nread)
ストリームからの読み出し関数ポインタ型です
Definition: xstream.h:94
int xstream_write(XStream *self, const void *src, size_t size, size_t *nwritten)
ストリームにsrcからsizeバイトの書き込みを試みます
Definition: xstream.c:83
static XMemStream * x_memstream_cast(XStream *stream)
tagがXMemStreamと一致していなければNULLを返します
Definition: xstream.h:356
int xstream_error(const XStream *self)
最後のエラー値を返します
Definition: xstream.c:132
int(* XStreamSizeFunc)(void *driver, XSize *size)
ストリームのバイト数を取得する関数ポインタ型です
Definition: xstream.h:119
const char *(* XStreamErrorStringFunc)(int errcode)
ストリームが返したエラーステータスに対応する文字列を返す関数ポインタ型です
Definition: xstream.h:134
uint32_t XTag
何らかのIDを格納するための符号なし整数が型です
Definition: xstddef.h:269
const char * xstream_error_string(const XStream *self, int errcode)
エラー値の文字列表現を返します
Definition: xstream.c:139
int(* XStreamFlushFunc)(void *driver)
ストリームのバッファリングをフラッシュする関数ポインタ型です
Definition: xstream.h:124
int xstream_gets(XStream *self, char *dst, size_t size, char **result, bool *overflow)
ストリームから1行を取り出します
Definition: xstream.c:179
void * driver
Definition: xstream.h:163
int32_t XOffset
何らかのオフセットを表すのに十分な大きさをもった符号あり整数型です
Definition: xstddef.h:261
ストリームを表す抽象型です
Definition: xstream.h:152
int error
Definition: xstream.h:166
void xmemstream_init(XMemStream *self, void *mem, size_t size, size_t capacity)
メモリストリームを初期化します
Definition: xstream.c:223
int xstream_printf(XStream *self, const char *fmt,...)
ストリームにvprintf形式の出力を行います
Definition: xstream.c:206
int xstream_close(XStream *self)
ストリームの終了処理を行います
Definition: xstream.c:94
XSeekMode
シークの起点を指定する列挙型です
Definition: xstddef.h:340
int xstream_getc(XStream *self)
ストリームから1バイトを読みだし、intにキャストして返します
Definition: xstream.c:163
メモリに対して入出力を行うストリーム型です
Definition: xstream.h:184
int xstream_flush(XStream *self)
ストリームの終了処理を行います
Definition: xstream.c:103
int(* XStreamTellFunc)(void *driver, XSize *pos)
ストリームの現在位置を取得する関数ポインタ型です
Definition: xstream.h:114
#define X_MEMSTREAM_TAG
XMemStreamのタグです
Definition: xstream.h:196
void xstream_init(XStream *self)
ストリームの初期化を行います
Definition: xstream.c:56