#ifndef SKEY_ENGINE_H
#define SKEY_ENGINE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define SKEY_METHOD_TELEX 0
#define SKEY_METHOD_VNI 1
#define SKEY_METHOD_VIQR 2
#define SKEY_METHOD_TEIP_VNI 3
typedef void SkeyEngine;
SkeyEngine *skey_engine_new(int32_t method);
void skey_engine_free(SkeyEngine *e);
void skey_engine_set_method(SkeyEngine *e, int32_t method);
void skey_engine_set_tone_style(SkeyEngine *e, int32_t modern);
void skey_engine_set_free_marking(SkeyEngine *e, int32_t free);
void skey_engine_set_short_w(SkeyEngine *e, int32_t enabled);
void skey_engine_set_auto_restore(SkeyEngine *e, int32_t enabled);
void skey_engine_set_dict(SkeyEngine *e, int32_t enabled);
void skey_engine_add_word(SkeyEngine *e, const char *word);
void skey_engine_clear_words(SkeyEngine *e);
char *skey_engine_dict_words(void);
void skey_engine_set_bracket_uo(SkeyEngine *e, int32_t enabled);
char *skey_engine_transform(SkeyEngine *e, const char *input);
int32_t skey_engine_is_valid(const char *s);
void skey_free_string(char *s);
uint8_t *skey_charset_encode(const char *input, int32_t charset,
size_t *out_len);
char *skey_charset_decode(const uint8_t *input, size_t len, int32_t charset);
char *skey_charset_remove_tone(const char *input);
void skey_charset_free_buf(uint8_t *buf);
#ifdef __cplusplus
}
#endif
#endif