From 7baf9297f4f2e368c7c91ac76e16e88902987ec6 Mon Sep 17 00:00:00 2001 From: Kevin Wojniak Date: Mon, 10 Aug 2015 09:45:59 -0700 Subject: Fix MSVC inline errors when cmark is included in other sources that don't have the same set of disabled warnings --- src/buffer.h | 6 +++--- src/chunk.h | 20 ++++++++++---------- src/config.h.in | 8 ++++++++ 3 files changed, 21 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/buffer.h b/src/buffer.h index e99db72..88b79f3 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -48,7 +48,7 @@ unsigned char *cmark_strbuf_detach(cmark_strbuf *buf); void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize, const cmark_strbuf *buf); -static inline const char *cmark_strbuf_cstr(const cmark_strbuf *buf) { +CMARK_INLINE const char *cmark_strbuf_cstr(const cmark_strbuf *buf) { return (char *)buf->ptr; } @@ -75,14 +75,14 @@ void cmark_strbuf_unescape(cmark_strbuf *s); /* Print error and abort. */ void cmark_strbuf_overflow_err(void); -static inline bufsize_t cmark_strbuf_check_bufsize(size_t size) { +CMARK_INLINE bufsize_t cmark_strbuf_check_bufsize(size_t size) { if (size > BUFSIZE_MAX) { cmark_strbuf_overflow_err(); } return (bufsize_t)size; } -static inline bufsize_t cmark_strbuf_safe_strlen(const char *str) { +CMARK_INLINE bufsize_t cmark_strbuf_safe_strlen(const char *str) { return cmark_strbuf_check_bufsize(strlen(str)); } diff --git a/src/chunk.h b/src/chunk.h index db1bf0d..90cf568 100644 --- a/src/chunk.h +++ b/src/chunk.h @@ -16,7 +16,7 @@ typedef struct { bufsize_t alloc; // also implies a NULL-terminated string } cmark_chunk; -static inline void cmark_chunk_free(cmark_chunk *c) { +CMARK_INLINE void cmark_chunk_free(cmark_chunk *c) { if (c->alloc) free(c->data); @@ -25,7 +25,7 @@ static inline void cmark_chunk_free(cmark_chunk *c) { c->len = 0; } -static inline void cmark_chunk_ltrim(cmark_chunk *c) { +CMARK_INLINE void cmark_chunk_ltrim(cmark_chunk *c) { assert(!c->alloc); while (c->len && cmark_isspace(c->data[0])) { @@ -34,7 +34,7 @@ static inline void cmark_chunk_ltrim(cmark_chunk *c) { } } -static inline void cmark_chunk_rtrim(cmark_chunk *c) { +CMARK_INLINE void cmark_chunk_rtrim(cmark_chunk *c) { while (c->len > 0) { if (!cmark_isspace(c->data[c->len - 1])) break; @@ -43,19 +43,19 @@ static inline void cmark_chunk_rtrim(cmark_chunk *c) { } } -static inline void cmark_chunk_trim(cmark_chunk *c) { +CMARK_INLINE void cmark_chunk_trim(cmark_chunk *c) { cmark_chunk_ltrim(c); cmark_chunk_rtrim(c); } -static inline bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, +CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) { const unsigned char *p = (unsigned char *)memchr(ch->data + offset, c, ch->len - offset); return p ? (bufsize_t)(p - ch->data) : ch->len; } -static inline const char *cmark_chunk_to_cstr(cmark_chunk *c) { +CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_chunk *c) { unsigned char *str; if (c->alloc) { @@ -74,7 +74,7 @@ static inline const char *cmark_chunk_to_cstr(cmark_chunk *c) { return (char *)str; } -static inline void cmark_chunk_set_cstr(cmark_chunk *c, const char *str) { +CMARK_INLINE void cmark_chunk_set_cstr(cmark_chunk *c, const char *str) { if (c->alloc) { free(c->data); } @@ -90,19 +90,19 @@ static inline void cmark_chunk_set_cstr(cmark_chunk *c, const char *str) { } } -static inline cmark_chunk cmark_chunk_literal(const char *data) { +CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) { bufsize_t len = data ? cmark_strbuf_safe_strlen(data) : 0; cmark_chunk c = {(unsigned char *)data, len, 0}; return c; } -static inline cmark_chunk cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, +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 inline cmark_chunk cmark_chunk_buf_detach(cmark_strbuf *buf) { +CMARK_INLINE cmark_chunk cmark_chunk_buf_detach(cmark_strbuf *buf) { cmark_chunk c; c.len = buf->size; diff --git a/src/config.h.in b/src/config.h.in index 5294bc9..a392111 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -15,3 +15,11 @@ #else #define CMARK_ATTRIBUTE(list) #endif + +#ifndef CMARK_INLINE + #ifdef _MSC_VER + #define CMARK_INLINE __inline + #else + #define CMARK_INLINE static inline + #endif +#endif -- cgit v1.2.3