Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1186 savelij 1
#ifndef _DYNSTR_H
2
#define _DYNSTR_H
3
/* dynstr.h */
4
/*****************************************************************************/
5
/* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
6
/*                                                                           */
7
/* AS-Port                                                                   */
8
/*                                                                           */
9
/* Handling of strings with dynamic allocation                               */
10
/*                                                                           */
11
/*****************************************************************************/
12
 
13
#include <stdio.h>
14
#include <stddef.h>
15
 
16
typedef struct as_dynstr
17
{
18
  size_t capacity;
19
  char *p_str;
20
  int dynamic;
21
} as_dynstr_t;
22
 
23
/* add one character more for terminating NUL */
24
 
25
#define as_dynstr_roundup_len(len)  \
26
        (((len) + 128) & ~127)
27
 
28
extern void as_dynstr_ini(as_dynstr_t *p_str, size_t ini_alloc_len);
29
 
30
extern void as_dynstr_ini_clone(as_dynstr_t *p_str, const as_dynstr_t *p_src);
31
 
32
extern void as_dynstr_ini_c_str(as_dynstr_t *p_str, const char *p_src);
33
 
34
extern int as_dynstr_realloc(as_dynstr_t *p_str, size_t new_alloc_len);
35
 
36
extern void as_dynstr_free(as_dynstr_t *p_str);
37
 
38
extern size_t as_dynstr_copy(as_dynstr_t *p_dest, const as_dynstr_t *p_src);
39
 
40
extern size_t as_dynstr_copy_c_str(as_dynstr_t *p_dest, const char *p_src);
41
 
42
extern size_t as_dynstr_append(as_dynstr_t *p_dest, const char *p_src, size_t len);
43
 
44
extern size_t as_dynstr_append_c_str(as_dynstr_t *p_dest, const char *p_src);
45
 
46
extern void as_dynstr_dump_hex(FILE *p_file, const as_dynstr_t *p_str);
47
 
48
#endif /* _DYNSTR_H */