29 #define DISABLE_DEBUGLOG
36 #include <gwenhywfar/misc.h>
37 #include <gwenhywfar/debug.h>
60 sio->typeName=strdup(typeName);
70 assert(sio->refCount);
78 assert(sio->refCount);
79 if (sio->refCount==1) {
96 assert(sio->refCount);
98 return sio->connectFn(sio);
107 assert(sio->refCount);
108 if (sio->disconnectFn)
109 return sio->disconnectFn(sio);
118 assert(sio->refCount);
120 return sio->flushFn(sio);
131 assert(sio->refCount);
133 return sio->readFn(sio, buffer, size);
141 const uint8_t *buffer,
144 assert(sio->refCount);
146 return sio->writeFn(sio, buffer, size);
155 assert(sio->refCount);
163 assert(sio->refCount);
171 assert(sio->refCount);
179 assert(sio->refCount);
187 assert(sio->refCount);
195 assert(sio->refCount);
203 assert(sio->refCount);
204 return sio->typeName;
211 assert(sio->refCount);
221 assert(sio->refCount);
225 if (baseIo->typeName && strcasecmp(baseIo->typeName, typeName)==0)
227 baseIo=baseIo->baseIo;
239 assert(sio->refCount);
251 assert(sio->refCount);
252 of=sio->disconnectFn;
253 sio->disconnectFn=fn;
263 assert(sio->refCount);
275 assert(sio->refCount);
287 assert(sio->refCount);
296 const uint8_t *buffer,
int GWEN_SyncIo_WriteForced(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
GWENHYWFAR_API int64_t GWEN_SyncIo_File_Seek(GWEN_SYNCIO *sio, int64_t pos, GWEN_SYNCIO_FILE_WHENCE whence)
int GWEN_SyncIo_Connect(GWEN_SYNCIO *sio)
int GWEN_SyncIo_Helper_PartiallyReadFile(const char *fName, uint8_t *buffer, uint32_t size)
void GWEN_SyncIo_SubFlags(GWEN_SYNCIO *sio, uint32_t fl)
int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size)
#define GWEN_INHERIT_FINI(t, element)
uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf)
#define GWEN_SYNCIO_FILE_FLAGS_READ
int GWEN_SyncIo_Read(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
GWENHYWFAR_CB int(* GWEN_SYNCIO_FLUSH_FN)(GWEN_SYNCIO *sio)
GWEN_SYNCIO_WRITE_FN GWEN_SyncIo_SetWriteFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_WRITE_FN fn)
#define GWEN_FREE_OBJECT(varname)
GWEN_SYNCIO_CONNECT_FN GWEN_SyncIo_SetConnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_CONNECT_FN fn)
int GWEN_SyncIo_Helper_ReadFile(const char *fName, GWEN_BUFFER *dbuf)
uint32_t GWEN_SyncIo_GetFlags(const GWEN_SYNCIO *sio)
int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf)
int GWEN_SyncIo_Buffered_ReadLinesToStringList(GWEN_SYNCIO *sio, int maxLines, GWEN_STRINGLIST *sl)
void GWEN_SyncIo_SetStatus(GWEN_SYNCIO *sio, GWEN_SYNCIO_STATUS st)
#define GWEN_ERROR_BROKEN_PIPE
GWEN_SYNCIO * GWEN_SyncIo_GetBaseIo(const GWEN_SYNCIO *sio)
char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
GWENHYWFAR_CB int(* GWEN_SYNCIO_READ_FN)(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i)
#define GWEN_ERROR_INTERRUPTED
GWENHYWFAR_CB int(* GWEN_SYNCIO_WRITE_FN)(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
int GWEN_SyncIo_WriteLine(GWEN_SYNCIO *sio, const char *s)
GWEN_SYNCIO_FLUSH_FN GWEN_SyncIo_SetFlushFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_FLUSH_FN fn)
#define GWEN_NEW_OBJECT(typ, varname)
struct GWEN_SYNCIO GWEN_SYNCIO
GWEN_SYNCIO * GWEN_SyncIo_Buffered_new(GWEN_SYNCIO *baseIo)
int GWEN_SyncIo_Helper_ReadFileToStringList(const char *fname, int maxLines, GWEN_STRINGLIST *sl)
GWENHYWFAR_CB int(* GWEN_SYNCIO_CONNECT_FN)(GWEN_SYNCIO *sio)
int GWEN_SyncIo_ReadForced(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
GWEN_SYNCIO_STATUS GWEN_SyncIo_GetStatus(const GWEN_SYNCIO *sio)
#define GWEN_INHERIT_INIT(t, element)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
GWEN_SYNCIO * GWEN_SyncIo_GetBaseIoByTypeName(const GWEN_SYNCIO *sio, const char *typeName)
void GWEN_SyncIo_free(GWEN_SYNCIO *sio)
void GWEN_SyncIo_AddFlags(GWEN_SYNCIO *sio, uint32_t fl)
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_CB int(* GWEN_SYNCIO_DISCONNECT_FN)(GWEN_SYNCIO *sio)
int GWEN_SyncIo_WriteString(GWEN_SYNCIO *sio, const char *s)
int GWEN_SyncIo_Disconnect(GWEN_SYNCIO *sio)
void GWEN_SyncIo_SetFlags(GWEN_SYNCIO *sio, uint32_t fl)
GWEN_SYNCIO * GWEN_SyncIo_new(const char *typeName, GWEN_SYNCIO *baseIo)
GWEN_SYNCIO_DISCONNECT_FN GWEN_SyncIo_SetDisconnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_DISCONNECT_FN fn)
#define DBG_INFO(dbg_logger, format, args...)
#define GWEN_SYNCIO_FLAGS_DOSMODE
const char * GWEN_SyncIo_GetTypeName(const GWEN_SYNCIO *sio)
#define GWEN_LIST_INIT(t, element)
int GWEN_SyncIo_Write(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
GWENHYWFAR_API GWEN_SYNCIO * GWEN_SyncIo_File_new(const char *path, GWEN_SYNCIO_FILE_CREATIONMODE cm)
GWEN_SYNCIO_READ_FN GWEN_SyncIo_SetReadFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_READ_FN fn)
#define GWEN_LIST_FUNCTIONS(t, pr)
void GWEN_SyncIo_Attach(GWEN_SYNCIO *sio)
#define GWEN_LIST_FINI(t, element)
#define GWEN_INHERIT_FUNCTIONS(t)
int GWEN_SyncIo_Flush(GWEN_SYNCIO *sio)
int GWEN_SyncIo_WriteChar(GWEN_SYNCIO *sio, char s)