gwenhywfar  5.11.1beta
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
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 
102  uint32_t size,
103  uint32_t used,
104  int take_ownership);
105 
112 
113 
122 
123 
127 
128 
139 
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 
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 
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 
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 
283 int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt, ...);
284 
285 
288  unsigned char c,
289  uint32_t size);
290 
293  unsigned char c,
294  uint32_t size);
295 
296 
304  const char *buffer);
305 
306 
315 
327  const char *buffer,
328  uint32_t size);
329 
342  uint32_t size);
343 
355 int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size);
356 
369  uint32_t rsize,
370  const char *buffer,
371  uint32_t size);
372 
373 
385  const char *buffer);
386 
401 
409 
410 
418  char *buffer,
419  uint32_t *size);
420 
421 
430 
431 
435 
439 
464 
465 
473  GWEN_BUFFER *sf);
474 
481  GWEN_BUFFER *sf);
482 
483 
490 
491 
497 
498 
504 
505 
511 
517 
518 
523 int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size);
524 
525 
526 /* crops the buffer to the specified bytes */
529  uint32_t pos,
530  uint32_t l);
531 
532 /* Overwrite complete buffer with a given value.
533  * This does not only overwrite the used bytes but all the memory held
534  * by this object.
535  */
538 
539 
552  const char *openingString,
553  const char *closingString,
554  int onlyBetween);
555 
556 
559 void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert);
560 
561 
567 
573 
574 
577 #ifdef __cplusplus
578 }
579 #endif
580 
581 #endif
582 
583 
584 
585 
586 
587 
GWENHYWFAR_API int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_KeepTextBetweenStrings(GWEN_BUFFER *bf, const char *openingString, const char *closingString, int onlyBetween)
GWENHYWFAR_API int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
GWENHYWFAR_API int GWEN_Buffer_ReadBytes(GWEN_BUFFER *bf, char *buffer, uint32_t *size)
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 int GWEN_Buffer_Relinquish(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_InsertString(GWEN_BUFFER *bf, const char *buffer)
GWENHYWFAR_API int GWEN_Buffer_Crop(GWEN_BUFFER *bf, uint32_t pos, uint32_t l)
GWENHYWFAR_API int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetStep(GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_SetHardLimit(GWEN_BUFFER *bf, uint32_t l)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf)
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take_ownership)
GWENHYWFAR_API int GWEN_Buffer_PeekByte(GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
GWENHYWFAR_API int GWEN_Buffer_DecrementPos(GWEN_BUFFER *bf, uint32_t i)
GWENHYWFAR_API void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx, uint32_t v)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetMode(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetSize(const GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_InsertBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWENHYWFAR_API void GWEN_Buffer_Attach(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i)
GWENHYWFAR_API void GWEN_Buffer_OverwriteContent(GWEN_BUFFER *bf, int c)
GWENHYWFAR_API void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API int GWEN_Buffer_RemoveRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API int GWEN_Buffer_InsertByte(GWEN_BUFFER *bf, char c)
GWENHYWFAR_API int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
GWENHYWFAR_API void GWEN_Buffer_free(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_ReserveBytes(GWEN_BUFFER *bf, uint32_t res)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert)
GWENHYWFAR_API void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step)
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_dup(GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_InsertRoom(GWEN_BUFFER *bf, uint32_t size)
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Attach(void *ptr)
GWENHYWFAR_API void GWEN_Buffer_Rewind(GWEN_BUFFER *bf)
GWENHYWFAR_API char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_ReadByte(GWEN_BUFFER *bf)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx)
GWENHYWFAR_API int GWEN_Buffer_AppendBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
GWENHYWFAR_API const char GWENHYWFAR_API int GWEN_Buffer_FillWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWENHYWFAR_API int GWENHYWFAR_CB GWEN_Buffer_CacheFn_Free(void *ptr)
GWENHYWFAR_API uint32_t GWEN_Buffer_GetHardLimit(GWEN_BUFFER *bf)
GWENHYWFAR_API int GWEN_Buffer_FillLeftWithBytes(GWEN_BUFFER *bf, unsigned char c, uint32_t size)
GWENHYWFAR_API void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API GWEN_FORMAT(printf, 2, 3) int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf
GWENHYWFAR_API const char * fmt
Definition: buffer.h:283
GWENHYWFAR_API uint32_t GWEN_Buffer_GetBytesLeft(GWEN_BUFFER *bf)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89