summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-11-08 07:03:36 -0500
committerSøren Sandmann <sandmann@redhat.com>2008-11-08 07:03:36 -0500
commitbeea00c337ceb360739aa2bd435bea88b286c0dc (patch)
tree0e6d5c1bf8436e374d54d9ece407278e6e6960e8
parent69db4fe2701e3ca793ac15d4ff65772194a94968 (diff)
Add string API
-rw-r--r--libnul.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/libnul.h b/libnul.h
index 2c614aa..539f8f2 100644
--- a/libnul.h
+++ b/libnul.h
@@ -21,6 +21,7 @@
#include <stdint.h>
#include <glib.h>
+#include <stdarg.h>
/* These macros come from glib */
@@ -49,6 +50,35 @@ void **nul_parr_append (void **arr, gpointer data) G_GNUC_WARN_UNUSED_RESULT;
gsize nul_parr_len (void **arr);
void nul_parr_free (void **arr);
+/* Strings */
+typedef char nul_string_t;
+
+nul_string_t *nul_string_new (void);
+void nul_string_free (void);
+gsize nul_string_len (const nul_string_t *str);
+gboolean nul_string_empty (const nul_string_t *str);
+nul_string_t *nul_string_append_undefined (nul_string_t *string,
+ gsize n_bytes,
+ nul_string_t **tail);
+nul_string_t *nul_string_append (nul_string_t *string,
+ const char *bytes,
+ gssize n_bytes);
+nul_string_t *nul_string_append_printf (nul_string_t *string,
+ const char *fmt,
+ ...);
+nul_string_t *nul_string_append_vprintf (nul_string_t *string,
+ const char *fmt,
+ va_list args);
+void nul_string_swap (nul_string_t **str1,
+ nul_string_t **str2);
+void nul_string_transfer_data (nul_string_t **dest,
+ nul_string_t **src,
+ gssize n_bytes);
+nul_string_t *nul_string_delete_head (nul_string_t *str,
+ gsize n_bytes);
+nul_string_t *nul_string_delete_tail (nul_string_t *str,
+ gsize n_bytes);
+
typedef union
{
uint32_t v_uint32;