summaryrefslogtreecommitdiff
path: root/src/chunk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/chunk.h')
-rw-r--r--src/chunk.h65
1 files changed, 5 insertions, 60 deletions
diff --git a/src/chunk.h b/src/chunk.h
index 6d1601d..1e93f66 100644
--- a/src/chunk.h
+++ b/src/chunk.h
@@ -9,26 +9,19 @@
#include "cmark_ctype.h"
#define CMARK_CHUNK_EMPTY \
- { NULL, 0, 0 }
+ { NULL, 0 }
typedef struct {
- unsigned char *data;
+ const unsigned char *data;
bufsize_t len;
- bufsize_t alloc; // also implies a NULL-terminated string
} cmark_chunk;
-static CMARK_INLINE void cmark_chunk_free(cmark_mem *mem, cmark_chunk *c) {
- if (c->alloc)
- mem->free(c->data);
-
+static CMARK_INLINE void cmark_chunk_free(cmark_chunk *c) {
c->data = NULL;
- c->alloc = 0;
c->len = 0;
}
static CMARK_INLINE void cmark_chunk_ltrim(cmark_chunk *c) {
- assert(!c->alloc);
-
while (c->len && cmark_isspace(c->data[0])) {
c->data++;
c->len--;
@@ -36,8 +29,6 @@ static CMARK_INLINE void cmark_chunk_ltrim(cmark_chunk *c) {
}
static CMARK_INLINE void cmark_chunk_rtrim(cmark_chunk *c) {
- assert(!c->alloc);
-
while (c->len > 0) {
if (!cmark_isspace(c->data[c->len - 1]))
break;
@@ -58,61 +49,15 @@ static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c,
return p ? (bufsize_t)(p - ch->data) : ch->len;
}
-static CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_mem *mem,
- cmark_chunk *c) {
- unsigned char *str;
-
- if (c->alloc) {
- return (char *)c->data;
- }
- str = (unsigned char *)mem->calloc(c->len + 1, 1);
- if (c->len > 0) {
- memcpy(str, c->data, c->len);
- }
- str[c->len] = 0;
- c->data = str;
- c->alloc = 1;
-
- return (char *)str;
-}
-
-static CMARK_INLINE void cmark_chunk_set_cstr(cmark_mem *mem, cmark_chunk *c,
- const char *str) {
- unsigned char *old = c->alloc ? c->data : NULL;
- if (str == NULL) {
- c->len = 0;
- c->data = NULL;
- c->alloc = 0;
- } else {
- c->len = (bufsize_t)strlen(str);
- c->data = (unsigned char *)mem->calloc(c->len + 1, 1);
- c->alloc = 1;
- memcpy(c->data, str, c->len + 1);
- }
- if (old != NULL) {
- mem->free(old);
- }
-}
-
static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) {
bufsize_t len = data ? (bufsize_t)strlen(data) : 0;
- cmark_chunk c = {(unsigned char *)data, len, 0};
+ cmark_chunk c = {(unsigned char *)data, len};
return c;
}
static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch,
bufsize_t pos, bufsize_t len) {
- cmark_chunk c = {ch->data + pos, len, 0};
- return c;
-}
-
-static CMARK_INLINE cmark_chunk cmark_chunk_buf_detach(cmark_strbuf *buf) {
- cmark_chunk c;
-
- c.len = buf->size;
- c.data = cmark_strbuf_detach(buf);
- c.alloc = 1;
-
+ cmark_chunk c = {ch->data + pos, len};
return c;
}