more functions in 'kstrings'
[k8jam.git] / kstrings.h
blob3761cea2f408ad0a8c1181ee2ae468ab1ce6f0c7
1 #ifndef JAMH_KSTRINGS_H
2 #define JAMH_KSTRINGS_H
3 /* Copyright David Abrahams 2004. Distributed under the Boost */
4 /* Software License, Version 1.0. (See accompanying */
5 /* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */
7 #include <stddef.h>
10 typedef struct {
11 char *value;
12 unsigned long size;
13 unsigned long capacity;
14 char opt[32];
15 #ifndef NDEBUG
16 char magic[4];
17 #endif
18 } tKString;
21 extern void kStringNew (tKString *s);
22 extern void kStringFree (tKString *s);
23 extern void kStringReserve (tKString *self, size_t capacity);
24 extern void kStringAppend (tKString *self, char const *rhs);
25 extern void kStringAppendRange (tKString *self, char const *start, char const *finish); // *finish will not be included
26 extern void kStringCopy (tKString *s, char const *rhs); // calls kStringNew(s)
27 extern void kStringTruncate (tKString *self, size_t n);
28 extern char kStringPopBack (tKString *self); // returns 'popped' char (0 if string is empty)
29 extern void kStringPushBack (tKString *self, char x);
30 extern char kStringBack (tKString *self); // return last char (0 if string is empty)
31 extern char *kStringCStr (tKString *s);
32 extern int kStringLen (tKString *s);
34 #ifndef NDEBUG
35 extern void kStringUnitTest (void);
36 #endif
39 #endif