↑ 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