#ifndef SWIFT_UNICODE_CHARSET_H
#define SWIFT_UNICODE_CHARSET_H

#include <swift/stdlib.h>

#include <swift/unicode/api.h>
#include <swift/unicode/unicode.h>

typedef struct swift_charset_t swift_charset_t;

struct swift_charset_t {
	char *name;
	swift_enc_uchar_fn_t enc;
	swift_dec_uchar_fn_t dec;
};

SWIFT_UNICODE_API swift_charset_t *swift_get_charset(const char *name);
SWIFT_UNICODE_API bool swift_add_charset(const char *name,
	swift_enc_uchar_fn_t enc, swift_dec_uchar_fn_t dec);
SWIFT_UNICODE_API void swift_remove_charset(const char *name);
SWIFT_UNICODE_API size_t swift_conv_str_size(const char *dst_fmt,
	const char *src_fmt, const void *src_, size_t src_size);
SWIFT_UNICODE_API size_t swift_conv_str(const char *dst_fmt, void *dst_,
	size_t dst_size, const char *src_fmt, const void *src_,
	size_t src_size);
SWIFT_UNICODE_API void *swift_new_conv_str(const char *dst_fmt,
	const char *src_fmt, const void *src, size_t src_size);

#endif /* SWIFT_UNICODE_CHARSET_H */
