1 #ifndef RH_STRING_H
 2 #define RH_STRING_H
 3 
 4 #include <sys/types.h>
 5 #include <stdint.h>
 6 #include <string.h>
 7 
 8 typedef struct const_string const_string_t;
 9 
10 struct const_string {
11         const char      *data;
12         size_t          used;
13 };
14 
15 const char * rh_str_rnrn (const char *data, size_t ndata);
16 
17 int rh_memcasecmp (const void *s1, const void *s2, size_t n);
18 
19 #define rh_memcmp(_s1,_s2,_n)   memcmp((_s1),(_s2),(_n))
20 
21 char * rh_uint2str (char *dst, size_t ndst, size_t number, size_t *len);
22 
23 size_t rh_hashcase33 (const char *src, size_t nsrc);
24 
25 void rh_bzero (register void *s, register size_t n);
26 void * rh_memcpy (void *pdst, const void *src, size_t n);
27 
28 #define CONST_LEN(_str)         (sizeof((_str))-1)
29 #define CONST_STR_LEN(_str)     _str, CONST_LEN(_str)
30 
31 #define CONST_LTRIM(_str,_nstr,_func)   \
32         for (;(_nstr) && _func ((_str)[0]); --(_nstr), ++(_str))
33                         
34 #define CONST_RTRIM(_str,_nstr,_func)   \
35         for (;(_nstr) && _func((_str)[(_nstr)-1]);--(_nstr))
36         
37 
38 #define RH_EQUAL4(_a,_b)        ( *((uint32_t*)(_a)) == *((uint32_t*)(_b)) )
39 #define RH_EQUAL2(_a,_b)        ( *((uint16_t*)(_a)) == *((uint16_t*)(_b)) )
40 
41 #define RH_MEMCPY4(_a,_b)       ( *((uint32_t*)(_a)) = *((uint32_t*)(_b)) )
42 
43 #define TYPE_ZERO(_ptr)         ( memset( (_ptr), 0, sizeof(*(_ptr)) ) ) 
44 
45 #endif /* RH_STRING_H */


syntax highlighted by Code2HTML, v. 0.9.1