// -*- C++ -*-
#define USE_WITHDRAWN
#ifndef _jmode_h_included_
#define _jmode_h_included_
#include <stdio.h>
#include <list>
#include <vector>
void read_conf_file();
char *my_getenv(char *);
bool pretrans_register();
int pretrans_setup();
int connection_setup();
void sock_proc(int fd, int event); // event is READ_OK or WRITE_OK
// fd dispatch
#define READ_OK 1
#define WRITE_OK 2
class Dispatcher {
public:
virtual void addFDWatch(int fd, int mask, void (*f)(int, int)) = 0;
virtual void removeFDWatch(int fd) = 0;
virtual void mainLoop() = 0;
};
Dispatcher *get_dispatcher();
//変換のサポート
// jstring は文節
// preeditの修飾
#define PE_NORMAL 0
#define PE_REVERSE 1
#define PE_UNDERLINE 2
#define PE_HILIGHT 4
typedef int cchar;
typedef std::list<cchar> jstring_t;
struct pe_jstring{
jstring_t s;
int stat;
};
struct Candidates;
class KKContext;
// 生成と破棄はKKContextのコンストラクタ、デストラクタで行なわれる
class pe_stat{
public:
pe_stat(KKContext *);
void clear();
void new_segment(int s);
void push_cchar(cchar );
int get_char_count();
std::list<pe_jstring> jstrings; //文節に切られたもの。
Candidates *cands;
KKContext *cont;
};
void print_jstring(jstring_t *s);
void erase_jstring(jstring_t *s);
void append_jstring(jstring_t *d,jstring_t *s);
void str_to_jstring(jstring_t *d,char *s);// JIS or EUC
char *jstring_to_str(jstring_t *s);// EUCとして返ってくる。
// global cut buffer
void paste_from_global_buffer(jstring_t *s);
void copy_to_global_buffer(jstring_t *s);
//
class KKConv;
void init_preconf_kkconv();
KKConv *init_kkconv();
void free_kkconv();
void global_finalize(int );
// ユーザーインターフェースとか、
void init_toolkit(int *argc,char ***argv);
void init_ui(KKConv *);
void show_issue(char *);
void init_convdisp();
void ui_update_ic_stat();
void ui_update_input_mode(int );
// Control Command
void init_ctrl();
void ui_ctrl_command(char *);
void kk_ctrl_command(char *);
// misc
int pad4(int );
// key bindとかのやつ
class CAtom;
typedef CAtom *atom_t;
void init_default_atoms();
void add_conf_hook(char *, void (*fn)(char *));
atom_t get_atom_by_name(char *name);
void bind_atom(atom_t from,atom_t to);
void bind_str_to_atom(char *s,atom_t);
bool is_bind_to(atom_t from,atom_t to);
char *get_atom_name(atom_t );
atom_t get_bound_atoms(atom_t to,atom_t c);
int nr_bound_atoms(atom_t to);
// debug functions
void hex_dump(unsigned char *buf,int len);
// 動作オプション、主に起動時のコマンドラインオプションで決まる。
// クライアントとのやり取りを追跡する
#define OPT_TRACE 1
// XIMの通信も追跡する
#define OPT_TRACE_XIM 2
#define OPT_POPUP 8
#define OPT_ISSUE 16
#define OPT_TOOLBAR 32
#ifdef USE_WITHDRAWN
#define OPT_WITHDRAWN 64
#endif
// byte order
#define BYTEORDER_UNKNOWN 0
#define LSB_FIRST 1
#define MSB_FIRST 2
//
extern int host_byte_order;
extern int g_option_mask;
extern int uid;
extern char *homedir;
extern int scr_width,scr_height;
extern int ctrl_fd_r, ctrl_fd_w;
extern FILE *ctrl_in,*ctrl_out;
#endif
/*
* Local variables:
* c-indent-level: 4
* c-basic-offset: 4
* End:
*/
syntax highlighted by Code2HTML, v. 0.9.1