summaryrefslogtreecommitdiff
path: root/src/include/skalibs/bytestr.h
blob: ff2851c14cef6773d19097c29696d788d09354db (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
64
65
66
67
/* ISC license. */

#ifndef BYTESTR_H
#define BYTESTR_H

#include <skalibs/config.h>
#include <skalibs/gccattributes.h>

/* for Alphas and other archs where char != 8bit */
#define T8(x)   ((x) & 0xffU)

#ifndef SKALIBS_FLAG_REPLACE_LIBC

#include <sys/types.h>
#include <string.h>

#define byte_copy(to, n, from) memmove(to, (from), n)
#define byte_copyr(to, n, from) memmove(to, (from), n)
#define byte_diff(a, n, b) memcmp(a, (b), n)
#define byte_zero(p, n) memset(p, 0, n)
#define str_len(s) strlen(s)
#define str_nlen(s, max) strnlen(s, max)
#define str_diff(a, b) strcmp(a, b)
#define str_diffn(a, b, n) strncmp(a, b, n)
#define str_copy(to, from) strlen(strcpy(to, from))

#else

extern void byte_copy (char *, unsigned int, char const *) ;
extern void byte_copyr (char *, unsigned int, char const *) ;
extern int byte_diff (char const *, unsigned int, char const *) gccattr_pure ;
extern void byte_zero (void *, unsigned int) ;
extern unsigned int str_len (char const *) gccattr_pure ;
#define str_nlen(s, max) byte_chr(s, (max), 0)
extern int str_diff (char const *, char const *) gccattr_pure ;
extern int str_diffn (char const *, char const *, unsigned int) gccattr_pure ;
extern unsigned int str_copy (char *, char const *) ;

#endif	


extern unsigned int byte_chr (char const *, unsigned int, int) gccattr_pure ;
extern unsigned int byte_rchr (char const *, unsigned int, int) gccattr_pure ;
extern unsigned int byte_in (char const *, unsigned int, char const *, unsigned int) gccattr_pure ;
#define byte_equal(s, n, t) (!byte_diff((s), (n), (t)))
extern unsigned int byte_count (char const *, unsigned int, char) gccattr_pure ;

#define str_diffb(a, n, b) str_diffn(a, (b), n)
extern unsigned int str_chr (char const *, int) gccattr_pure ;
extern unsigned int str_rchr (char const *, int) gccattr_pure ;
extern int str_start (char const *, char const *) gccattr_pure ;
#define str_equal(s, t) (!str_diff(s, t))
extern unsigned int str_strn (char const *, unsigned int, char const *, unsigned int) gccattr_pure ;

extern void case_lowers (char *) ;
extern void case_lowerb (char *, unsigned int) ;
extern void case_uppers (char *) ;
extern void case_upperb (char *, unsigned int) ;
#define case_equals(a, b) (!case_diffs(a, b))
#define case_equalb(a, n, b) (!case_diffb(a, n, b))
extern int case_diffs (char const *, char const *) gccattr_pure ;
extern int case_diffb (char const *, unsigned int, char const *) gccattr_pure ;
#define case_starts(s, t) case_startb(s, str_len(s), t)
extern int case_startb (char const *, unsigned int, char const *) gccattr_pure ;
extern unsigned int case_str (char const *, char const *) gccattr_pure ;

#endif