/* coding.h - coding system conversions
*
****************************************************************
* Copyright (C) 2000, 2004 Tom Lord
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#ifndef INCLUDE__UNI__CODING_H
#define INCLUDE__UNI__CODING_H
#include "hackerlab/machine/types.h"
#define UNI_ENCODING_SCHEMES \
UNI_ENCODING (iso8859_1, 1, 1, 256) /* must be first */ \
UNI_ENCODING (utf8, 1, 1, (1 << 21)) \
UNI_ENCODING (utf16, 2, 2, (1 << 21)) \
UNI_ENCODING (utf16be, 2, 1, (1 << 21)) \
UNI_ENCODING (utf16le, 2, 1, (1 << 21)) \
UNI_ENCODING (utf32, 4, 4, (1 << 21)) \
UNI_ENCODING (utf32le, 4, 1, (1 << 21)) \
UNI_ENCODING (utf32be, 4, 1, (1 << 21)) \
UNI_ENCODING (bogus32, 4, 4, (1 << 23)) \
UNI_ENCODING (bogus32le, 4, 1, (1 << 23)) \
UNI_ENCODING (bogus32be, 4, 1, (1 << 23))
enum uni_encoding_scheme
{
#undef UNI_ENCODING
#define UNI_ENCODING(NAME, WIDTH, SCANNER_WIDTH, CSET_SIZE) uni_ ## NAME,
UNI_ENCODING_SCHEMES
};
#define UNI_ENCODING_PAIR(a,b) (((a)<<4) | (b))
#define UNI_SCAN_INPUT_TRUNCATED ((t_unicode)1 << 23)
typedef t_unicode (*uni_iscan_fn)(t_uchar * str, size_t * pos, size_t len);
typedef int (*uni_iput_fn)(t_uchar * str, size_t * pos, size_t len, t_unicode c);
#if defined(__GNUC__) && (defined(UNI_CODING_INLINES) || defined(UNI_INLINES))
#undef UNI_INLINE_QUALIFIERS
#define UNI_INLINE_QUALIFIERS static inline
#include "hackerlab/uni/coding-inlines.c"
#else
#undef UNI_INLINE_QUALIFIERS
#include "hackerlab/uni/coding-inlines.h"
#endif
/* automatically generated __STDC__ prototypes */
extern uni_iscan_fn uni_encoding_iscan_fn (enum uni_encoding_scheme encoding);
extern uni_iput_fn uni_encoding_iput_fn (enum uni_encoding_scheme encoding);
#endif /* INCLUDE__UNI__CODING_H */
syntax highlighted by Code2HTML, v. 0.9.1