diff options
author | rsc <devnull@localhost> | 2003-12-11 18:15:57 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2003-12-11 18:15:57 +0000 |
commit | 7f11104a5737adf261d10bc1a7b85e740f2eb491 (patch) | |
tree | 2473f5fbdd42b74b189e2fcc2a46896a50ede030 /include/libString.h | |
parent | 57ccfb9e8f51138c33ad5f58e14c0e54246cf5c4 (diff) | |
download | plan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.tar.gz plan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.tar.bz2 plan9port-7f11104a5737adf261d10bc1a7b85e740f2eb491.zip |
Add libString.
Diffstat (limited to 'include/libString.h')
-rw-r--r-- | include/libString.h | 46 |
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 |