gwenhywfar  5.1.3
buffer.h
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Fri Sep 12 2003
3  copyright : (C) 2020 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * *
8  * This library is free software; you can redistribute it and/or *
9  * modify it under the terms of the GNU Lesser General Public *
10  * License as published by the Free Software Foundation; either *
11  * version 2.1 of the License, or (at your option) any later version. *
12  * *
13  * This library is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16  * Lesser General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU Lesser General Public *
19  * License along with this library; if not, write to the Free Software *
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21  * MA 02111-1307 USA *
22  * *
23  ***************************************************************************/
24 
25 
26 #ifndef GWENHYWFAR_BUFFER_H
27 #define GWENHYWFAR_BUFFER_H
28 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
38 typedef struct GWEN_BUFFER GWEN_BUFFER;
39 #ifdef __cplusplus
40 }
41 #endif
42 
43 #include <gwenhywfar/types.h>
44 //#include <gwenhywfar/syncio.h>
45 
46 
47 #include <stdio.h>
48 /* This is needed for PalmOS, because it define some functions needed */
49 #include <string.h>
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
63 
64 #define GWEN_BUFFER_MAX_BOOKMARKS 64
65 
66 #define GWEN_BUFFER_MODE_DYNAMIC 0x0001
67 #define GWEN_BUFFER_MODE_ABORT_ON_MEMFULL 0x0002
68 #define GWEN_BUFFER_MODE_READONLY 0x0020
69 
70 #define GWEN_BUFFER_MODE_DEFAULT \
71  (\
72  GWEN_BUFFER_MODE_DYNAMIC | \
73  GWEN_BUFFER_MODE_ABORT_ON_MEMFULL\
74  )
75 
76 
101 GWEN_BUFFER *GWEN_Buffer_new(char *buffer,
102  uint32_t size,
103  uint32_t used,
104  int take_ownership);
105 
112 
113 
121 void GWEN_Buffer_free(GWEN_BUFFER *bf);
122 
123 
127 
128 
139 
145 uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf);
146 
152 void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode);
153 
159 void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode);
160 
166 void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode);
167 
174 
180 void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l);
181 
182 
189 uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf);
190 
199 void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step);
200 
201 
211 int GWEN_Buffer_ReserveBytes(GWEN_BUFFER *bf, uint32_t res);
212 
213 
219 char *GWEN_Buffer_GetStart(const GWEN_BUFFER *bf);
220 
221 
226 uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf);
227 
228 
234 uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf);
235 
240 int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i);
241 
245 uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf);
246 
247 
252 uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx);
253 
254 
260 void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx,
261  uint32_t v);
262 
263 
272  const char *buffer,
273  uint32_t size);
274 
277  unsigned char c,
278  uint32_t size);
279 
282  unsigned char c,
283  uint32_t size);
284 
285 
293  const char *buffer);
294 
295 
303 int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c);
304 
316  const char *buffer,
317  uint32_t size);
318 
331  uint32_t size);
332 
344 int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size);
345 
358  uint32_t rsize,
359  const char *buffer,
360  uint32_t size);
361 
362 
374  const char *buffer);
375 
389 int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c);
390 
398 
399 
407  char *buffer,
408  uint32_t *size);
409 
410 
419 
420 
423 int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i);
424 
427 int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i);
428 
453 
454 
462  GWEN_BUFFER *sf);
463 
470  GWEN_BUFFER *sf);
471 
472 
479 
480 
486 
487 
492 char *GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf);
493 
494 
500 
506 
507 
512 int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size);
513 
514 
515 /* crops the buffer to the specified bytes */
518  uint32_t pos,
519  uint32_t l);
520 
521 /* Overwrite complete buffer with a given value.
522  * This does not only overwrite the used bytes but all the memory held
523  * by this object.
524  */
527 
528 
531 void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert);
532 
533 
539 
545 
546 
549 #ifdef __cplusplus
550 }
551 #endif
552 
553 #endif
554 
555 
556 
557 
558 
559 
GWEN_Buffer_dup
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_dup(GWEN_BUFFER *bf)
GWEN_Buffer_RemoveRoom
GWENHYWFAR_API int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size)
GWEN_Buffer_Dump
GWENHYWFAR_API void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert)
GWEN_Buffer_DecrementPos
GWENHYWFAR_API int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i)
GWEN_Buffer_SubMode
GWENHYWFAR_API void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode)
GWEN_Buffer_ReplaceBytes
GWENHYWFAR_API int GWEN_Buffer_ReplaceBytes(GWEN_BUFFER *bf, uint32_t rsize, const char *buffer, uint32_t size)
GWEN_Buffer_GetSize
GWENHYWFAR_API uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf)
GWEN_Buffer_AdjustUsedBytes
GWENHYWFAR_API int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf)
GWEN_Buffer_GetHardLimit
GWENHYWFAR_API uint32_t GWEN_Buffer_GetHardLimit(GWEN_BUFFER *bf)
types.h
GWEN_Buffer_IncrementPos
GWENHYWFAR_API int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i)
GWEN_Buffer_Crop
GWENHYWFAR_API int GWEN_Buffer_Crop(GWEN_BUFFER *bf, uint32_t pos, uint32_t l)
GWEN_Buffer_Attach
GWENHYWFAR_API void GWEN_Buffer_Attach(GWEN_BUFFER *bf)
GWEN_Buffer_GetBytesLeft
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBytesLeft(GWEN_BUFFER *bf)
GWEN_Buffer_SetHardLimit
GWENHYWFAR_API void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l)
GWEN_Buffer_SetBookmark
GWENHYWFAR_API void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx, uint32_t v)
GWEN_Buffer_SetPos
GWENHYWFAR_API int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i)
GWEN_Buffer_GetPosPointer
GWENHYWFAR_API char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
GWEN_Buffer_ReadByte
GWENHYWFAR_API int GWEN_Buffer_ReadByte(GWEN_BUFFER *bf)
GWEN_Buffer_AppendString
GWENHYWFAR_API int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
GWEN_Buffer_Rewind
GWENHYWFAR_API void GWEN_Buffer_Rewind(GWEN_BUFFER *bf)
GWEN_Buffer_GetStart
GWENHYWFAR_API char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
GWEN_Buffer_GetStep
GWENHYWFAR_API uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf)
GWEN_Buffer_InsertBytes
GWENHYWFAR_API int GWEN_Buffer_InsertBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWEN_Buffer_ReserveBytes
GWENHYWFAR_API int GWEN_Buffer_ReserveBytes(GWEN_BUFFER *bf, uint32_t res)
GWEN_Buffer_FillLeftWithBytes
GWENHYWFAR_API int GWEN_Buffer_FillLeftWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWEN_Buffer_CacheFn_Free
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Free(void *ptr)
GWEN_Buffer_GetUsedBytes
GWENHYWFAR_API uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
GWEN_Buffer_InsertString
GWENHYWFAR_API int GWEN_Buffer_InsertString(GWEN_BUFFER *bf, const char *buffer)
GWEN_Buffer_Reset
GWENHYWFAR_API void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
GWEN_Buffer_GetMaxUnsegmentedWrite
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf)
GWEN_Buffer_GetBookmark
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx)
GWEN_Buffer_SetStep
GWENHYWFAR_API void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step)
GWENHYWFAR_CB
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
GWEN_Buffer_OverwriteContent
GWENHYWFAR_API void GWEN_Buffer_OverwriteContent(GWEN_BUFFER *bf, int c)
GWEN_Buffer_CacheFn_Attach
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Attach(void *ptr)
GWEN_Buffer_InsertRoom
GWENHYWFAR_API int GWEN_Buffer_InsertRoom(GWEN_BUFFER *bf, uint32_t size)
GWEN_Buffer_GetMode
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf)
GWEN_Buffer_AppendByte
GWENHYWFAR_API int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
GWEN_Buffer_free
GWENHYWFAR_API void GWEN_Buffer_free(GWEN_BUFFER *bf)
GWEN_Buffer_SetMode
GWENHYWFAR_API void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode)
GWEN_Buffer_AllocRoom
GWENHYWFAR_API int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size)
GWEN_Buffer_ReadBytes
GWENHYWFAR_API int GWEN_Buffer_ReadBytes(GWEN_BUFFER *bf, char *buffer, uint32_t *size)
GWEN_Buffer_new
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take_ownership)
gwenhywfarapi.h
GWEN_Buffer_AppendBuffer
GWENHYWFAR_API int GWEN_Buffer_AppendBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
GWEN_Buffer_AppendBytes
GWENHYWFAR_API int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWEN_Buffer_AddMode
GWENHYWFAR_API void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode)
GWEN_Buffer_FillWithBytes
GWENHYWFAR_API int GWEN_Buffer_FillWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWEN_Buffer_GetPos
GWENHYWFAR_API uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf)
GWENHYWFAR_API
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
GWEN_Buffer_Relinquish
GWENHYWFAR_API int GWEN_Buffer_Relinquish(GWEN_BUFFER *bf)
GWEN_Buffer_PeekByte
GWENHYWFAR_API int GWEN_Buffer_PeekByte(GWEN_BUFFER *bf)
GWEN_Buffer_InsertBuffer
GWENHYWFAR_API int GWEN_Buffer_InsertBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
GWEN_BUFFER
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
GWEN_Buffer_InsertByte
GWENHYWFAR_API int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c)