#ifndef _XIMINTP_H
#define _XIMINTP_H
#include "XimProto.h"
#include "XlcPublic.h"
typedef Bool (*XimProtoIntrProc)(
Xim, INT16, XPointer, XPointer
);
typedef struct _XimProtoIntrRec {
XimProtoIntrProc func;
CARD16 major_code;
CARD16 minor_code;
XPointer call_data;
struct _XimProtoIntrRec *next;
} XimProtoIntrRec;
typedef Bool (*XimTransConnectProc)(
Xim
);
typedef Bool (*XimTransShutdownProc)(
Xim
);
typedef Bool (*XimTransWriteProc)(
Xim, INT16, XPointer
);
typedef Bool (*XimTransReadProc)(
Xim, XPointer, int, int *
);
typedef void (*XimTransFlushProc)(
Xim
);
typedef Bool (*XimTransRegDispatcher)(
Xim, Bool (*)(Xim, INT16, XPointer, XPointer), XPointer
);
typedef Bool (*XimTransCallDispatcher)(
Xim, INT16, XPointer
);
typedef struct _XimProtoPrivateRec {
XlcConv ctom_conv;
XlcConv ctow_conv;
XlcConv ctoutf8_conv;
XlcConv cstomb_conv;
XlcConv cstowc_conv;
XlcConv cstoutf8_conv;
XlcConv ucstoc_conv;
XlcConv ucstoutf8_conv;
Window im_window;
XIMID imid;
CARD16 unused;
XIMStyles *default_styles;
CARD32 *im_onkeylist;
CARD32 *im_offkeylist;
BITMASK32 flag;
BITMASK32 registed_filter_event;
EVENTMASK forward_event_mask;
EVENTMASK synchronous_event_mask;
XimProtoIntrRec *intrproto;
XIMResourceList im_inner_resources;
unsigned int im_num_inner_resources;
XIMResourceList ic_inner_resources;
unsigned int ic_num_inner_resources;
char *hold_data;
int hold_data_len;
char *locale_name;
CARD16 protocol_major_version;
CARD16 protocol_minor_version;
XrmQuark *saved_imvalues;
int num_saved_imvalues;
XimTransConnectProc connect;
XimTransShutdownProc shutdown;
XimTransWriteProc write;
XimTransReadProc read;
XimTransFlushProc flush;
XimTransRegDispatcher register_dispatcher;
XimTransCallDispatcher call_dispatcher;
XPointer spec;
} XimProtoPrivateRec;
#define SERVER_CONNECTED (1L)
#define DYNAMIC_EVENT_FLOW (1L << 1)
#define USE_AUTHORIZATION_FUNC (1L << 2)
#ifdef XIM_CONNECTABLE
#define DELAYBINDABLE (1L << 3)
#define RECONNECTABLE (1L << 4)
#endif
#define IS_SERVER_CONNECTED(im) \
((((Xim)im))->private.proto.flag & SERVER_CONNECTED)
#define MARK_SERVER_CONNECTED(im) \
((((Xim)im))->private.proto.flag |= SERVER_CONNECTED)
#define UNMARK_SERVER_CONNECTED(im) \
((((Xim)im))->private.proto.flag &= ~SERVER_CONNECTED)
#define IS_DYNAMIC_EVENT_FLOW(im) \
(((Xim)im)->private.proto.flag & DYNAMIC_EVENT_FLOW)
#define MARK_DYNAMIC_EVENT_FLOW(im) \
(((Xim)im)->private.proto.flag |= DYNAMIC_EVENT_FLOW)
#define IS_USE_AUTHORIZATION_FUNC(im) \
(((Xim)im)->private.proto.flag & USE_AUTHORIZATION_FUNC)
#define MARK_USE_AUTHORIZATION_FUNC(im) \
(((Xim)im)->private.proto.flag |= USE_AUTHORIZATION_FUNC)
#ifdef XIM_CONNECTABLE
#define IS_DELAYBINDABLE(im) \
(((Xim)im)->private.proto.flag & DELAYBINDABLE)
#define MARK_DELAYBINDABLE(im) \
(((Xim)im)->private.proto.flag |= DELAYBINDABLE)
#define IS_RECONNECTABLE(im) \
(((Xim)im)->private.proto.flag & RECONNECTABLE)
#define MARK_RECONNECTABLE(im) \
(((Xim)im)->private.proto.flag |= RECONNECTABLE)
#define IS_CONNECTABLE(im) \
(((Xim)im)->private.proto.flag & (DELAYBINDABLE|RECONNECTABLE))
#define UNMAKE_CONNECTABLE(im) \
(((Xim)im)->private.proto.flag &= ~(DELAYBINDABLE|RECONNECTABLE))
#endif
#define KEYPRESS_MASK (1L)
#define KEYRELEASE_MASK (1L << 1)
#define DESTROYNOTIFY_MASK (1L << 2)
typedef struct _XimCommitInfoRec {
struct _XimCommitInfoRec *next;
char *string;
int string_len;
KeySym *keysym;
int keysym_len;
} XimCommitInfoRec, *XimCommitInfo;
typedef struct _XimPendingCallback {
int major_opcode;
Xim im;
Xic ic;
char *proto;
int proto_len;
struct _XimPendingCallback *next;
} XimPendingCallbackRec, *XimPendingCallback;
typedef struct _XicProtoPrivateRec {
XICID icid;
CARD16 dmy;
BITMASK32 flag;
BITMASK32 registed_filter_event;
EVENTMASK forward_event_mask;
EVENTMASK synchronous_event_mask;
EVENTMASK filter_event_mask;
EVENTMASK intercept_event_mask;
EVENTMASK select_event_mask;
char *preedit_font;
int preedit_font_length;
char *status_font;
int status_font_length;
XimCommitInfo commit_info;
XIMResourceList ic_resources;
unsigned int ic_num_resources;
XIMResourceList ic_inner_resources;
unsigned int ic_num_inner_resources;
XrmQuark *saved_icvalues;
int num_saved_icvalues;
XimPendingCallback pend_cb_que;
Bool waitCallback;
} XicProtoPrivateRec ;
#define IC_CONNECTED (1L)
#define FABLICATED (1L << 1)
#define NEED_SYNC_REPLY (1L << 2)
#define IS_IC_CONNECTED(ic) \
(((Xic)ic)->private.proto.flag & IC_CONNECTED)
#define MARK_IC_CONNECTED(ic) \
(((Xic)ic)->private.proto.flag |= IC_CONNECTED)
#define UNMARK_IC_CONNECTED(ic) \
(((Xic)ic)->private.proto.flag &= ~IC_CONNECTED)
#define IS_FABLICATED(ic) \
(((Xic)ic)->private.proto.flag & FABLICATED)
#define MARK_FABLICATED(ic) \
(((Xic)ic)->private.proto.flag |= FABLICATED)
#define UNMARK_FABLICATED(ic) \
(((Xic)ic)->private.proto.flag &= ~FABLICATED)
#define IS_NEED_SYNC_REPLY(ic) \
(((Xic)ic)->private.proto.flag & NEED_SYNC_REPLY)
#define MARK_NEED_SYNC_REPLY(ic) \
(((Xic)ic)->private.proto.flag |= NEED_SYNC_REPLY)
#define UNMARK_NEED_SYNC_REPLY(ic) \
(((Xic)ic)->private.proto.flag &= ~NEED_SYNC_REPLY)
#define IS_NEGLECT_EVENT(ic, mask) \
(((Xic)ic)->private.proto.filter_event_mask & (mask))
#define IS_FORWARD_EVENT(ic, mask) \
(((Xic)ic)->private.proto.forward_event_mask & (mask))
#define IS_SYNCHRONOUS_EVENT(ic, mask) \
((((Xic)ic)->private.proto.synchronous_event_mask & (mask)) ? True: False)
#define XIM_MAXIMNAMELEN 64
#define XIM_MAXLCNAMELEN 64
#endif