~ultradvorka/+junk/mindforger

« back to all changes in this revision

Viewing changes to deps/cmark/src/buffer.h

  • Committer: Martin Dvorak (Dvorka)
  • Date: 2018-06-13 20:11:59 UTC
  • Revision ID: martin.dvorak@mindforger.com-20180613201159-r20v2aelwr8x8mb5
Update for mindforger_1.42.6 at 2018-06-13--22-11-36.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef CMARK_BUFFER_H
 
2
#define CMARK_BUFFER_H
 
3
 
 
4
#include <stddef.h>
 
5
#include <stdarg.h>
 
6
#include <string.h>
 
7
#include <limits.h>
 
8
#include <stdint.h>
 
9
#include "config.h"
 
10
#include "cmark.h"
 
11
 
 
12
#ifdef __cplusplus
 
13
extern "C" {
 
14
#endif
 
15
 
 
16
typedef struct {
 
17
  cmark_mem *mem;
 
18
  unsigned char *ptr;
 
19
  bufsize_t asize, size;
 
20
} cmark_strbuf;
 
21
 
 
22
extern unsigned char cmark_strbuf__initbuf[];
 
23
 
 
24
#define CMARK_BUF_INIT(mem)                                                    \
 
25
  { mem, cmark_strbuf__initbuf, 0, 0 }
 
26
 
 
27
/**
 
28
 * Initialize a cmark_strbuf structure.
 
29
 *
 
30
 * For the cases where CMARK_BUF_INIT cannot be used to do static
 
31
 * initialization.
 
32
 */
 
33
CMARK_EXPORT
 
34
void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf,
 
35
                       bufsize_t initial_size);
 
36
 
 
37
/**
 
38
 * Grow the buffer to hold at least `target_size` bytes.
 
39
 */
 
40
CMARK_EXPORT
 
41
void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size);
 
42
 
 
43
CMARK_EXPORT
 
44
void cmark_strbuf_free(cmark_strbuf *buf);
 
45
 
 
46
CMARK_EXPORT
 
47
void cmark_strbuf_swap(cmark_strbuf *buf_a, cmark_strbuf *buf_b);
 
48
 
 
49
CMARK_EXPORT
 
50
bufsize_t cmark_strbuf_len(const cmark_strbuf *buf);
 
51
 
 
52
CMARK_EXPORT
 
53
int cmark_strbuf_cmp(const cmark_strbuf *a, const cmark_strbuf *b);
 
54
 
 
55
CMARK_EXPORT
 
56
unsigned char *cmark_strbuf_detach(cmark_strbuf *buf);
 
57
 
 
58
CMARK_EXPORT
 
59
void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize,
 
60
                            const cmark_strbuf *buf);
 
61
 
 
62
static CMARK_INLINE const char *cmark_strbuf_cstr(const cmark_strbuf *buf) {
 
63
  return (char *)buf->ptr;
 
64
}
 
65
 
 
66
#define cmark_strbuf_at(buf, n) ((buf)->ptr[n])
 
67
 
 
68
CMARK_EXPORT
 
69
void cmark_strbuf_set(cmark_strbuf *buf, const unsigned char *data,
 
70
                      bufsize_t len);
 
71
 
 
72
CMARK_EXPORT
 
73
void cmark_strbuf_sets(cmark_strbuf *buf, const char *string);
 
74
 
 
75
CMARK_EXPORT
 
76
void cmark_strbuf_putc(cmark_strbuf *buf, int c);
 
77
 
 
78
CMARK_EXPORT
 
79
void cmark_strbuf_put(cmark_strbuf *buf, const unsigned char *data,
 
80
                      bufsize_t len);
 
81
 
 
82
CMARK_EXPORT
 
83
void cmark_strbuf_puts(cmark_strbuf *buf, const char *string);
 
84
 
 
85
CMARK_EXPORT
 
86
void cmark_strbuf_clear(cmark_strbuf *buf);
 
87
 
 
88
CMARK_EXPORT
 
89
bufsize_t cmark_strbuf_strchr(const cmark_strbuf *buf, int c, bufsize_t pos);
 
90
 
 
91
CMARK_EXPORT
 
92
bufsize_t cmark_strbuf_strrchr(const cmark_strbuf *buf, int c, bufsize_t pos);
 
93
 
 
94
CMARK_EXPORT
 
95
void cmark_strbuf_drop(cmark_strbuf *buf, bufsize_t n);
 
96
 
 
97
CMARK_EXPORT
 
98
void cmark_strbuf_truncate(cmark_strbuf *buf, bufsize_t len);
 
99
 
 
100
CMARK_EXPORT
 
101
void cmark_strbuf_rtrim(cmark_strbuf *buf);
 
102
 
 
103
CMARK_EXPORT
 
104
void cmark_strbuf_trim(cmark_strbuf *buf);
 
105
 
 
106
CMARK_EXPORT
 
107
void cmark_strbuf_normalize_whitespace(cmark_strbuf *s);
 
108
 
 
109
CMARK_EXPORT
 
110
void cmark_strbuf_unescape(cmark_strbuf *s);
 
111
 
 
112
#ifdef __cplusplus
 
113
}
 
114
#endif
 
115
 
 
116
#endif