aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/ast.h55
-rw-r--r--src/buffer.c5
-rw-r--r--src/buffer.h7
-rw-r--r--src/cmark.c54
5 files changed, 56 insertions, 69 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c399713..6f78a26 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -125,10 +125,6 @@ if(MSVC)
set(CMAKE_C_FLAGS "/TP")
endif()
-if(CMAKE_COMPILER_IS_MINGW)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fgnu89-inline")
-endif(CMAKE_COMPILER_IS_MINGW)
-
if($ENV{TIMER})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTIMER=1")
endif($ENV{TIMER})
diff --git a/src/ast.h b/src/ast.h
index dc8df41..0640f88 100644
--- a/src/ast.h
+++ b/src/ast.h
@@ -5,6 +5,7 @@
#include "config.h"
#include "buffer.h"
#include "chunk.h"
+#include "cmark.h"
#ifdef __cplusplus
extern "C" {
@@ -136,15 +137,59 @@ struct cmark_doc_parser {
cmark_strbuf *curline;
};
-struct cmark_node_inl *cmark_make_link(struct cmark_node_inl *label, unsigned char *url, unsigned char *title);
+unsigned char *cmark_clean_autolink(chunk *url, int is_email);
+
+static inline cmark_node_inl *cmark_make_link(cmark_node_inl *label, unsigned char *url, unsigned char *title)
+{
+ cmark_node_inl* e = (cmark_node_inl *)calloc(1, sizeof(*e));
+ if(e != NULL) {
+ e->tag = CMARK_INL_LINK;
+ e->content.linkable.label = label;
+ e->content.linkable.url = url;
+ e->content.linkable.title = title;
+ e->next = NULL;
+ }
+ return e;
+}
-struct cmark_node_inl* cmark_make_autolink(struct cmark_node_inl* label, cmark_chunk url, int is_email);
+static inline cmark_node_inl* cmark_make_autolink(cmark_node_inl* label, cmark_chunk url, int is_email)
+{
+ return cmark_make_link(label, cmark_clean_autolink(&url, is_email), NULL);
+}
-struct cmark_node_inl* cmark_make_inlines(cmark_inl_tag t, struct cmark_node_inl* contents);
+static inline cmark_node_inl* cmark_make_inlines(cmark_inl_tag t, cmark_node_inl* contents)
+{
+ cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e));
+ if(e != NULL) {
+ e->tag = t;
+ e->content.inlines = contents;
+ e->next = NULL;
+ }
+ return e;
+}
-struct cmark_node_inl* cmark_make_literal(cmark_inl_tag t, cmark_chunk s);
+// Create an inline with a literal string value.
+static inline cmark_node_inl* cmark_make_literal(cmark_inl_tag t, cmark_chunk s)
+{
+ cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e));
+ if(e != NULL) {
+ e->tag = t;
+ e->content.literal = s;
+ e->next = NULL;
+ }
+ return e;
+}
-struct cmark_node_inl* cmark_make_simple(cmark_inl_tag t);
+// Create an inline with no value.
+static inline cmark_node_inl* cmark_make_simple(cmark_inl_tag t)
+{
+ cmark_node_inl* e = (cmark_node_inl *)calloc(1, sizeof(*e));
+ if(e != NULL) {
+ e->tag = t;
+ e->next = NULL;
+ }
+ return e;
+}
// Macros for creating various kinds of simple.
#define cmark_make_str(s) cmark_make_literal(INL_STRING, s)
diff --git a/src/buffer.c b/src/buffer.c
index c7b784a..45b6984 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -201,11 +201,6 @@ int cmark_strbuf_printf(strbuf *buf, const char *format, ...)
return r;
}
-inline const char *cmark_strbuf_cstr(const cmark_strbuf *buf)
-{
- return (char *)buf->ptr;
-}
-
void cmark_strbuf_copy_cstr(char *data, int datasize, const strbuf *buf)
{
int copylen;
diff --git a/src/buffer.h b/src/buffer.h
index acbead7..be888e1 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -84,10 +84,13 @@ void cmark_strbuf_attach(cmark_strbuf *buf, unsigned char *ptr, int asize);
CMARK_EXPORT
unsigned char *cmark_strbuf_detach(cmark_strbuf *buf);
CMARK_EXPORT
-inline const char *cmark_strbuf_cstr(const cmark_strbuf *buf);
-CMARK_EXPORT
void cmark_strbuf_copy_cstr(char *data, int datasize, const cmark_strbuf *buf);
+static inline const char *cmark_strbuf_cstr(const cmark_strbuf *buf)
+{
+ return (char *)buf->ptr;
+}
+
#define cmark_strbuf_at(buf, n) ((buf)->ptr[n])
/*
diff --git a/src/cmark.c b/src/cmark.c
index f793499..e7f6899 100644
--- a/src/cmark.c
+++ b/src/cmark.c
@@ -73,20 +73,7 @@ void cmark_free_inlines(cmark_node_inl* e)
}
}
-inline cmark_node_inl *cmark_make_link(cmark_node_inl *label, unsigned char *url, unsigned char *title)
-{
- cmark_node_inl* e = (cmark_node_inl *)calloc(1, sizeof(*e));
- if(e != NULL) {
- e->tag = CMARK_INL_LINK;
- e->content.linkable.label = label;
- e->content.linkable.url = url;
- e->content.linkable.title = title;
- e->next = NULL;
- }
- return e;
-}
-
-unsigned char *clean_autolink(chunk *url, int is_email)
+unsigned char *cmark_clean_autolink(chunk *url, int is_email)
{
strbuf buf = GH_BUF_INIT;
@@ -102,45 +89,6 @@ unsigned char *clean_autolink(chunk *url, int is_email)
return strbuf_detach(&buf);
}
-inline cmark_node_inl* cmark_make_autolink(cmark_node_inl* label, chunk url, int is_email)
-{
- return cmark_make_link(label, clean_autolink(&url, is_email), NULL);
-}
-
-inline cmark_node_inl* cmark_make_inlines(cmark_inl_tag t, cmark_node_inl* contents)
-{
- cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e));
- if(e != NULL) {
- e->tag = t;
- e->content.inlines = contents;
- e->next = NULL;
- }
- return e;
-}
-
-// Create an inline with a literal string value.
-inline cmark_node_inl* cmark_make_literal(cmark_inl_tag t, cmark_chunk s)
-{
- cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e));
- if(e != NULL) {
- e->tag = t;
- e->content.literal = s;
- e->next = NULL;
- }
- return e;
-}
-
-// Create an inline with no value.
-inline cmark_node_inl* cmark_make_simple(cmark_inl_tag t)
-{
- cmark_node_inl* e = (cmark_node_inl *)calloc(1, sizeof(*e));
- if(e != NULL) {
- e->tag = t;
- e->next = NULL;
- }
- return e;
-}
-
// Free a node_block list and any children.
void cmark_free_blocks(cmark_node_block *e)
{