Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef GWENHYWFAR_BUFFER_H
00030 #define GWENHYWFAR_BUFFER_H
00031
00032 #include <gwenhywfar/gwenhywfarapi.h>
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00041 typedef struct GWEN_BUFFER GWEN_BUFFER;
00042 #ifdef __cplusplus
00043 }
00044 #endif
00045
00046 #include <gwenhywfar/types.h>
00047 #include <gwenhywfar/syncio.h>
00048
00049
00050 #include <stdio.h>
00051
00052 #include <string.h>
00053
00054 #ifdef __cplusplus
00055 extern "C" {
00056 #endif
00057
00066
00067 #define GWEN_BUFFER_MAX_BOOKMARKS 64
00068
00069 #define GWEN_BUFFER_MODE_DYNAMIC 0x0001
00070 #define GWEN_BUFFER_MODE_ABORT_ON_MEMFULL 0x0002
00071 #define GWEN_BUFFER_MODE_USE_SYNCIO 0x0010
00072 #define GWEN_BUFFER_MODE_READONLY 0x0020
00073
00074 #define GWEN_BUFFER_MODE_DEFAULT \
00075 (\
00076 GWEN_BUFFER_MODE_DYNAMIC | \
00077 GWEN_BUFFER_MODE_ABORT_ON_MEMFULL\
00078 )
00079
00080
00104 GWENHYWFAR_API
00105 GWEN_BUFFER *GWEN_Buffer_new(char *buffer,
00106 uint32_t size,
00107 uint32_t used,
00108 int take_ownership);
00109
00116 GWENHYWFAR_API
00117 void GWEN_Buffer_free(GWEN_BUFFER *bf);
00118
00119
00121 GWENHYWFAR_API
00122 GWEN_BUFFER *GWEN_Buffer_dup(GWEN_BUFFER *bf);
00123
00124
00133 GWENHYWFAR_API
00134 int GWEN_Buffer_Relinquish(GWEN_BUFFER *bf);
00135
00140 GWENHYWFAR_API
00141 uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf);
00142
00147 GWENHYWFAR_API
00148 void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode);
00149
00154 GWENHYWFAR_API
00155 void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode);
00156
00161 GWENHYWFAR_API
00162 void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode);
00163
00168 GWENHYWFAR_API
00169 uint32_t GWEN_Buffer_GetHardLimit(GWEN_BUFFER *bf);
00170
00175 GWENHYWFAR_API
00176 void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l);
00177
00178
00184 GWENHYWFAR_API
00185 uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf);
00186
00194 GWENHYWFAR_API
00195 void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step);
00196
00197
00206 GWENHYWFAR_API
00207 int GWEN_Buffer_ReserveBytes(GWEN_BUFFER *bf, uint32_t res);
00208
00209
00214 GWENHYWFAR_API
00215 char *GWEN_Buffer_GetStart(const GWEN_BUFFER *bf);
00216
00217
00221 GWENHYWFAR_API
00222 uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf);
00223
00224
00229 GWENHYWFAR_API
00230 uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf);
00231
00235 GWENHYWFAR_API
00236 int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i);
00237
00240 GWENHYWFAR_API
00241 uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf);
00242
00243
00247 GWENHYWFAR_API
00248 uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx);
00249
00250
00255 GWENHYWFAR_API
00256 void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx,
00257 uint32_t v);
00258
00259
00266 GWENHYWFAR_API
00267 int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf,
00268 const char *buffer,
00269 uint32_t size);
00270
00271 GWENHYWFAR_API
00272 int GWEN_Buffer_FillWithBytes(GWEN_BUFFER *bf,
00273 unsigned char c,
00274 uint32_t size);
00275
00276 GWENHYWFAR_API
00277 int GWEN_Buffer_FillLeftWithBytes(GWEN_BUFFER *bf,
00278 unsigned char c,
00279 uint32_t size);
00280
00281
00287 GWENHYWFAR_API
00288 int GWEN_Buffer_AppendString(GWEN_BUFFER *bf,
00289 const char *buffer);
00290
00291
00298 GWENHYWFAR_API
00299 int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c);
00300
00310 GWENHYWFAR_API
00311 int GWEN_Buffer_InsertBytes(GWEN_BUFFER *bf,
00312 const char *buffer,
00313 uint32_t size);
00314
00325 GWENHYWFAR_API
00326 int GWEN_Buffer_InsertRoom(GWEN_BUFFER *bf,
00327 uint32_t size);
00328
00339 GWENHYWFAR_API
00340 int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size);
00341
00352 GWENHYWFAR_API
00353 int GWEN_Buffer_ReplaceBytes(GWEN_BUFFER *bf,
00354 uint32_t rsize,
00355 const char *buffer,
00356 uint32_t size);
00357
00358
00368 GWENHYWFAR_API
00369 int GWEN_Buffer_InsertString(GWEN_BUFFER *bf,
00370 const char *buffer);
00371
00384 GWENHYWFAR_API
00385 int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c);
00386
00392 GWENHYWFAR_API
00393 int GWEN_Buffer_ReadByte(GWEN_BUFFER *bf);
00394
00395
00401 GWENHYWFAR_API
00402 int GWEN_Buffer_ReadBytes(GWEN_BUFFER *bf,
00403 char *buffer,
00404 uint32_t *size);
00405
00406
00413 GWENHYWFAR_API
00414 int GWEN_Buffer_PeekByte(GWEN_BUFFER *bf);
00415
00416
00418 GWENHYWFAR_API
00419 int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i);
00420
00422 GWENHYWFAR_API
00423 int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i);
00424
00447 GWENHYWFAR_API
00448 int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf);
00449
00450
00456 GWENHYWFAR_API
00457 int GWEN_Buffer_InsertBuffer(GWEN_BUFFER *bf,
00458 GWEN_BUFFER *sf);
00459
00464 GWENHYWFAR_API
00465 int GWEN_Buffer_AppendBuffer(GWEN_BUFFER *bf,
00466 GWEN_BUFFER *sf);
00467
00468
00473 GWENHYWFAR_API
00474 uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf);
00475
00476
00480 GWENHYWFAR_API
00481 uint32_t GWEN_Buffer_GetBytesLeft(GWEN_BUFFER *bf);
00482
00483
00487 GWENHYWFAR_API
00488 char *GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf);
00489
00490
00494 GWENHYWFAR_API
00495 void GWEN_Buffer_Reset(GWEN_BUFFER *bf);
00496
00500 GWENHYWFAR_API
00501 void GWEN_Buffer_Rewind(GWEN_BUFFER *bf);
00502
00503
00507 GWENHYWFAR_API
00508 int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size);
00509
00510
00511
00512 GWENHYWFAR_API
00513 int GWEN_Buffer_Crop(GWEN_BUFFER *bf,
00514 uint32_t pos,
00515 uint32_t l);
00516
00517
00525 GWENHYWFAR_API
00526 void GWEN_Buffer_SetSourceSyncIo(GWEN_BUFFER *bf,
00527 GWEN_SYNCIO *sio,
00528 int take);
00529
00530
00532 GWENHYWFAR_API
00533 void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert);
00534
00535
00538 #ifdef __cplusplus
00539 }
00540 #endif
00541
00542 #endif
00543
00544
00545
00546
00547
00548