root/cherokee/trunk/cherokee/buffer.h

Revision 1852, 7.3 kB (checked in by alo, 3 weeks ago)

--

Line 
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2
3 /* Cherokee
4  *
5  * Authors:
6  *      Alvaro Lopez Ortega <alvaro@alobbs.com>
7  *
8  * Copyright (C) 2001-2008 Alvaro Lopez Ortega
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of version 2 of the GNU General Public
12  * License as published by the Free Software Foundation.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22  * USA
23  */
24
25 #if !defined (CHEROKEE_INSIDE_CHEROKEE_H) && !defined (CHEROKEE_COMPILATION)
26 # error "Only <cherokee/cherokee.h> can be included directly, this file may disappear or change contents."
27 #endif
28
29 #ifndef CHEROKEE_BUFFER_H
30 #define CHEROKEE_BUFFER_H
31
32 #include <cherokee/common.h>
33 #include <stddef.h>
34 #include <stdarg.h>
35 #include <stdlib.h>
36 #include <string.h>
37
38
39 CHEROKEE_BEGIN_DECLS
40
41 typedef struct {
42         char    *buf;        /**< Memory chunk           */
43         cuint_t  size;       /**< Total amount of memory */
44         cuint_t  len;        /**< Length of the string   */
45 } cherokee_buffer_t;
46
47 #define BUF(x) ((cherokee_buffer_t *)(x))
48 #define CHEROKEE_BUF_INIT      {NULL, 0, 0}
49
50 #define cherokee_buffer_is_empty(b)        (BUF(b)->len == 0)
51 #define cherokee_buffer_add_str(b,s)       cherokee_buffer_add (b, s, CSZLEN(s))
52 #define cherokee_buffer_prepend_str(b,s)   cherokee_buffer_prepend (b, s, CSZLEN(s))
53 #define cherokee_buffer_prepend_buf(b,s)   cherokee_buffer_prepend (b, (s)->buf, (s)->len)
54 #define cherokee_buffer_cmp_str(b,s)       cherokee_buffer_cmp (b, s, sizeof(s)-1)
55 #define cherokee_buffer_case_cmp_str(b,s)  cherokee_buffer_case_cmp (b, s, sizeof(s)-1)
56
57 ret_t cherokee_buffer_new                (cherokee_buffer_t **buf);
58 ret_t cherokee_buffer_free               (cherokee_buffer_t  *buf);
59 ret_t cherokee_buffer_init               (cherokee_buffer_t  *buf);
60 ret_t cherokee_buffer_mrproper           (cherokee_buffer_t  *buf);
61 void  cherokee_buffer_fake               (cherokee_buffer_t  *buf, const char *str, cuint_t len);
62
63 void  cherokee_buffer_clean              (cherokee_buffer_t  *buf);
64 ret_t cherokee_buffer_dup                (cherokee_buffer_t  *buf, cherokee_buffer_t **dup);
65 void  cherokee_buffer_swap_buffers       (cherokee_buffer_t  *buf, cherokee_buffer_t *second);       
66
67 ret_t cherokee_buffer_add                (cherokee_buffer_t  *buf, const char *txt, size_t size);
68 ret_t cherokee_buffer_add_long10         (cherokee_buffer_t  *buf, clong_t lNum);
69 ret_t cherokee_buffer_add_llong10        (cherokee_buffer_t  *buf, cllong_t lNum);
70 ret_t cherokee_buffer_add_ulong10        (cherokee_buffer_t  *buf, culong_t ulNum);
71 ret_t cherokee_buffer_add_ullong10       (cherokee_buffer_t  *buf, cullong_t ulNum);
72 ret_t cherokee_buffer_add_ulong16        (cherokee_buffer_t  *buf, culong_t ulNum);
73 ret_t cherokee_buffer_add_ullong16       (cherokee_buffer_t  *buf, cullong_t ulNum);
74 ret_t cherokee_buffer_add_va             (cherokee_buffer_t  *buf, char *format, ...);
75 ret_t cherokee_buffer_add_va_fixed       (cherokee_buffer_t  *buf, char *format, ...);
76 ret_t cherokee_buffer_add_va_list        (cherokee_buffer_t  *buf, char *format, va_list args);
77 ret_t cherokee_buffer_add_char           (cherokee_buffer_t  *buf, char c);
78 ret_t cherokee_buffer_add_char_n         (cherokee_buffer_t  *buf, char c, int n);
79 ret_t cherokee_buffer_add_buffer         (cherokee_buffer_t  *buf, cherokee_buffer_t *buf2);
80 ret_t cherokee_buffer_add_fsize          (cherokee_buffer_t  *buf, CST_SIZE size);
81 ret_t cherokee_buffer_prepend            (cherokee_buffer_t  *buf, char *txt, size_t size);
82
83 cint_t cherokee_buffer_cmp               (cherokee_buffer_t  *buf, char *txt, cuint_t txt_len);
84 cint_t cherokee_buffer_cmp_buf           (cherokee_buffer_t  *buf, cherokee_buffer_t *buf2);
85 cint_t cherokee_buffer_case_cmp          (cherokee_buffer_t  *buf, char *txt, cuint_t txt_len);
86 cint_t cherokee_buffer_case_cmp_buf      (cherokee_buffer_t  *buf, cherokee_buffer_t *buf2);
87
88 ret_t cherokee_buffer_read_file          (cherokee_buffer_t  *buf, char *filename);
89 ret_t cherokee_buffer_read_from_fd       (cherokee_buffer_t  *buf, int fd, size_t size, size_t *ret_size);
90
91 ret_t cherokee_buffer_add_chunked        (cherokee_buffer_t  *buf, char *txt, size_t size);
92 ret_t cherokee_buffer_add_buffer_chunked (cherokee_buffer_t  *buf, cherokee_buffer_t *buf2);
93 ret_t cherokee_buffer_convert_to_chunked (cherokee_buffer_t  *buf);
94
95 ret_t cherokee_buffer_move_to_begin      (cherokee_buffer_t  *buf, cuint_t pos);
96 ret_t cherokee_buffer_drop_ending        (cherokee_buffer_t  *buf, cuint_t num_chars);
97 ret_t cherokee_buffer_multiply           (cherokee_buffer_t  *buf, int num);
98 ret_t cherokee_buffer_swap_chars         (cherokee_buffer_t  *buf, char a, char b);
99 ret_t cherokee_buffer_remove_dups        (cherokee_buffer_t  *buf, char c);
100 ret_t cherokee_buffer_remove_string      (cherokee_buffer_t  *buf, char *string, int string_len);
101 ret_t cherokee_buffer_remove_chunk       (cherokee_buffer_t  *buf, cuint_t from, cuint_t len);
102 ret_t cherokee_buffer_replace_string     (cherokee_buffer_t  *buf, char *subs, int subs_len, char *repl, int repl_len);
103 ret_t cherokee_buffer_substitute_string  (cherokee_buffer_t  *bufsrc, cherokee_buffer_t *bufdst, char *subs, int subs_len, char *repl, int repl_len);
104 ret_t cherokee_buffer_trim               (cherokee_buffer_t  *buf);
105
106 ret_t cherokee_buffer_ensure_addlen      (cherokee_buffer_t  *buf, size_t alen);
107 ret_t cherokee_buffer_ensure_size        (cherokee_buffer_t  *buf, size_t size);
108
109 int    cherokee_buffer_is_ending         (cherokee_buffer_t  *buf, char c);
110 char   cherokee_buffer_end_char          (cherokee_buffer_t  *buf);
111 size_t cherokee_buffer_cnt_spn           (cherokee_buffer_t  *buf, cuint_t offset, char *str);
112 size_t cherokee_buffer_cnt_cspn          (cherokee_buffer_t  *buf, cuint_t offset, char *str);
113
114 crc_t cherokee_buffer_crc32              (cherokee_buffer_t  *buf);
115 ret_t cherokee_buffer_encode_base64      (cherokee_buffer_t  *buf, cherokee_buffer_t *encoded);
116 ret_t cherokee_buffer_decode_base64      (cherokee_buffer_t  *buf);
117 ret_t cherokee_buffer_encode_md5         (cherokee_buffer_t  *buf, cherokee_buffer_t *encoded);
118 ret_t cherokee_buffer_encode_md5_digest  (cherokee_buffer_t  *buf);
119 ret_t cherokee_buffer_encode_sha1        (cherokee_buffer_t  *buf, cherokee_buffer_t *encoded);
120 ret_t cherokee_buffer_encode_sha1_base64 (cherokee_buffer_t  *buf, cherokee_buffer_t *encoded);
121 ret_t cherokee_buffer_encode_hex         (cherokee_buffer_t  *buf, cherokee_buffer_t *encoded);
122 ret_t cherokee_buffer_decode_hex         (cherokee_buffer_t  *buf);
123 ret_t cherokee_buffer_unescape_uri       (cherokee_buffer_t  *buf);
124 ret_t cherokee_buffer_add_escape_html    (cherokee_buffer_t  *buf, cherokee_buffer_t *src);
125 ret_t cherokee_buffer_escape_html        (cherokee_buffer_t  *buf, cherokee_buffer_t *src);
126 ret_t cherokee_buffer_add_comma_marks    (cherokee_buffer_t  *buf);
127
128 ret_t cherokee_buffer_to_lowcase         (cherokee_buffer_t  *buf);
129
130 ret_t cherokee_buffer_print_debug        (cherokee_buffer_t  *buf, int length);
131
132
133 CHEROKEE_END_DECLS
134
135 #endif /* CHEROKEE_BUFFER_H */
Note: See TracBrowser for help on using the browser.