comparison src/ploki/Str.h @ 4223:ac0403686959

<oerjan> rm -rf src/ploki; mv ploki src
author HackBot
date Fri, 20 Dec 2013 22:18:50 +0000
parents
children
comparison
equal deleted inserted replaced
4222:b0f3e267bb1e 4223:ac0403686959
1 #ifndef STR_H_
2 #define STR_H_
3
4 #include "config.h"
5
6 #include <stdio.h>
7
8 typedef struct {
9 char *buf;
10 size_t length;
11 size_t size;
12 size_t offset;
13 } String;
14
15 void St_init (String *);
16 void St_fake (String *, char *, size_t);
17 void St_clear (String *);
18 #if 0
19 void St_zero (String *);
20 ATTR_PURE
21 char *St_ptr (const String *);
22 ATTR_PURE
23 size_t St_len (const String *);
24 void St_grow (String *, size_t);
25 #endif
26 void St_trunc (String *, size_t);
27 #if 0
28 ATTR_PURE
29 int St_lastchar (const String *);
30 ATTR_PURE
31 int St_firstchar (const String *);
32 int St_chop (String *);
33 #endif
34 int St_shift (String *);
35 size_t St_shiftws (String *);
36 #if 0
37 ATTR_PURE
38 int St_index (const String *, size_t);
39 #endif
40 ATTR_PURE
41 size_t St_chr (const String *, int);
42 #if 0
43 size_t St_rchr (const String *, int);
44 #endif
45 ATTR_PURE
46 int St_cmp (const String *, const String *);
47 ATTR_PURE
48 int St_cmp_m (const String *, const void *, size_t);
49 #if 0
50 ATTR_PURE
51 int St_cmp_s (const String *, const char *);
52 ATTR_PURE
53 int St_ncmp (const String *, const String *);
54 #endif
55 ATTR_PURE
56 int St_ncmp_m (const String *, const void *, size_t);
57 #if 0
58 ATTR_PURE
59 int St_ncmp_s (const String *, const char *);
60 ATTR_PURE
61 int St_casecmp (const String *, const String *);
62 ATTR_PURE
63 int St_casecmp_m (const String *, const void *, size_t);
64 ATTR_PURE
65 int St_casecmp_s (const String *, const char *);
66 ATTR_PURE
67 int St_ncasecmp (const String *, const String *);
68 ATTR_PURE
69 int St_ncasecmp_m (const String *, const void *, size_t);
70 ATTR_PURE
71 int St_ncasecmp_s (const String *, const char *);
72 #endif
73 ATTR_PURE
74 size_t St_str (const String *, const String *);
75 ATTR_PURE
76 size_t St_str_m (const String *, const void *, size_t);
77 #if 0
78 ATTR_PURE
79 size_t St_str_s (const String *, const char *);
80 ATTR_PURE
81 size_t St_rstr (const String *, const String *);
82 #endif
83 ATTR_PURE
84 size_t St_rstr_m (const String *, const void *, size_t);
85 ATTR_PURE
86 size_t St_rstr_s (const String *, const char *);
87 ATTR_PURE
88 size_t St_stro_m (const String *, size_t, const void *, size_t);
89 ATTR_PURE
90 size_t St_rstro_m (const String *, size_t, const void *, size_t);
91 void St_cpy (String *, const String *);
92 void St_cpy_m (String *, const void *, size_t);
93 void St_cpy_s (String *, const char *);
94 void St_cpy_c (String *, int);
95 void St_cat (String *, const String *);
96 void St_cat_m (String *, const void *, size_t);
97 void St_cat_s (String *, const char *);
98 void St_cat_c (String *, int);
99 #if 0
100 void St_tac (String *, const String *);
101 #endif
102 void St_tac_m (String *, const void *, size_t);
103 void St_tac_s (String *, const char *);
104 void St_tac_c (String *, int);
105 void St_reverse (String *);
106 #if 0
107 void St_map (String *, int (*)(int));
108 #endif
109 void St_grep (String *, int (*)(int));
110 void St_upper (String *);
111 void St_lower (String *);
112 void St_del (String *, size_t, size_t);
113 #if 0
114 void St_ins (String *, size_t, const String *);
115 void St_ins_m (String *, size_t, const void *, size_t);
116 void St_ins_s (String *, size_t, const char *);
117 void St_ins_c (String *, size_t, int);
118 #endif
119 void St_substr (String *, String *, size_t, size_t, const String *);
120 #if HAVE_VSNPRINTF_P
121 ATTR_SPRINTF
122 size_t St_xprintf (String *, const char *, ...);
123 #endif
124 void St_num (String *, double);
125 #if 0
126 size_t St_write (const String *, FILE *);
127 #endif
128 size_t St_read (String *, FILE *, size_t);
129 #if 0
130 int St_getline (String *, FILE *, int);
131 void St_getfile (String *, FILE *);
132 #endif
133 ATTR_PURE
134 size_t St_hash (const String *, size_t);
135
136 #define St_ptr(s) (0 + (s)->buf)
137 #define St_len(s) (0 + (s)->length)
138 #define St_zero(s) ((void)((s)->buf[(s)->length = 0] = '\0'))
139 #define ST_LASTCHAR(s) ((s)->length ? (int)(unsigned char)(s)->buf[(s)->length - 1] : EOF)
140 #define ST_FIRSTCHAR(s) ((s)->length ? (int)(unsigned char)(s)->buf[0] : EOF)
141 #define ST_INDEX(s, n) ((size_t)(n) < (s)->length ? (int)(unsigned char)(s)->buf[(size_t)(n)] : EOF)
142 #define ST_WRITE(s, fp) fwrite((s)->buf, 1, (s)->length, fp)
143
144 #endif /* STR_H_ */