#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<(int)(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_DEBUG(GWEN_LOGDOMAIN, "here (%d)", fb_peekbyte_rv); \ var=fb_peekbyte_rv; \ } \ else { \ fb->bufferWritePos=fb_peekbyte_rv; \ fb->bufferReadPos=0; \ var=((int)((fb->buffer[fb->bufferReadPos])) & 0xff); \ } \ } \ else { \ var=((int)((fb->buffer[fb->bufferReadPos])) & 0xff); \ } \ }
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_DEBUG(GWEN_LOGDOMAIN, "here (%d)", fb_readbyte_rv); \ var=fb_readbyte_rv; \ } \ else { \ fb->bufferWritePos=fb_readbyte_rv; \ fb->bufferReadPos=0; \ var=((int)((fb->buffer[fb->bufferReadPos++])) & 0xff); \ fb->bytesRead++; \ } \ } \ else { \ var=((int)((fb->buffer[fb->bufferReadPos++])) & 0xff); \ 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_DEBUG(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<(int)(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 | |||
) |