aboutsummaryrefslogtreecommitdiff
path: root/include/base/string.h
blob: a59c5535cd4ba7aab95aa7707028accc64c0e402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#pragma once

typedef char* string;

/* basic c string (nul terminated) functions */
intptr   str·len(char *s);

char    *str·findc(char *s, int c);
char    *str·nfindc(char *s, intptr n, int c);
char    *str·efindc(char *s, char *e, int c);

char    *str·rfindc(char *s, int c);
char    *str·nrfindc(char *s, intptr n, int c);
char    *str·erfindc(char *s, char *e, int c);

char    *str·find(char *s, char *sub);
char    *str·nfind(char *s, intptr n, char *sub);
char    *str·efind(char *s, char *e, char *sub);

char    *str·copy(char *dst, char *src);
char    *str·ncopy(char *dst, intptr n, char *src);
char    *str·ecopy(char *dst, char *end, char *src);

char    *str·append(char *dst, char *src);
char    *str·nappend(char *dst, intptr n, char *src);
char    *str·eappend(char *dst, char *end, char *src);

int      str·compare(char *, char *);
int      str·ncompare(char *, intptr len, char *);
int      str·ecompare(char *, char *end, char *);

/* old school interfaces (no error checking) */
long     str·atoi(char *s);
double   str·atof(char *s);
char    *str·itoa(char *s, int x);

/* nicer  */
vlong    str·asint(char *s, char **end);
double   str·asfloat(char *s, char **end);

/* augmented string functions */
string  string·makecap(char *s, vlong len, vlong cap);
string  string·makelen(char *s, vlong len);
string  string·make(char *s);
string  string·makef(char *fmt, ...);
void    string·free(string s);
int     string·len(string s);
int     string·cap(string s);
void    string·clear(string *s);
void    string·grow(string *s, vlong delta);
void    string·fit(string *s);
int     string·appendlen(string *s, vlong len, char *b);
int     string·append(string *s, char *b);
int     string·appendf(string *s, char *fmt, ...);
int     string·appendbyte(string *s, char b);
bool    string·equals(string s, string t);
int     string·find(string s, char *substr);
void    string·lower(string s);
void    string·upper(string s);
int     string·read(string s, int size, int n, void *buf);
void    string·replace(string s, byte* from, byte* to);
string* string·split(string s, byte* tok);
string  string·join(vlong len, byte** fields, byte* sep);