bglibs
bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h
1#ifndef STR__H__
2#define STR__H__
3
4#include <stdarg.h>
5#include "sysdeps.h"
6
25#define STR_BLOCKSIZE 16
26
30struct str
31{
36 char* s;
40 unsigned len;
42 unsigned size;
43};
45typedef struct str str;
46
51struct str_sortentry
52{
54 const char* str;
56 unsigned long len;
57};
60
63extern const char str_lcase_digits[36] __DEPRECATED__;
64extern const char str_ucase_digits[36] __DEPRECATED__;
69int str_init(str* s);
70int str_alloc(str* s, unsigned size, int copy);
72#define str_ready(S,SZ) str_alloc(S,SZ,0)
74#define str_realloc(S,SZ) str_alloc(S,SZ,1)
75void str_free(str* s);
76int str_truncate(str* s, unsigned len);
81int str_copy(str* s, const str* in);
82int str_copys(str* s, const char* in);
83int str_copyb(str* s, const char* in, unsigned len);
84int str_copyf(str* s, const char* format, ...);
85int str_copyfv(str* s, const char* format, va_list ap);
86int str_copyns(str* s, unsigned int count, ...);
87int str_copy2s(str* s, const char* a, const char* b);
88int str_copy3s(str* s, const char* a, const char* b, const char* c);
89int str_copy4s(str* s, const char* a, const char* b, const char* c, const char* d);
90int str_copy5s(str* s, const char* a, const char* b, const char* c, const char* d, const char* e);
91int str_copy6s(str* s, const char* a, const char* b, const char* c, const char* d, const char* e, const char* f);
96int str_cat(str* s, const str* in);
97int str_cats(str* s, const char* in);
98int str_catc(str* s, char in);
99int str_catb(str* s, const char* in, unsigned len);
100int str_catf(str* s, const char* format, ...);
101int str_catfv(str* s, const char* format, va_list ap);
102int str_cati(str* s, long in);
103int str_catiw(str* s, long in, unsigned width, char pad);
104int str_catu(str* s, unsigned long in);
105int str_catuw(str* s, unsigned long in, unsigned width, char pad);
106int str_catx(str* s, unsigned long in);
107int str_catxw(str* s, unsigned long in, unsigned width, char pad);
108int str_catill(str* s, long long in);
109int str_catiwll(str* s, long long in, unsigned width, char pad);
110int str_catull(str* s, unsigned long long in);
111int str_catuwll(str* s, unsigned long long in, unsigned width, char pad);
112int str_catxll(str* s, unsigned long long in);
113int str_catxwll(str* s, unsigned long long in, unsigned width, char pad);
114int str_catsnumw(str* s, long in, unsigned width, char pad,
115 unsigned base, const char* digits);
116int str_catunumw(str* s, unsigned long in, unsigned width, char pad,
117 unsigned base, const char* digits);
118int str_catsllnumw(str* s, long long in, unsigned width, char pad,
119 unsigned base, const char* digits);
120int str_catullnumw(str* s, unsigned long long in, unsigned width, char pad,
121 unsigned base, const char* digits);
122int str_catns(str* s, unsigned int count, ...);
123int str_cat2s(str* s, const char* a, const char* b);
124int str_cat3s(str* s, const char* a, const char* b, const char* c);
125int str_cat4s(str* s, const char* a, const char* b, const char* c, const char* d);
126int str_cat5s(str* s, const char* a, const char* b, const char* c, const char* d, const char* e);
127int str_cat6s(str* s, const char* a, const char* b, const char* c, const char* d, const char* e, const char* f);
128
129int str_join(str* s, char sep, const str* t);
130int str_joins(str* s, char sep, const char* in);
131int str_joinb(str* s, char sep, const char* in, unsigned len);
135/* @{ */
136void str_lower(str* s);
137void str_upper(str* s);
138long str_subst(str* s, char from, char to);
139void str_lstrip(str* s);
140void str_rstrip(str* s);
141#define str_strip(S) (str_rstrip(S), str_lstrip(S))
142void str_lcut(str* s, unsigned count);
143void str_rcut(str* s, unsigned count);
144int str_sort(str* s, char sep, long count,
145 int (*fn)(const str_sortentry* a, const str_sortentry* b));
146int str_splice(str* s, unsigned start, unsigned len, const str* r);
147int str_splices(str* s, unsigned start, unsigned len, const char* r);
148int str_spliceb(str* s, unsigned start, unsigned len,
149 const char* r, unsigned rlen);
150long str_xlate(str* s, const char* from, const char* to, unsigned nchars);
155int str_cmp(const str* a, unsigned aoffset, const str* b, unsigned boffset);
156int str_cmps(const str* a, unsigned offset, const char* b);
157int str_cmpb(const str* a, unsigned offset, const char* b, unsigned len);
158
159int str_diff(const str* a, const str* b);
160int str_diffs(const str* a, const char* b);
161int str_diffb(const str* a, const char* b, unsigned len);
162
163int str_start(const str* a, const str* b);
164int str_starts(const str* a, const char* b);
165int str_startb(const str* a, const char* b, unsigned len);
166
167int str_case_start(const str* a, const str* b);
168int str_case_starts(const str* a, const char* b);
169int str_case_startb(const str* a, const char* b, unsigned len);
170
171int str_end(const str* a, const str* b);
172int str_ends(const str* a, const char* b);
173int str_endb(const str* a, const char* b, unsigned len);
174
175int str_case_end(const str* a, const str* b);
176int str_case_ends(const str* a, const char* b);
177int str_case_endb(const str* a, const char* b, unsigned len);
182void str_buildmap(int map[256], const char* list);
183unsigned str_count(const str* s, char ch);
184unsigned str_countof(const str* s, const char* list);
185#define str_findfirst(S,C) str_findnext(S,C,0)
186#define str_findfirstof(S,L) str_findnextof(S,L,0)
187#define str_findfirstnot(S,L) str_findnextnot(S,L,0)
188#define str_findlast(S,C) str_findprev(S,C,-1)
189#define str_findlastof(S,L) str_findprevof(S,L,-1)
190#define str_findlastnot(S,L) str_findprevof(S,L,-1)
191int str_findnext(const str* s, char ch, unsigned pos);
192int str_findnextof(const str* s, const char* list, unsigned pos);
193int str_findnextnot(const str* s, const char* list, unsigned pos);
194int str_findprev(const str* s, char ch, unsigned pos);
195int str_findprevof(const str* s, const char* list, unsigned pos);
196int str_findprevnot(const str* s, const char* list, unsigned pos);
201int str_match(const str* s, const str* pattern);
202int str_matchb(const str* s, const char* pptr, unsigned plen);
203int str_matchs(const str* s, const char* pattern);
204int str_case_match(const str* s, const str* pattern);
205int str_case_matchb(const str* s, const char* pptr, unsigned plen);
206int str_case_matchs(const str* s, const char* pattern);
207int str_glob(const str* s, const str* pattern);
208int str_globb(const str* s, const char* pptr, unsigned plen);
209int str_globs(const str* s, const char* pattern);
210int str_case_glob(const str* s, const str* pattern);
211int str_case_globb(const str* s, const char* pptr, unsigned plen);
212int str_case_globs(const str* s, const char* pattern);
217#endif
int str_findnextof(const str *s, const char *list, unsigned pos)
Definition: findnextof.c:22
int str_catunumw(str *s, unsigned long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catunum.c:22
int str_catxw(str *s, unsigned long in, unsigned width, char pad)
Definition: catxw.c:22
int str_copy2s(str *s, const char *a, const char *b)
Definition: copy2s.c:22
void str_rstrip(str *s)
Definition: rstrip.c:22
int str_copys(str *s, const char *in)
Definition: copy.c:28
int str_sort(str *s, char sep, long count, int(*fn)(const str_sortentry *a, const str_sortentry *b))
Definition: sort.c:51
int str_cmps(const str *a, unsigned offset, const char *b)
Definition: cmp.c:34
int str_copy6s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e, const char *f)
Definition: copy6s.c:22
int str_truncate(str *s, unsigned len)
Definition: truncate.c:27
int str_catx(str *s, unsigned long in)
Definition: catxw.c:28
int str_cats(str *s, const char *in)
Definition: cat.c:28
int str_findnext(const str *s, char ch, unsigned pos)
Definition: findnext.c:22
void str_upper(str *s)
Definition: upper.c:22
int str_catf(str *s, const char *format,...)
Definition: catf.c:40
int str_catsllnumw(str *s, long long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catsllnum.c:23
int str_case_match(const str *s, const str *pattern)
Definition: case_match.c:57
int str_copyb(str *s, const char *in, unsigned len)
Definition: copy.c:34
int str_copyns(str *s, unsigned int count,...)
Definition: copyns.c:23
int str_joins(str *s, char sep, const char *in)
Definition: join.c:28
int str_starts(const str *a, const char *b)
Definition: start.c:23
int str_catiw(str *s, long in, unsigned width, char pad)
Definition: catiw.c:28
int str_findprevof(const str *s, const char *list, unsigned pos)
Definition: findprevof.c:22
void str_lcut(str *s, unsigned count)
Definition: cut.c:30
int str_matchs(const str *s, const char *pattern)
Definition: str/match.c:55
unsigned str_countof(const str *s, const char *list)
Definition: countof.c:21
int str_end(const str *a, const str *b)
Definition: end.c:29
int str_match(const str *s, const str *pattern)
Definition: str/match.c:49
int str_case_startb(const str *a, const char *b, unsigned len)
Definition: case_start.c:24
int str_cmpb(const str *a, unsigned offset, const char *b, unsigned len)
Definition: cmp.c:40
long str_xlate(str *s, const char *from, const char *to, unsigned nchars)
Definition: xlate.c:24
int str_diffs(const str *a, const char *b)
Definition: diff.c:35
int str_case_end(const str *a, const str *b)
Definition: case_end.c:45
int str_init(str *s)
Definition: init.c:22
int str_case_endb(const str *a, const char *b, unsigned len)
Definition: case_end.c:24
int str_copy5s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e)
Definition: copy5s.c:22
int str_cat5s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e)
Definition: cat5s.c:22
unsigned str_count(const str *s, char ch)
Definition: count.c:21
int str_copy3s(str *s, const char *a, const char *b, const char *c)
Definition: copy3s.c:22
int str_catiwll(str *s, long long in, unsigned width, char pad)
Definition: catiwll.c:29
int str_catns(str *s, unsigned int count,...)
Definition: catns.c:23
int str_copyfv(str *s, const char *format, va_list ap)
Definition: copyf.c:22
int str_catuwll(str *s, unsigned long long in, unsigned width, char pad)
Definition: catuwll.c:29
int str_cat(str *s, const str *in)
Definition: cat.c:22
int str_diff(const str *a, const str *b)
Definition: diff.c:29
int str_case_start(const str *a, const str *b)
Definition: case_start.c:45
long str_subst(str *s, char from, char to)
Definition: subst.c:24
int str_catb(str *s, const char *in, unsigned len)
Definition: cat.c:43
int str_catfv(str *s, const char *format, va_list ap)
Definition: catf.c:22
int str_catu(str *s, unsigned long in)
Definition: catuw.c:28
int str_case_matchs(const str *s, const char *pattern)
Definition: case_match.c:63
int str_diffb(const str *a, const char *b, unsigned len)
Definition: diff.c:41
int str_case_matchb(const str *s, const char *pptr, unsigned plen)
Definition: case_match.c:24
int str_case_starts(const str *a, const char *b)
Definition: case_start.c:39
void str_buildmap(int map[256], const char *list)
Definition: buildmap.c:27
int str_copy(str *s, const str *in)
Definition: copy.c:22
int str_catull(str *s, unsigned long long in)
Definition: catuwll.c:22
void str_lstrip(str *s)
Definition: lstrip.c:23
int str_cat4s(str *s, const char *a, const char *b, const char *c, const char *d)
Definition: cat4s.c:22
void str_free(str *s)
Definition: free.c:24
int str_copyf(str *s, const char *format,...)
Definition: copyf.c:40
int str_ends(const str *a, const char *b)
Definition: end.c:23
void str_rcut(str *s, unsigned count)
Definition: cut.c:22
void str_lower(str *s)
Definition: lower.c:22
int str_cat3s(str *s, const char *a, const char *b, const char *c)
Definition: cat3s.c:22
int str_catxwll(str *s, unsigned long long in, unsigned width, char pad)
Definition: catxwll.c:29
int str_catullnumw(str *s, unsigned long long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catullnum.c:23
int str_alloc(str *s, unsigned size, int copy)
Definition: alloc.c:32
int str_endb(const str *a, const char *b, unsigned len)
Definition: end.c:35
int str_cat6s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e, const char *f)
Definition: cat6s.c:22
int str_start(const str *a, const str *b)
Definition: start.c:29
int str_findprev(const str *s, char ch, unsigned pos)
Definition: findprev.c:21
int str_copy4s(str *s, const char *a, const char *b, const char *c, const char *d)
Definition: copy4s.c:22
const char str_ucase_digits[36]
Definition: digits.c:7
int str_matchb(const str *s, const char *pptr, unsigned plen)
Definition: str/match.c:23
int str_catuw(str *s, unsigned long in, unsigned width, char pad)
Definition: catuw.c:22
int str_catc(str *s, char in)
Definition: cat.c:34
int str_joinb(str *s, char sep, const char *in, unsigned len)
Definition: join.c:34
int str_catxll(str *s, unsigned long long in)
Definition: catxwll.c:22
int str_cati(str *s, long in)
Definition: catiw.c:22
int str_case_ends(const str *a, const char *b)
Definition: case_end.c:39
int str_catsnumw(str *s, long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catsnum.c:22
int str_cmp(const str *a, unsigned aoffset, const str *b, unsigned boffset)
Definition: cmp.c:28
int str_startb(const str *a, const char *b, unsigned len)
Definition: start.c:35
int str_cat2s(str *s, const char *a, const char *b)
Definition: cat2s.c:22
int str_join(str *s, char sep, const str *t)
Definition: join.c:22
int str_catill(str *s, long long in)
Definition: catiwll.c:22
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:52
unsigned long len
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:56
const char * str
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:54
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:31
unsigned size
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:42
unsigned len
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:40
char * s
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:36