Mercurial > repos > siyuan > prada
comparison pyPRADA_1.2/tools/bwa-0.5.7-mh/kstring.h @ 0:acc2ca1a3ba4
Uploaded
author | siyuan |
---|---|
date | Thu, 20 Feb 2014 00:44:58 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:acc2ca1a3ba4 |
---|---|
1 #ifndef KSTRING_H | |
2 #define KSTRING_H | |
3 | |
4 #include <stdlib.h> | |
5 #include <string.h> | |
6 | |
7 #ifndef kroundup32 | |
8 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x)) | |
9 #endif | |
10 | |
11 #ifndef KSTRING_T | |
12 #define KSTRING_T kstring_t | |
13 typedef struct __kstring_t { | |
14 size_t l, m; | |
15 char *s; | |
16 } kstring_t; | |
17 #endif | |
18 | |
19 static inline int kputs(const char *p, kstring_t *s) | |
20 { | |
21 int l = strlen(p); | |
22 if (s->l + l + 1 >= s->m) { | |
23 s->m = s->l + l + 2; | |
24 kroundup32(s->m); | |
25 s->s = (char*)realloc(s->s, s->m); | |
26 } | |
27 strcpy(s->s + s->l, p); | |
28 s->l += l; | |
29 return l; | |
30 } | |
31 | |
32 static inline int kputc(int c, kstring_t *s) | |
33 { | |
34 if (s->l + 1 >= s->m) { | |
35 s->m = s->l + 2; | |
36 kroundup32(s->m); | |
37 s->s = (char*)realloc(s->s, s->m); | |
38 } | |
39 s->s[s->l++] = c; | |
40 s->s[s->l] = 0; | |
41 return c; | |
42 } | |
43 | |
44 int ksprintf(kstring_t *s, const char *fmt, ...); | |
45 | |
46 #endif |