ucx/string.h

changeset 1
1bcaac272cdf
child 5
88625853ae74
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ucx/string.h	Fri Nov 30 21:18:13 2012 +0100
@@ -0,0 +1,99 @@
+/*
+ * File:   sstring.h
+ * Author: olaf
+ *
+ * Created on 17. Juni 2010, 13:26
+ */
+
+#ifndef _SSTRING_H
+#define	_SSTRING_H
+
+#include "ucx.h"
+#include <stddef.h>
+
+/* use macros for literals only */
+#define S(s) { (char*)s, sizeof(s)-1 }
+#define ST(s) sstrn((char*)s, sizeof(s)-1)
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef struct sstring {
+    char   *ptr;
+    size_t length;
+} sstr_t;
+
+/*
+ * creates a new sstr_t from a null terminated string
+ *
+ * s  null terminated string
+ */
+sstr_t sstr(char *s);
+
+/*
+ * creates a new sstr_t from a string and length
+ *
+ * s  string
+ * n  length of string
+ */
+sstr_t sstrn(char *s, size_t n);
+
+
+/*
+ * gets the length of n sstr_t strings
+ *
+ * n    number of strings
+ * s    string
+ * ...  strings
+ */
+size_t sstrnlen(size_t n, sstr_t s, ...);
+
+
+/*
+ * concatenates n strings
+ *
+ * n    number of strings
+ * s    new string with enough memory allocated
+ * ...  strings
+ */
+sstr_t sstrncat(size_t n, sstr_t s, sstr_t c1, ...);
+
+
+/*
+ *
+ */
+sstr_t sstrsubs(sstr_t s, size_t start);
+
+/*
+ *
+ */
+sstr_t sstrsubsl(sstr_t s, size_t start, size_t length);
+
+/*
+ * splits s into n parts
+ *
+ * s    the string to split
+ * d    the delimiter string
+ * n    the maximum size of the resulting list
+ *      a size of 0 indicates an unbounded list size
+ *      the actual size of the list will be stored here
+ *
+ *      Hint: use this value to avoid dynamic reallocation of the result list
+ *
+ * Returns a list of the split strings
+ * NOTE: this list needs to be freed manually after usage
+ *
+ * Returns NULL on error
+ */
+sstr_t* sstrsplit(sstr_t s, sstr_t d, size_t *n);
+
+int sstrcmp(sstr_t s1, sstr_t s2);
+
+sstr_t sstrdup(sstr_t s);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* _SSTRING_H */

mercurial