gwenhywfar  4.15.3
buffer.h
Go to the documentation of this file.
1 /***************************************************************************
2  $RCSfile$
3  -------------------
4  cvs : $Id$
5  begin : Fri Sep 12 2003
6  copyright : (C) 2003 by Martin Preuss
7  email : martin@libchipcard.de
8 
9  ***************************************************************************
10  * *
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU Lesser General Public *
13  * License as published by the Free Software Foundation; either *
14  * version 2.1 of the License, or (at your option) any later version. *
15  * *
16  * This library is distributed in the hope that it will be useful, *
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
19  * Lesser General Public License for more details. *
20  * *
21  * You should have received a copy of the GNU Lesser General Public *
22  * License along with this library; if not, write to the Free Software *
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
24  * MA 02111-1307 USA *
25  * *
26  ***************************************************************************/
27 
28 
29 #ifndef GWENHYWFAR_BUFFER_H
30 #define GWENHYWFAR_BUFFER_H
31 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
41 typedef struct GWEN_BUFFER GWEN_BUFFER;
42 #ifdef __cplusplus
43 }
44 #endif
45 
46 #include <gwenhywfar/types.h>
47 #include <gwenhywfar/syncio.h>
48 
49 
50 #include <stdio.h>
51 /* This is needed for PalmOS, because it define some functions needed */
52 #include <string.h>
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
66 
67 #define GWEN_BUFFER_MAX_BOOKMARKS 64
68 
69 #define GWEN_BUFFER_MODE_DYNAMIC 0x0001
70 #define GWEN_BUFFER_MODE_ABORT_ON_MEMFULL 0x0002
71 #define GWEN_BUFFER_MODE_USE_SYNCIO 0x0010
72 #define GWEN_BUFFER_MODE_READONLY 0x0020
73 
74 #define GWEN_BUFFER_MODE_DEFAULT \
75  (\
76  GWEN_BUFFER_MODE_DYNAMIC | \
77  GWEN_BUFFER_MODE_ABORT_ON_MEMFULL\
78  )
79 
80 
105 GWEN_BUFFER *GWEN_Buffer_new(char *buffer,
106  uint32_t size,
107  uint32_t used,
108  int take_ownership);
109 
116 
117 
125 void GWEN_Buffer_free(GWEN_BUFFER *bf);
126 
127 
131 
132 
143 
149 uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf);
150 
156 void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode);
157 
163 void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode);
164 
170 void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode);
171 
178 
184 void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l);
185 
186 
193 uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf);
194 
203 void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step);
204 
205 
215 int GWEN_Buffer_ReserveBytes(GWEN_BUFFER *bf, uint32_t res);
216 
217 
223 char *GWEN_Buffer_GetStart(const GWEN_BUFFER *bf);
224 
225 
230 uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf);
231 
232 
238 uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf);
239 
244 int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i);
245 
249 uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf);
250 
251 
256 uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx);
257 
258 
264 void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx,
265  uint32_t v);
266 
267 
276  const char *buffer,
277  uint32_t size);
278 
281  unsigned char c,
282  uint32_t size);
283 
286  unsigned char c,
287  uint32_t size);
288 
289 
297  const char *buffer);
298 
299 
307 int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c);
308 
320  const char *buffer,
321  uint32_t size);
322 
335  uint32_t size);
336 
348 int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size);
349 
362  uint32_t rsize,
363  const char *buffer,
364  uint32_t size);
365 
366 
378  const char *buffer);
379 
393 int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c);
394 
402 
403 
411  char *buffer,
412  uint32_t *size);
413 
414 
423 
424 
427 int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i);
428 
431 int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i);
432 
457 
458 
466  GWEN_BUFFER *sf);
467 
474  GWEN_BUFFER *sf);
475 
476 
483 
484 
490 
491 
496 char *GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf);
497 
498 
504 
510 
511 
516 int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size);
517 
518 
519 /* crops the buffer to the specified bytes */
522  uint32_t pos,
523  uint32_t l);
524 
525 /* Overwrite complete buffer with a given value.
526  * This does not only overwrite the used bytes but all the memory held
527  * by this object.
528  */
531 
532 
542  GWEN_SYNCIO *sio,
543  int take);
544 
545 
548 void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert);
549 
550 
556 
562 
563 
566 #ifdef __cplusplus
567 }
568 #endif
569 
570 #endif
571 
572 
573 
574 
575 
576 
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBytesLeft(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_FillLeftWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWENHYWFAR_API char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_InsertString(GWEN_BUFFER *bf, const char *buffer)
GWENHYWFAR_API int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l)
GWENHYWFAR_API void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step)
GWENHYWFAR_API int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_FillWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWENHYWFAR_API int GWEN_Buffer_ReserveBytes(GWEN_BUFFER *bf, uint32_t res)
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take_ownership)
GWENHYWFAR_API int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert)
GWENHYWFAR_API char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Free(void *ptr)
GWENHYWFAR_API int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i)
GWENHYWFAR_API void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx, uint32_t v)
GWENHYWFAR_API int GWEN_Buffer_PeekByte(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx)
GWENHYWFAR_API void GWEN_Buffer_Attach(GWEN_BUFFER *bf)
struct GWEN_SYNCIO GWEN_SYNCIO
Definition: syncio.h:40
GWENHYWFAR_API uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API void GWEN_Buffer_SetSourceSyncIo(GWEN_BUFFER *bf, GWEN_SYNCIO *sio, int take)
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
GWENHYWFAR_API int GWEN_Buffer_AppendBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
GWENHYWFAR_API int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c)
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Attach(void *ptr)
GWENHYWFAR_API void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
GWENHYWFAR_API int GWEN_Buffer_Relinquish(GWEN_BUFFER *bf)
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_dup(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i)
GWENHYWFAR_API void GWEN_Buffer_free(GWEN_BUFFER *bf)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:41
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
GWENHYWFAR_API int GWEN_Buffer_Crop(GWEN_BUFFER *bf, uint32_t pos, uint32_t l)
GWENHYWFAR_API void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i)
GWENHYWFAR_API int GWEN_Buffer_InsertBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_ReadByte(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWENHYWFAR_API void GWEN_Buffer_Rewind(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_InsertRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API int GWEN_Buffer_InsertBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetHardLimit(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_ReplaceBytes(GWEN_BUFFER *bf, uint32_t rsize, const char *buffer, uint32_t size)
GWENHYWFAR_API int GWEN_Buffer_ReadBytes(GWEN_BUFFER *bf, char *buffer, uint32_t *size)
GWENHYWFAR_API int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
GWENHYWFAR_API void GWEN_Buffer_OverwriteContent(GWEN_BUFFER *bf, int c)