1 /*
2  * "streamable kanji code filter and converter"
3  * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
4  *
5  * LICENSE NOTICES
6  *
7  * This file is part of "streamable kanji code filter and converter",
8  * which is distributed under the terms of GNU Lesser General Public
9  * License (version 2) as published by the Free Software Foundation.
10  *
11  * This software is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with "streamable kanji code filter and converter";
18  * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
19  * Suite 330, Boston, MA  02111-1307  USA
20  *
21  * The author of this file:
22  *
23  */
24 /*
25  * The source code included in this files was separated from mbfilter.h
26  * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
27  * mbfilter.h is included in this package .
28  *
29  */
30 
31 #ifndef MBFL_MEMORY_DEVICE_H
32 #define MBFL_MEMORY_DEVICE_H
33 
34 #include "mbfl_defs.h"
35 #include "mbfl_string.h"
36 
37 #define MBFL_MEMORY_DEVICE_ALLOC_SIZE	64
38 
39 typedef struct _mbfl_memory_device {
40 	unsigned char *buffer;
41 	size_t length;
42 	size_t pos;
43 	size_t allocsz;
44 } mbfl_memory_device;
45 
46 typedef struct _mbfl_wchar_device {
47 	unsigned int *buffer;
48 	size_t length;
49 	size_t pos;
50 	size_t allocsz;
51 } mbfl_wchar_device;
52 
53 MBFLAPI extern void mbfl_memory_device_init(
54 		mbfl_memory_device *device, size_t initsz, size_t allocsz);
55 MBFLAPI extern void mbfl_memory_device_realloc(
56 		mbfl_memory_device *device, size_t initsz, size_t allocsz);
57 MBFLAPI extern void mbfl_memory_device_clear(mbfl_memory_device *device);
58 MBFLAPI extern void mbfl_memory_device_reset(mbfl_memory_device *device);
59 MBFLAPI extern mbfl_string * mbfl_memory_device_result(
60 		mbfl_memory_device *device, mbfl_string *result);
61 MBFLAPI extern void mbfl_memory_device_unput(mbfl_memory_device *device);
62 MBFLAPI extern int mbfl_memory_device_output(int c, void *data);
63 MBFLAPI extern int mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc);
64 MBFLAPI extern int mbfl_memory_device_strncat(
65 		mbfl_memory_device *device, const char *psrc, size_t len);
66 MBFLAPI extern int mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src);
67 
68 MBFLAPI extern void mbfl_wchar_device_init(mbfl_wchar_device *device);
69 MBFLAPI extern int mbfl_wchar_device_output(int c, void *data);
70 MBFLAPI extern void mbfl_wchar_device_clear(mbfl_wchar_device *device);
71 
72 #endif /* MBFL_MEMORY_DEVICE_H */
73