summaryrefslogtreecommitdiff
path: root/amiga_lib/include/interfaces/parserutils.h
blob: 96fa81475fe1f4894c39235930272bd14d68d0bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#ifndef PARSERUTILS_INTERFACE_DEF_H
#define PARSERUTILS_INTERFACE_DEF_H

/*
** This file was machine generated by idltool 53.1.
** Do not edit
*/ 

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_EXEC_H
#include <exec/exec.h>
#endif
#ifndef EXEC_INTERFACES_H
#include <exec/interfaces.h>
#endif

#include "parserutils/parserutils.h"
#include "parserutils/charset/codec.h"
#include "parserutils/charset/mibenum.h"
#include "parserutils/charset/utf16.h"
#include "parserutils/charset/utf8.h"
#include "parserutils/input/inputstream.h"
#include "parserutils/utils/buffer.h"
#include "parserutils/utils/stack.h"
#include "parserutils/utils/vector.h"



#ifdef __cplusplus
#ifdef __USE_AMIGAOS_NAMESPACE__
namespace AmigaOS {
#endif
extern "C" {
#endif

struct ParserUtilsIFace
{
	struct InterfaceData Data;

	uint32 APICALL (*ParserUtilsObtain)(struct ParserUtilsIFace *Self);
	uint32 APICALL (*ParserUtilsRelease)(struct ParserUtilsIFace *Self);
	void APICALL (*ParserUtilsExpunge)(struct ParserUtilsIFace *Self);
	struct Interface * APICALL (*ParserUtilsClone)(struct ParserUtilsIFace *Self);

	/* parserutils/errors.h */
	const char * (*parserutils_error_to_string)(parserutils_error error);
	parserutils_error (*parserutils_error_from_string)(const char *str, size_t len);

	/* parserutils/parserutils.h */
	/* NB: These two need to be dummy functions in the stubs
	 * lib open/close should call these itself with an Aliases file
	 * stored somewhere central (l:charsets?) */
	/* commented out as they need to be library private
	parserutils_error (*parserutils_initialise)(const char *aliases_file,
		parserutils_alloc alloc, void *pw);
	parserutils_error (*parserutils_finalise)(parserutils_alloc alloc, void *pw);
	*/

	/* parserutils/charset/codec.h */
	parserutils_error (*parserutils_charset_codec_create)(const char *charset,
		parserutils_alloc alloc, void *pw,
		parserutils_charset_codec **codec);
	parserutils_error (*parserutils_charset_codec_destroy)(
		parserutils_charset_codec *codec);
	parserutils_error (*parserutils_charset_codec_setopt)(
		parserutils_charset_codec *codec,
		parserutils_charset_codec_opttype type, 
		parserutils_charset_codec_optparams *params);
	parserutils_error (*parserutils_charset_codec_encode)(
		parserutils_charset_codec *codec,
		const uint8_t **source, size_t *sourcelen,
		uint8_t **dest, size_t *destlen);
	parserutils_error (*parserutils_charset_codec_decode)(
		parserutils_charset_codec *codec,
		const uint8_t **source, size_t *sourcelen,
		uint8_t **dest, size_t *destlen);
	parserutils_error (*parserutils_charset_codec_reset)(
		parserutils_charset_codec *codec);

	/* parserutils/charset/mibenum.h */
	uint16_t (*parserutils_charset_mibenum_from_name)(const char *alias, size_t len);
	const char * (*parserutils_charset_mibenum_to_name)(uint16_t mibenum);
	bool (*parserutils_charset_mibenum_is_unicode)(uint16_t mibenum);

	/* parserutils/charset/utf16.h */
	parserutils_error (*parserutils_charset_utf16_to_ucs4)(const uint8_t *s, 
		size_t len, uint32_t *ucs4, size_t *clen);
	parserutils_error (*parserutils_charset_utf16_from_ucs4)(uint32_t ucs4, 
		uint8_t *s, size_t *len);
	parserutils_error (*parserutils_charset_utf16_length)(const uint8_t *s, 
		size_t max, size_t *len);
	parserutils_error (*parserutils_charset_utf16_char_byte_length)(const uint8_t *s,
		size_t *len);
	parserutils_error (*parserutils_charset_utf16_prev)(const uint8_t *s, 
		uint32_t off, uint32_t *prevoff);
	parserutils_error (*parserutils_charset_utf16_next)(const uint8_t *s, 
		uint32_t len, uint32_t off, uint32_t *nextoff);
	parserutils_error (*parserutils_charset_utf16_next_paranoid)(const uint8_t *s,
		uint32_t len, uint32_t off, uint32_t *nextoff);

	/* parserutils/charset/utf8.h */
	parserutils_error (*parserutils_charset_utf8_to_ucs4)(const uint8_t *s, size_t len,
		uint32_t *ucs4, size_t *clen);
	parserutils_error (*parserutils_charset_utf8_from_ucs4)(uint32_t ucs4, uint8_t **s,
		size_t *len);
	parserutils_error (*parserutils_charset_utf8_length)(const uint8_t *s, size_t max,
		size_t *len);
	parserutils_error (*parserutils_charset_utf8_char_byte_length)(const uint8_t *s,
		size_t *len);
	parserutils_error (*parserutils_charset_utf8_prev)(const uint8_t *s, uint32_t off,
		uint32_t *prevoff);
	parserutils_error (*parserutils_charset_utf8_next)(const uint8_t *s, uint32_t len,
		uint32_t off, uint32_t *nextoff);
	parserutils_error (*parserutils_charset_utf8_next_paranoid)(const uint8_t *s, 
		uint32_t len, uint32_t off, uint32_t *nextoff);

	/* parserutils/input/inputstream.h */
	parserutils_error (*parserutils_inputstream_create)(const char *enc,
		uint32_t encsrc, parserutils_charset_detect_func csdetect,
		parserutils_alloc alloc, void *pw, 
		parserutils_inputstream **stream);
	parserutils_error (*parserutils_inputstream_destroy)(
		parserutils_inputstream *stream);
	parserutils_error (*parserutils_inputstream_append)(
		parserutils_inputstream *stream,
		const uint8_t *data, size_t len);
	parserutils_error (*parserutils_inputstream_insert)(
		parserutils_inputstream *stream,
		const uint8_t *data, size_t len);
	parserutils_error (*parserutils_inputstream_peek_slow)(
		parserutils_inputstream *stream, 
		size_t offset, const uint8_t **ptr, size_t *length);
	/* inlined, don't think we need them here
	parserutils_error (*parserutils_inputstream_peek)(
		parserutils_inputstream *stream, size_t offset, 
		const uint8_t **ptr, size_t *length);
	void (*parserutils_inputstream_advance)(
		parserutils_inputstream *stream, size_t bytes);
	*/
	const char * (*parserutils_inputstream_read_charset)(
		parserutils_inputstream *stream, uint32_t *source);
	parserutils_error (*parserutils_inputstream_change_charset)(
		parserutils_inputstream *stream, 
		const char *enc, uint32_t source);

	/* parserutils/utils/buffer.h */
	parserutils_error (*parserutils_buffer_create)(parserutils_alloc alloc, 
		void *pw, parserutils_buffer **buffer);
	parserutils_error (*parserutils_buffer_destroy)(parserutils_buffer *buffer);
	parserutils_error (*parserutils_buffer_append)(parserutils_buffer *buffer, 
		const uint8_t *data, size_t len);
	parserutils_error (*parserutils_buffer_insert)(parserutils_buffer *buffer, 
		size_t offset, const uint8_t *data, size_t len);
	parserutils_error (*parserutils_buffer_discard)(parserutils_buffer *buffer, 
		size_t offset, size_t len);
	parserutils_error (*parserutils_buffer_grow)(parserutils_buffer *buffer);
	parserutils_error (*parserutils_buffer_randomise)(parserutils_buffer *buffer);

	/* parserutils/utils/stack.h */
	parserutils_error (*parserutils_stack_create)(size_t item_size, size_t chunk_size,
		parserutils_alloc alloc, void *pw, parserutils_stack **stack);
	parserutils_error (*parserutils_stack_destroy)(parserutils_stack *stack);
	parserutils_error (*parserutils_stack_push)(parserutils_stack *stack, 
		const void *item);
	parserutils_error (*parserutils_stack_pop)(parserutils_stack *stack, void *item);
	void * (*parserutils_stack_get_current)(parserutils_stack *stack);

	/* parserutils/utils/vector.h */
	parserutils_error (*parserutils_vector_create)(size_t item_size, 
		size_t chunk_size, parserutils_alloc alloc, void *pw,
		parserutils_vector **vector);
	parserutils_error (*parserutils_vector_destroy)(parserutils_vector *vector);
	parserutils_error (*parserutils_vector_append)(parserutils_vector *vector, 
		void *item);
	parserutils_error (*parserutils_vector_clear)(parserutils_vector *vector);
	parserutils_error (*parserutils_vector_remove_last)(parserutils_vector *vector);
	parserutils_error (*parserutils_vector_get_length)(parserutils_vector *vector, size_t *length);
	const void * (*parserutils_vector_iterate)(const parserutils_vector *vector, 
		int32_t *ctx);
	const void * (*parserutils_vector_peek)(const parserutils_vector *vector,
		int32_t ctx);
};

#ifdef __cplusplus
}
#ifdef __USE_AMIGAOS_NAMESPACE__
}
#endif
#endif

#endif /* PARSERUTILS_INTERFACE_DEF_H */