ext/redcarpet/buffer.h in redcarpet-2.0.0b3 vs ext/redcarpet/buffer.h in redcarpet-2.0.0b4
- old
+ new
@@ -1,9 +1,8 @@
-/* buffer.h - automatic buffer structure */
-
/*
* Copyright (c) 2008, Natacha Porté
+ * Copyright (c) 2011, Vicent Martí
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
@@ -14,141 +13,79 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#ifndef LITHIUM_BUFFER_H
-#define LITHIUM_BUFFER_H
+#ifndef __GEN_BUFFER_H__
+#define __GEN_BUFFER_H__
#include <stddef.h>
+#include <stdarg.h>
+#include <stdint.h>
#if defined(_MSC_VER)
#define __attribute__(x)
#define inline
-#define strncasecmp _strnicmp
-#define snprintf _snprintf
-#define va_copy(d,s) ((d) = (s))
#endif
-/********************
- * TYPE DEFINITIONS *
- ********************/
+typedef enum {
+ BUF_OK = 0,
+ BUF_ENOMEM = -1,
+} buferror_t;
-/* struct buf • character array buffer */
+/* struct buf: character array buffer */
struct buf {
- char * data; /* actual character data */
- size_t size; /* size of the string */
- size_t asize; /* allocated size (0 = volatile buffer) */
- size_t unit; /* reallocation unit size (0 = read-only buffer) */
- int ref; }; /* reference count */
+ uint8_t *data; /* actual character data */
+ size_t size; /* size of the string */
+ size_t asize; /* allocated size (0 = volatile buffer) */
+ size_t unit; /* reallocation unit size (0 = read-only buffer) */
+};
-/**********
- * MACROS *
- **********/
+/* CONST_BUF: global buffer from a string litteral */
+#define BUF_STATIC(string) \
+ { (uint8_t *)string, sizeof string -1, sizeof string, 0, 0 }
-#define STRLEN(x) (sizeof(x) - 1)
+/* VOLATILE_BUF: macro for creating a volatile buffer on the stack */
+#define BUF_VOLATILE(strname) \
+ { (uint8_t *)strname, strlen(strname), 0, 0, 0 }
-/* CONST_BUF • global buffer from a string litteral */
-#define CONST_BUF(name, string) \
- static struct buf name = { string, sizeof string -1, sizeof string }
+/* BUFPUTSL: optimized bufputs of a string litteral */
+#define BUFPUTSL(output, literal) \
+ bufput(output, literal, sizeof literal - 1)
+/* bufgrow: increasing the allocated size to the given value */
+int bufgrow(struct buf *, size_t);
-/* VOLATILE_BUF • macro for creating a volatile buffer on the stack */
-#define VOLATILE_BUF(name, strname) \
- struct buf name = { strname, strlen(strname) }
+/* bufnew: allocation of a new buffer */
+struct buf *bufnew(size_t) __attribute__ ((malloc));
+/* bufnullterm: NUL-termination of the string array (making a C-string) */
+const char *bufcstr(struct buf *);
-/* BUFPUTSL • optimized bufputs of a string litteral */
-#define BUFPUTSL(output, litteral) \
- bufput(output, litteral, sizeof litteral - 1)
+/* bufprefix: compare the beginning of a buffer with a string */
+int bufprefix(const struct buf *buf, const char *prefix);
+/* bufput: appends raw data to a buffer */
+void bufput(struct buf *, const void *, size_t);
+/* bufputs: appends a NUL-terminated string to a buffer */
+void bufputs(struct buf *, const char *);
-/********************
- * BUFFER FUNCTIONS *
- ********************/
+/* bufputc: appends a single char to a buffer */
+void bufputc(struct buf *, int);
-/* bufcasecmp • case-insensitive buffer comparison */
-int
-bufcasecmp(const struct buf *, const struct buf *);
+/* bufrelease: decrease the reference count and free the buffer if needed */
+void bufrelease(struct buf *);
-/* bufcmp • case-sensitive buffer comparison */
-int
-bufcmp(const struct buf *, const struct buf *);
+/* bufreset: frees internal data of the buffer */
+void bufreset(struct buf *);
-/* bufcmps • case-sensitive comparison of a string to a buffer */
-int
-bufcmps(const struct buf *, const char *);
+/* bufslurp: removes a given number of bytes from the head of the array */
+void bufslurp(struct buf *, size_t);
-/* bufprefix * compare the beginning of a buffer with a string */
-int
-bufprefix(const struct buf *buf, const char *prefix);
+/* bufprintf: formatted printing to a buffer */
+void bufprintf(struct buf *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
-/* bufdup • buffer duplication */
-struct buf *
-bufdup(const struct buf *, size_t)
- __attribute__ ((malloc));
+/* vbufprintf: stdarg variant of formatted printing into a buffer */
+void vbufprintf(struct buf *, const char * , va_list);
-/* bufgrow • increasing the allocated size to the given value */
-int
-bufgrow(struct buf *, size_t);
-
-/* bufnew • allocation of a new buffer */
-struct buf *
-bufnew(size_t)
- __attribute__ ((malloc));
-
-/* bufnullterm • NUL-termination of the string array (making a C-string) */
-void
-bufnullterm(struct buf *);
-
-/* bufprintf • formatted printing to a buffer */
-void
-bufprintf(struct buf *, const char *, ...)
- __attribute__ ((format (printf, 2, 3)));
-
-/* bufput • appends raw data to a buffer */
-void
-bufput(struct buf *, const void*, size_t);
-
-/* bufputs • appends a NUL-terminated string to a buffer */
-void
-bufputs(struct buf *, const char*);
-
-/* bufputc • appends a single char to a buffer */
-void
-bufputc(struct buf *, char);
-
-/* bufrelease • decrease the reference count and free the buffer if needed */
-void
-bufrelease(struct buf *);
-
-/* bufreset • frees internal data of the buffer */
-void
-bufreset(struct buf *);
-
-/* bufset • safely assigns a buffer to another */
-void
-bufset(struct buf **, struct buf *);
-
-/* bufslurp • removes a given number of bytes from the head of the array */
-void
-bufslurp(struct buf *, size_t);
-
-/* buftoi • converts the numbers at the beginning of the buf into an int */
-int
-buftoi(struct buf *, size_t, size_t *);
-
-
-
-#ifdef BUFFER_STDARG
-#include <stdarg.h>
-
-/* vbufprintf • stdarg variant of formatted printing into a buffer */
-void
-vbufprintf(struct buf *, const char*, va_list);
-
-#endif /* def BUFFER_STDARG */
-
-#endif /* ndef LITHIUM_BUFFER_H */
-
-/* vim: set filetype=c: */
+#endif