-
Notifications
You must be signed in to change notification settings - Fork 7
/
hanjpautomata.h
62 lines (47 loc) · 1.75 KB
/
hanjpautomata.h
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
#ifndef __HANJP_AUTOMATA_H__
#define __HANJP_AUTOMATA_H__
#include <glib-object.h>
#include <gmodule.h>
G_BEGIN_DECLS
typedef union {
struct {
gunichar cho;
gunichar jung;
gunichar jung2;
gunichar jong;
};
gunichar stack[4];
} HanjpBuffer;
#define HANJP_TYPE_AUTOMATA hanjp_am_get_type()
G_DECLARE_INTERFACE(HanjpAutomata, hanjp_am, HANJP, AUTOMATA, GObject)
struct _HanjpAutomataInterface
{
GTypeInterface parant_iface;
gboolean (*to_kana) (HanjpAutomata* self, GArray *dest, HanjpBuffer *buffer);
gint (*push) (HanjpAutomata *self, GArray *result, GArray *hangul, gunichar ch);
gboolean (*backspace) (HanjpAutomata *self);
void (*flush) (HanjpAutomata *self);
};
gint hanjp_am_to_kana(HanjpAutomata *am, GArray *dest, HanjpBuffer *buffer);
gint hanjp_am_push(HanjpAutomata *am, GArray *preedit, GArray *hangul, gunichar ch);
gboolean hanjp_am_backspace(HanjpAutomata *am);
void hanjp_am_flush(HanjpAutomata *am);
#define HANJP_TYPE_AUTOMATABASE hanjp_ambase_get_type()
G_DECLARE_DERIVABLE_TYPE(HanjpAutomataBase, hanjp_ambase, HANJP, AUTOMATABASE, GObject)
struct _HanjpAutomataBaseClass
{
GObjectClass parent_class;
gboolean (*to_kana) (HanjpAutomata* self, GArray *dest, HanjpBuffer *buffer);
gint (*push) (HanjpAutomata *self, GArray *result, GArray *hangul, gunichar ch);
gboolean (*backspace) (HanjpAutomata *self);
void (*flush) (HanjpAutomata *self);
};
#define HANJP_TYPE_AUTOMATADEFAULT hanjp_amdefault_get_type()
G_DECLARE_DERIVABLE_TYPE(HanjpAutomataDefault, hanjp_amdefault, HANJP, AUTOMATADEFAULT, HanjpAutomataBase)
struct _HanjpAutomataDefaultClass
{
HanjpAutomataBaseClass parent_class;
};
HanjpAutomataDefault *hanjp_amdefault_new();
G_END_DECLS
#endif //__HANJP_AUTOMATA_H__