annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
1 #ifndef KSTRING_H
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
2 #define KSTRING_H
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
3
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
4 #include <stdlib.h>
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
5 #include <string.h>
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
6
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
7 #ifndef kroundup32
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
8 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
9 #endif
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
10
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
11 #ifndef KSTRING_T
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
12 #define KSTRING_T kstring_t
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
13 typedef struct __kstring_t {
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
14 size_t l, m;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
15 char *s;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
16 } kstring_t;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
17 #endif
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
18
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
19 static inline int kputs(const char *p, kstring_t *s)
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
20 {
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
21 int l = strlen(p);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
22 if (s->l + l + 1 >= s->m) {
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
23 s->m = s->l + l + 2;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
24 kroundup32(s->m);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
25 s->s = (char*)realloc(s->s, s->m);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
26 }
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
27 strcpy(s->s + s->l, p);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
28 s->l += l;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
29 return l;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
30 }
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
31
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
32 static inline int kputc(int c, kstring_t *s)
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
33 {
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
34 if (s->l + 1 >= s->m) {
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
35 s->m = s->l + 2;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
36 kroundup32(s->m);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
37 s->s = (char*)realloc(s->s, s->m);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
38 }
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
39 s->s[s->l++] = c;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
40 s->s[s->l] = 0;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
41 return c;
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
42 }
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
43
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
44 int ksprintf(kstring_t *s, const char *fmt, ...);
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
45
acc2ca1a3ba4 Uploaded
siyuan
parents:
diff changeset
46 #endif