#include <gwenhywfar/iolayer.h>#include <gwenhywfar/buffer.h>Go to the source code of this file.
| #define GWEN_FAST_BUFFER_FLAGS_DOSMODE 0x00000001 |
Definition at line 22 of file fastbuffer.h.
Referenced by GWEN_DB_ReadFromIo(), and GWEN_DB_WriteToIo().
| #define GWEN_FASTBUFFER_COPYBYTES | ( | fb1, | |||
| fb2, | |||||
| var, | |||||
| len | ) |
Copy a number of bytes from one buffer to another one.
| fb1 | source fast buffer | |
| fb2 | destination fast buffer | |
| var | variable to receive the result (<0: error code, number of bytes read otherwise) | |
| len | number of bytes to copy |
Definition at line 446 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_COPYFORCED | ( | fb1, | |||
| fb2, | |||||
| var, | |||||
| p, | |||||
| len | ) |
Value:
{\
int fb_copyforced_len;\
uint8_t *fb_copyforced_p;\
\
fb_copyforced_len=len;\
fb_copyforced_p=(uint8_t*)p;\
var=0;\
while(fb_copyforced_len && var==0) {\
int fb_copyforced_rv;\
\
GWEN_FASTBUFFER_COPYBYTES(fb1, fb2, fb_copyforced_rv, fb_copyforced_p, fb_copyforced_len);\
if (fb_copyforced_rv<0) {\
var=fb_copyforced_rv;\
break;\
}\
else if (fb_copyforced_rv==0)\
var=GWEN_ERROR_EOF;\
else {\
fb_len-=fb_copyforced_rv;\
fb_p+=fb_copyforced_rv;\
}\
}\
}
| fb1 | source fast buffer | |
| fb2 | destination fast buffer | |
| var | variable to receive the result (<0: error code, 0 on success) | |
| p | pointer to the location to write the bytes from | |
| len | number of bytes to copy |
Definition at line 491 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_FLUSH | ( | fb, | |||
| var | ) |
Value:
{\
int fb_flush_rv; \
\
fb_flush_rv=GWEN_Io_Layer_WriteBytes(fb->io, fb->buffer, fb->bufferWritePos, \
GWEN_IO_REQUEST_FLAGS_WRITEALL | GWEN_IO_REQUEST_FLAGS_FLUSH, \
fb->guiid, fb->msecs); \
if (fb_flush_rv<fb->bufferWritePos) { \
DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", fb_flush_rv); \
var=fb_flush_rv; \
} \
else { \
var=0; \
fb->bufferWritePos=0; \
} \
}
Definition at line 166 of file fastbuffer.h.
Referenced by GWEN_DB_WriteToFastBuffer(), GWEN_DB_WriteToIo(), and GWEN_XMLNode_WriteToStream().
| #define GWEN_FASTBUFFER_PEEKBYTE | ( | fb, | |||
| var | ) |
Value:
{\
if (fb->bufferReadPos>=fb->bufferWritePos) { \
int fb_peekbyte_rv; \
\
fb_peekbyte_rv=GWEN_Io_Layer_ReadBytes(fb->io, fb->buffer, fb->bufferSize, 0, \
fb->guiid, fb->msecs); \
if (fb_peekbyte_rv<0) { \
DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", fb_peekbyte_rv); \
var=fb_peekbyte_rv; \
} \
else { \
fb->bufferWritePos=fb_peekbyte_rv; \
fb->bufferReadPos=0; \
var=fb->buffer[fb->bufferReadPos]; \
} \
} \
else { \
var=fb->buffer[fb->bufferReadPos]; \
} \
}
Definition at line 82 of file fastbuffer.h.
Referenced by GWEN_XML__ReadData(), GWEN_XML__ReadTag(), and GWEN_XML_ReadFromFastBuffer().
| #define GWEN_FASTBUFFER_READBYTE | ( | fb, | |||
| var | ) |
Value:
{\
if (fb->bufferReadPos>=fb->bufferWritePos) { \
int fb_readbyte_rv; \
\
fb_readbyte_rv=GWEN_Io_Layer_ReadBytes(fb->io, fb->buffer, fb->bufferSize, 0,\
fb->guiid, fb->msecs); \
if (fb_readbyte_rv<0) { \
DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", fb_readbyte_rv); \
var=fb_readbyte_rv; \
} \
else { \
fb->bufferWritePos=fb_readbyte_rv; \
fb->bufferReadPos=0; \
var=fb->buffer[fb->bufferReadPos++]; \
fb->bytesRead++; \
} \
} \
else { \
var=fb->buffer[fb->bufferReadPos++]; \
fb->bytesRead++; \
} \
}
Definition at line 108 of file fastbuffer.h.
Referenced by GWEN_XML__ReadTag().
| #define GWEN_FASTBUFFER_READBYTES | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Value:
{ \
int fb_readbyte_bytes;\
\
var=0; \
if (fb->bufferReadPos>=fb->bufferWritePos) { \
int fb_readbyte_rv; \
\
fb_readbyte_rv=GWEN_Io_Layer_ReadBytes(fb->io, fb->buffer, fb->bufferSize, 0, fb->guiid, fb->msecs); \
if (fb_readbyte_rv<0) { \
DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", fb_readbyte_rv); \
var=fb_readbyte_rv; \
} \
else {\
fb->bufferWritePos=fb_readbyte_rv; \
fb->bufferReadPos=0; \
}\
}\
if (var==0) {\
fb_readbyte_bytes=fb->bufferWritePos-fb->bufferReadPos;\
if (fb_readbyte_bytes>len)\
fb_readbyte_bytes=len;\
if (fb_readbyte_bytes) {\
memmove(p, fb->buffer+fb->bufferReadPos, fb_readbyte_bytes);\
fb->bufferReadPos+=fb_readbyte_bytes;\
fb->bytesRead+=fb_readbyte_bytes; \
}\
var=fb_readbyte_bytes;\
}\
}
| fb | fast buffer | |
| var | variable to receive the result (<0: error code, number of bytes read otherwise) | |
| p | pointer to the location to read the bytes to | |
| len | number of bytes to read |
Definition at line 190 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_READFORCED | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Value:
{\
int fb_readforced_len;\
uint8_t *fb_readforced_p;\
\
fb_readforced_len=len;\
fb_readforced_p=(uint8_t*)p;\
var=0;\
while(fb_readforced_len && var==0) {\
int fb_readforced_rv;\
\
GWEN_FASTBUFFER_READBYTES(fb, fb_readforced_rv, fb_readforced_p, fb_readforced_len);\
if (fb_readforced_rv<0) {\
var=fb_readforced_rv;\
break;\
}\
else if (fb_readforced_rv==0) {\
var=GWEN_ERROR_EOF;\
break;\
}\
else {\
fb_readforced_len-=fb_readforced_rv;\
fb_readforced_p+=fb_readforced_rv;\
}\
}\
}
Definition at line 308 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_READLINE | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Definition at line 222 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_READLINEFORCED | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Definition at line 271 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_WRITEBYTE | ( | fb, | |||
| var, | |||||
| chr | ) |
Value:
{\
if (fb->bufferWritePos>=fb->bufferSize) { \
int fb_writeByte_rv; \
\
fb_writeByte_rv=GWEN_Io_Layer_WriteBytes(fb->io, fb->buffer, fb->bufferWritePos, \
GWEN_IO_REQUEST_FLAGS_WRITEALL, \
fb->guiid, fb->msecs); \
if (fb_writeByte_rv<fb->bufferWritePos) { \
DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", fb_writeByte_rv); \
var=fb_writeByte_rv; \
} \
else { \
var=0; \
fb->bufferWritePos=0; \
fb->buffer[fb->bufferWritePos++]=chr; \
fb->bytesWritten++; \
} \
} \
else { \
var=0; \
fb->buffer[fb->bufferWritePos++]=chr; \
fb->bytesWritten++; \
} \
}
Definition at line 136 of file fastbuffer.h.
Referenced by GWEN_DB_WriteGroupToIoLayer(), and GWEN_XMLNode__WriteToStream().
| #define GWEN_FASTBUFFER_WRITEBYTES | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Write a number of bytes to the buffer and stores it at the given memory location.
| fb | fast buffer | |
| var | variable to receive the result (<0: error code, number of bytes read otherwise) | |
| p | pointer to the location to write the bytes from | |
| len | number of bytes to write |
Definition at line 343 of file fastbuffer.h.
| #define GWEN_FASTBUFFER_WRITEFORCED | ( | fb, | |||
| var, | |||||
| p, | |||||
| len | ) |
Value:
{\
int fb_writeforced_len;\
const uint8_t *fb_writeforced_p;\
\
fb_writeforced_len=len;\
if (fb_writeforced_len==-1) \
fb_writeforced_len=strlen((const char*)p);\
fb_writeforced_p=(const uint8_t*)p;\
var=0;\
while(fb_writeforced_len && var==0) {\
int fb_writeforced_rv;\
\
GWEN_FASTBUFFER_WRITEBYTES(fb, fb_writeforced_rv, fb_writeforced_p, fb_writeforced_len);\
if (fb_writeforced_rv<0) {\
var=fb_writeforced_rv;\
break;\
}\
else if (fb_writeforced_rv==0) {\
var=GWEN_ERROR_EOF;\
break;\
}\
else {\
fb_writeforced_len-=fb_writeforced_rv;\
fb_writeforced_p+=fb_writeforced_rv;\
}\
}\
}
| fb | fast buffer | |
| var | variable to receive the result (<0: error code, 0 on success) | |
| p | pointer to the location to write the bytes from | |
| len | number of bytes to write |
Definition at line 386 of file fastbuffer.h.
Referenced by GWEN_DB_WriteGroupToIoLayer(), and GWEN_XMLNode__WriteToStream().
| #define GWEN_FASTBUFFER_WRITELINE | ( | fb, | |||
| var, | |||||
| p | ) |
Value:
{\
int fb_writeline_rv;\
int fb_writeline_len=strlen((const char*)p);\
\
GWEN_FASTBUFFER_WRITEFORCED(fb, fb_writeline_rv, p, fb_writeline_len);\
if (fb_writeline_rv<0)\
var=fb_writeline_rv;\
else {\
if (fb->flags & GWEN_FAST_BUFFER_FLAGS_DOSMODE) {\
GWEN_FASTBUFFER_WRITEFORCED(fb, fb_writeline_rv, "\r\n", 2);\
}\
else {\
GWEN_FASTBUFFER_WRITEFORCED(fb, fb_writeline_rv, "\n", 1);\
}\
if (fb_writeline_rv<0)\
var=fb_writeline_rv;\
else\
var=0;\
}\
}
Definition at line 416 of file fastbuffer.h.
Referenced by GWEN_DB_WriteGroupToIoLayer(), GWEN_XMLNode__WriteToStream(), and GWEN_XMLNode_WriteToStream().
| GWENHYWFAR_API void GWEN_FastBuffer_AddFlags | ( | GWEN_FAST_BUFFER * | fb, | |
| uint32_t | fl | |||
| ) |
Definition at line 172 of file fastbuffer.c.
References GWEN_FAST_BUFFER::flags.
Referenced by GWEN_DB_ReadFromIo(), and GWEN_DB_WriteToIo().
| GWENHYWFAR_API void GWEN_FastBuffer_free | ( | GWEN_FAST_BUFFER * | fb | ) |
Definition at line 48 of file fastbuffer.c.
References GWEN_FREE_OBJECT.
Referenced by GWEN_DB_ReadFromIo(), GWEN_DB_WriteToIo(), GWEN_XML__ReadAllFromIo(), GWEN_XML_ReadFromIo(), and GWEN_XMLNode_WriteToStream().
| GWENHYWFAR_API uint32_t GWEN_FastBuffer_GetBytesRead | ( | const GWEN_FAST_BUFFER * | fb | ) |
| GWENHYWFAR_API uint32_t GWEN_FastBuffer_GetBytesWritten | ( | const GWEN_FAST_BUFFER * | fb | ) |
| GWENHYWFAR_API uint32_t GWEN_FastBuffer_GetFlags | ( | const GWEN_FAST_BUFFER * | fb | ) |
| GWENHYWFAR_API GWEN_FAST_BUFFER* GWEN_FastBuffer_new | ( | uint32_t | bsize, | |
| GWEN_IO_LAYER * | io, | |||
| uint32_t | guiid, | |||
| int | msecs | |||
| ) |
Definition at line 27 of file fastbuffer.c.
References GWEN_FAST_BUFFER::bufferSize, GWEN_FAST_BUFFER::guiid, GWEN_FAST_BUFFER::io, and GWEN_FAST_BUFFER::msecs.
Referenced by GWEN_DB_ReadFromIo(), GWEN_DB_WriteToIo(), GWEN_XML__ReadAllFromIo(), GWEN_XML_ReadFromIo(), and GWEN_XMLNode_WriteToStream().
| GWENHYWFAR_API int GWEN_FastBuffer_ReadLine | ( | GWEN_FAST_BUFFER * | fb, | |
| uint8_t * | p, | |||
| int | len | |||
| ) |
Definition at line 56 of file fastbuffer.c.
References GWEN_FAST_BUFFER::buffer, GWEN_FAST_BUFFER::bufferReadPos, GWEN_FAST_BUFFER::bufferSize, GWEN_FAST_BUFFER::bufferWritePos, GWEN_FAST_BUFFER::bytesRead, DBG_DEBUG, GWEN_FAST_BUFFER::guiid, GWEN_Io_Layer_ReadBytes(), GWEN_LOGDOMAIN, GWEN_FAST_BUFFER::io, and GWEN_FAST_BUFFER::msecs.
| GWENHYWFAR_API int GWEN_FastBuffer_ReadLineToBuffer | ( | GWEN_FAST_BUFFER * | fb, | |
| GWEN_BUFFER * | buf | |||
| ) |
Definition at line 95 of file fastbuffer.c.
References GWEN_FAST_BUFFER::buffer, GWEN_FAST_BUFFER::bufferReadPos, GWEN_FAST_BUFFER::bufferSize, GWEN_FAST_BUFFER::bufferWritePos, GWEN_FAST_BUFFER::bytesRead, DBG_INFO, GWEN_FAST_BUFFER::guiid, GWEN_Buffer_AppendBytes(), GWEN_ERROR_EOF, GWEN_Io_Layer_ReadBytes(), GWEN_LOGDOMAIN, GWEN_FAST_BUFFER::io, and GWEN_FAST_BUFFER::msecs.
Referenced by GWEN_DB_ReadFromFastBuffer().
| GWENHYWFAR_API void GWEN_FastBuffer_SetFlags | ( | GWEN_FAST_BUFFER * | fb, | |
| uint32_t | fl | |||
| ) |
| GWENHYWFAR_API void GWEN_FastBuffer_SubFlags | ( | GWEN_FAST_BUFFER * | fb, | |
| uint32_t | fl | |||
| ) |
1.5.6