gwenhywfar 5.12.0
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
31extern "C" {
32#endif
38typedef 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
52extern "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
152void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode);
153
159void GWEN_Buffer_AddMode(GWEN_BUFFER *bf, uint32_t mode);
160
166void GWEN_Buffer_SubMode(GWEN_BUFFER *bf, uint32_t mode);
167
174
181
182
190
199void GWEN_Buffer_SetStep(GWEN_BUFFER *bf, uint32_t step);
200
201
212
213
220
221
227
228
234uint32_t GWEN_Buffer_GetPos(const GWEN_BUFFER *bf);
235
240int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i);
241
246
247
252uint32_t GWEN_Buffer_GetBookmark(const GWEN_BUFFER *bf, unsigned int idx);
253
254
260void GWEN_Buffer_SetBookmark(GWEN_BUFFER *bf, unsigned int idx,
261 uint32_t v);
262
263
272 const char *buffer,
273 uint32_t size);
274
283int 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
355int 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
523int 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
559void 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 GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take_ownership)
GWENHYWFAR_API int GWEN_Buffer_KeepTextBetweenStrings(GWEN_BUFFER *bf, const char *openingString, const char *closingString, int onlyBetween)
GWENHYWFAR_API char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
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 int GWEN_Buffer_PeekByte(GWEN_BUFFER *bf)
GWENHYWFAR_API void GWEN_Buffer_SetMode(GWEN_BUFFER *bf, uint32_t mode)
GWENHYWFAR_API GWEN_BUFFER * GWEN_Buffer_dup(GWEN_BUFFER *bf)
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 char * GWEN_Buffer_GetStart(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 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 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 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 GWEN_FORMAT(fmt, pos, argstart)
#define GWENHYWFAR_API
#define GWENHYWFAR_CB