aboutsummaryrefslogtreecommitdiff
path: root/include/libString.h
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2003-12-11 18:15:57 +0000
committerrsc <devnull@localhost>2003-12-11 18:15:57 +0000
commit7f11104a5737adf261d10bc1a7b85e740f2eb491 (patch)
tree2473f5fbdd42b74b189e2fcc2a46896a50ede030 /include/libString.h
parent57ccfb9e8f51138c33ad5f58e14c0e54246cf5c4 (diff)
downloadplan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.tar.gz
plan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.tar.bz2
plan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.zip
Add libString.
Diffstat (limited to 'include/libString.h')
-rw-r--r--include/libString.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/libString.h b/include/libString.h
new file mode 100644
index 00000000..d8487066
--- /dev/null
+++ b/include/libString.h
@@ -0,0 +1,46 @@
+/*
+#pragma src "/sys/src/libString"
+#pragma lib "libString.a"
+*/
+
+/* extensible Strings */
+typedef struct String {
+ Lock lk;
+ char *base; /* base of String */
+ char *end; /* end of allocated space+1 */
+ char *ptr; /* ptr into String */
+ short ref;
+ uchar fixed;
+} String;
+
+#define s_clone(s) s_copy((s)->base)
+#define s_to_c(s) ((s)->base)
+#define s_len(s) ((s)->ptr-(s)->base)
+
+extern String* s_append(String*, char*);
+extern String* s_array(char*, int);
+extern String* s_copy(char*);
+extern void s_free(String*);
+extern String* s_incref(String*);
+extern String* s_memappend(String*, char*, int);
+extern String* s_nappend(String*, char*, int);
+extern String* s_new(void);
+extern String* s_newalloc(int);
+extern String* s_parse(String*, String*);
+extern String* s_reset(String*);
+extern String* s_restart(String*);
+extern void s_terminate(String*);
+extern void s_tolower(String*);
+extern void s_putc(String*, int);
+extern String* s_unique(String*);
+extern String* s_grow(String*, int);
+
+#ifdef BGETC
+extern int s_read(Biobuf*, String*, int);
+extern char *s_read_line(Biobuf*, String*);
+extern char *s_getline(Biobuf*, String*);
+typedef struct Sinstack Sinstack;
+extern char *s_rdinstack(Sinstack*, String*);
+extern Sinstack *s_allocinstack(char*);
+extern void s_freeinstack(Sinstack*);
+#endif BGETC