9 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
13 #define KSTRING_T kstring_t
14 typedef struct __kstring_t
21 int ksprintf ( kstring_t
* s
, const char * fmt
, ... );
22 int ksplit_core ( char * s
, int delimiter
, int * _max
, int ** _offsets
);
24 // calculate the auxiliary array, allocated by calloc()
25 int * ksBM_prep ( const uint8_t * pat
, int m
);
27 /* Search pat in str and returned the list of matches. The size of the
28 * list is returned as n_matches. _prep is the array returned by
29 * ksBM_prep(). If it is a NULL pointer, ksBM_prep() will be called. */
30 int * ksBM_search ( const uint8_t * str
, int n
, const uint8_t * pat
, int m
, int * _prep
, int * n_matches
);
32 static inline int kputsn ( const char * p
, int l
, kstring_t
* s
)
34 if ( s
->l
+ l
+ 1 >= s
->m
)
38 s
->s
= ( char * ) realloc ( s
->s
, s
->m
);
41 strncpy ( s
->s
+ s
->l
, p
, l
);
47 static inline int kputs ( const char * p
, kstring_t
* s
)
49 return kputsn ( p
, strlen ( p
), s
);
52 static inline int kputc ( int c
, kstring_t
* s
)
54 if ( s
->l
+ 1 >= s
->m
)
58 s
->s
= ( char * ) realloc ( s
->s
, s
->m
);
66 static inline int * ksplit ( kstring_t
* s
, int delimiter
, int * n
)
68 int max
= 0, *offsets
= 0;
69 *n
= ksplit_core ( s
->s
, delimiter
, &max
, &offsets
);