11ab64890Smrg/*
21ab64890Smrg
31ab64890SmrgCopyright 1991, 1998  The Open Group
41ab64890Smrg
51ab64890SmrgPermission to use, copy, modify, distribute, and sell this software and its
61ab64890Smrgdocumentation for any purpose is hereby granted without fee, provided that
71ab64890Smrgthe above copyright notice appear in all copies and that both that
81ab64890Smrgcopyright notice and this permission notice appear in supporting
91ab64890Smrgdocumentation.
101ab64890Smrg
111ab64890SmrgThe above copyright notice and this permission notice shall be included
121ab64890Smrgin all copies or substantial portions of the Software.
131ab64890Smrg
141ab64890SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
151ab64890SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
161ab64890SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
171ab64890SmrgIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
181ab64890SmrgOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
191ab64890SmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
201ab64890SmrgOTHER DEALINGS IN THE SOFTWARE.
211ab64890Smrg
221ab64890SmrgExcept as contained in this notice, the name of The Open Group shall
231ab64890Smrgnot be used in advertising or otherwise to promote the sale, use or
241ab64890Smrgother dealings in this Software without prior written authorization
251ab64890Smrgfrom The Open Group.
261ab64890Smrg
271ab64890Smrg*/
281ab64890Smrg
291ab64890Smrg/*
301ab64890Smrg * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
311ab64890Smrg *                      and Nippon Telegraph and Telephone Corporation
321ab64890Smrg * Copyright 1991 by the Open Software Foundation
331ab64890Smrg * Copyright 1993 by the TOSHIBA Corp.
341ab64890Smrg * Copyright 1993, 1994 by Sony Corporation
351ab64890Smrg * Copyright 1993, 1994 by the FUJITSU LIMITED
361ab64890Smrg *
371ab64890Smrg * Permission to use, copy, modify, distribute, and sell this software and its
381ab64890Smrg * documentation for any purpose is hereby granted without fee, provided that
391ab64890Smrg * the above copyright notice appear in all copies and that both that
401ab64890Smrg * copyright notice and this permission notice appear in supporting
411ab64890Smrg * documentation, and that the names of OMRON, NTT Software, NTT, Open
421ab64890Smrg * Software Foundation, and Sony Corporation not be used in advertising
4361b2299dSmrg * or publicity pertaining to distribution of the software without specific,
441ab64890Smrg * written prior permission. OMRON, NTT Software, NTT, Open Software
4561b2299dSmrg * Foundation, and Sony Corporation  make no representations about the
4661b2299dSmrg * suitability of this software for any purpose.  It is provided "as is"
471ab64890Smrg * without express or implied warranty.
481ab64890Smrg *
4961b2299dSmrg * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
5061b2299dSmrg * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
5161b2299dSmrg * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
5261b2299dSmrg * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
531ab64890Smrg * CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
541ab64890Smrg * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
5561b2299dSmrg * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
561ab64890Smrg * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
5761b2299dSmrg *
581ab64890Smrg *	Authors: Li Yuhong		OMRON Corporation
591ab64890Smrg *		 Tatsuya Kato		NTT Software Corporation
601ab64890Smrg *		 Hiroshi Kuribayashi	OMRON Coproration
611ab64890Smrg *		 Muneiyoshi Suzuki	Nippon Telegraph and Telephone Co.
6261b2299dSmrg *
6361b2299dSmrg *		 M. Collins		OSF
641ab64890Smrg *		 Katsuhisa Yano		TOSHIBA Corp.
651ab64890Smrg *               Makoto Wakamatsu       Sony Corporation
661ab64890Smrg *               Takashi Fujiwara	FUJITSU LIMITED
6761b2299dSmrg */
681ab64890Smrg
691ab64890Smrg
701ab64890Smrg#ifndef	_XLCINT_H_
711ab64890Smrg#define	_XLCINT_H_
721ab64890Smrg
731ab64890Smrg#ifndef _XP_PRINT_SERVER_
741ab64890Smrg
751ab64890Smrg#include <X11/Xresource.h>
761ab64890Smrg#include <X11/Xutil.h>
771ab64890Smrg#include <stdarg.h>
781ab64890Smrg
791ab64890Smrgtypedef Bool (*XFilterEventProc)(
801ab64890Smrg    Display*		/* display */,
811ab64890Smrg    Window		/* window */,
821ab64890Smrg    XEvent*		/* event */,
831ab64890Smrg    XPointer		/* client_data */
841ab64890Smrg);
851ab64890Smrg
861ab64890Smrgtypedef struct _XIMFilter {
871ab64890Smrg    struct _XIMFilter *next;
881ab64890Smrg    Window window;
891ab64890Smrg    unsigned long event_mask;
901ab64890Smrg    int start_type, end_type;
911ab64890Smrg    XFilterEventProc filter;
921ab64890Smrg    XPointer client_data;
931ab64890Smrg} XFilterEventRec, *XFilterEventList;
941ab64890Smrg
951ab64890Smrgtypedef struct {
961ab64890Smrg    char    *name;
971ab64890Smrg    XPointer value;
981ab64890Smrg} XIMArg;
991ab64890Smrg
1001ab64890Smrg#ifdef offsetof
1011ab64890Smrg#define XOffsetOf(s_type,field) offsetof(s_type,field)
1021ab64890Smrg#else
1031ab64890Smrg#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
1041ab64890Smrg#endif
1051ab64890Smrg
1061ab64890Smrg#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
1071ab64890Smrg
1081ab64890Smrg/*
1091ab64890Smrg * define secondary data structs which are part of Input Methods
1101ab64890Smrg * and Input Context
1111ab64890Smrg */
1121ab64890Smrgtypedef struct {
1131ab64890Smrg    const char		*resource_name;		/* Resource string */
1141ab64890Smrg    XrmQuark		xrm_name;		/* Resource name quark */
1151ab64890Smrg    int			resource_size;		/* Size in bytes of data */
1161ab64890Smrg    long		resource_offset;	/* Offset from base */
1171ab64890Smrg    unsigned short 	mode;			/* Read Write Permission */
1181ab64890Smrg    unsigned short 	id;			/* Input Method Protocol */
1191ab64890Smrg} XIMResource, *XIMResourceList;
1201ab64890Smrg
1211ab64890Smrg/*
1221ab64890Smrg * data block describing the visual attributes associated with
1231ab64890Smrg * an input context
1241ab64890Smrg */
1251ab64890Smrgtypedef struct {
1261ab64890Smrg    XRectangle		area;
1271ab64890Smrg    XRectangle		area_needed;
1281ab64890Smrg    XPoint		spot_location;
1291ab64890Smrg    Colormap		colormap;
1301ab64890Smrg    Atom		std_colormap;
1311ab64890Smrg    unsigned long	foreground;
1321ab64890Smrg    unsigned long	background;
1331ab64890Smrg    Pixmap		background_pixmap;
1341ab64890Smrg    XFontSet            fontset;
1351ab64890Smrg    int	       		line_spacing;
1361ab64890Smrg    Cursor		cursor;
1371ab64890Smrg    XICCallback		start_callback;
1381ab64890Smrg    XICCallback		done_callback;
1391ab64890Smrg    XICCallback		draw_callback;
1401ab64890Smrg    XICCallback		caret_callback;
1411ab64890Smrg    XIMPreeditState	preedit_state;
1421ab64890Smrg    XICCallback		state_notify_callback;
1431ab64890Smrg} ICPreeditAttributes, *ICPreeditAttributesPtr;
1441ab64890Smrg
1451ab64890Smrgtypedef struct {
1461ab64890Smrg    XRectangle		area;
1471ab64890Smrg    XRectangle		area_needed;
1481ab64890Smrg    Colormap		colormap;
1491ab64890Smrg    Atom		std_colormap;
1501ab64890Smrg    unsigned long	foreground;
1511ab64890Smrg    unsigned long	background;
1521ab64890Smrg    Pixmap		background_pixmap;
1531ab64890Smrg    XFontSet            fontset;
1541ab64890Smrg    int	       		line_spacing;
1551ab64890Smrg    Cursor		cursor;
1561ab64890Smrg    XICCallback		start_callback;
1571ab64890Smrg    XICCallback		done_callback;
1581ab64890Smrg    XICCallback		draw_callback;
1591ab64890Smrg} ICStatusAttributes, *ICStatusAttributesPtr;
1601ab64890Smrg
1611ab64890Smrg#endif /* !_XP_PRINT_SERVER_ */
1621ab64890Smrg
1631ab64890Smrg/*
1641ab64890Smrg * Methods for Xrm parsing
1651ab64890Smrg */
1661ab64890Smrg
1671ab64890Smrg/* The state is a pointer to an object created by the locale's
1681ab64890Smrg   init_parse_info function (default: _XrmDefaultInitParseInfo). */
1691ab64890Smrg
1701ab64890Smrg/* Sets the state to the initial state.
1711ab64890Smrg   Initiates a sequence of calls to the XmbCharProc. */
1721ab64890Smrgtypedef void (*XmbInitProc)(
1731ab64890Smrg    XPointer		state
1741ab64890Smrg);
1751ab64890Smrg
1761ab64890Smrg/* Transforms one multibyte character, starting at str, and return a 'char'
1771ab64890Smrg   in the same parsing class (not a wide character!). Returns the number of
1781ab64890Smrg   consumed bytes in *lenp. */
1791ab64890Smrgtypedef char (*XmbCharProc)(
1801ab64890Smrg    XPointer		state,
1811ab64890Smrg    const char *	str,
1821ab64890Smrg    int*		lenp
1831ab64890Smrg);
1841ab64890Smrg
1851ab64890Smrg/* Terminates a sequence of calls to the XmbCharProc. */
1861ab64890Smrgtypedef void (*XmbFinishProc)(
1871ab64890Smrg    XPointer		state
1881ab64890Smrg);
1891ab64890Smrg
1901ab64890Smrg/* Returns the name of the state's locale, as a static string. */
1911ab64890Smrgtypedef const char* (*XlcNameProc)(
1921ab64890Smrg    XPointer		state
1931ab64890Smrg);
1941ab64890Smrg
1951ab64890Smrg/* Frees the state, which was allocated by the locale's init_parse_info
1961ab64890Smrg   function. */
1971ab64890Smrgtypedef void (*XrmDestroyProc)(
1981ab64890Smrg    XPointer		state
1991ab64890Smrg);
2001ab64890Smrg
2011ab64890Smrg/* Set of methods for Xrm parsing. */
2021ab64890Smrgtypedef struct {
2031ab64890Smrg    XmbInitProc		mbinit;
2041ab64890Smrg    XmbCharProc		mbchar;
2051ab64890Smrg    XmbFinishProc	mbfinish;
2061ab64890Smrg    XlcNameProc		lcname;
2071ab64890Smrg    XrmDestroyProc	destroy;
2081ab64890Smrg} XrmMethodsRec;
2091ab64890Smrgtypedef const XrmMethodsRec *XrmMethods;
2101ab64890Smrg
2111ab64890Smrg#ifndef _XP_PRINT_SERVER_
2121ab64890Smrg
2131ab64890Smrgtypedef struct _XLCd *XLCd; /* need forward reference */
2141ab64890Smrg
2151ab64890Smrg/*
2161ab64890Smrg * define an LC, it's methods, and data.
2171ab64890Smrg */
2181ab64890Smrg
2191ab64890Smrgtypedef void (*XCloseLCProc)(
2201ab64890Smrg    XLCd		/* lcd */
2211ab64890Smrg);
2221ab64890Smrg
2231ab64890Smrgtypedef char* (*XlcMapModifiersProc)(
2241ab64890Smrg    XLCd		/* lcd */,
2251ab64890Smrg    _Xconst char*	/* user_mods */,
2261ab64890Smrg    _Xconst char*	/* prog_mods */
2271ab64890Smrg);
2281ab64890Smrg
2291ab64890Smrgtypedef XOM (*XOpenOMProc)(
2301ab64890Smrg    XLCd		/* lcd */,
2311ab64890Smrg    Display*		/* display */,
2321ab64890Smrg    XrmDatabase		/* rdb */,
2331ab64890Smrg    _Xconst char*	/* res_name */,
2341ab64890Smrg    _Xconst char*	/* res_class */
2351ab64890Smrg);
2361ab64890Smrg
2371ab64890Smrgtypedef XIM (*XOpenIMProc)(
2381ab64890Smrg    XLCd		/* lcd */,
2391ab64890Smrg    Display*		/* display */,
2401ab64890Smrg    XrmDatabase		/* rdb */,
2411ab64890Smrg    char*		/* res_name */,
2421ab64890Smrg    char*		/* res_class */
2431ab64890Smrg);
2441ab64890Smrg
2451ab64890Smrgtypedef Bool (*XRegisterIMInstantiateCBProc)(
2461ab64890Smrg    XLCd		/* lcd */,
2471ab64890Smrg    Display*		/* display */,
2481ab64890Smrg    XrmDatabase		/* rdb */,
2491ab64890Smrg    char*		/* res_name */,
2501ab64890Smrg    char*		/* res_class */,
2511ab64890Smrg    XIDProc		/* callback */,
2521ab64890Smrg    XPointer		/* client_data */
2531ab64890Smrg);
2541ab64890Smrg
2551ab64890Smrgtypedef Bool (*XUnregisterIMInstantiateCBProc)(
2561ab64890Smrg    XLCd		/* lcd */,
2571ab64890Smrg    Display*		/* display */,
2581ab64890Smrg    XrmDatabase		/* rdb */,
2591ab64890Smrg    char*		/* res_name */,
2601ab64890Smrg    char*		/* res_class */,
2611ab64890Smrg    XIDProc		/* callback */,
2621ab64890Smrg    XPointer		/* client_data */
2631ab64890Smrg);
2641ab64890Smrg
2651ab64890Smrgtypedef XrmMethods (*XrmInitParseInfoProc)(
2661ab64890Smrg    XLCd		/* lcd */,
2671ab64890Smrg    XPointer*		/* state */
2681ab64890Smrg);
2691ab64890Smrg
2701ab64890Smrgtypedef int (*XmbTextPropertyToTextListProc)(
2711ab64890Smrg    XLCd		lcd,
2721ab64890Smrg    Display*		display,
2731ab64890Smrg    const XTextProperty* text_prop,
2741ab64890Smrg    char***		list_return,
2751ab64890Smrg    int*		count_return
2761ab64890Smrg);
2771ab64890Smrg
2781ab64890Smrgtypedef int (*XwcTextPropertyToTextListProc)(
2791ab64890Smrg    XLCd		lcd,
2801ab64890Smrg    Display*		display,
2811ab64890Smrg    const XTextProperty* text_prop,
2821ab64890Smrg    wchar_t***		list_return,
2831ab64890Smrg    int*		count_return
2841ab64890Smrg);
2851ab64890Smrg
2861ab64890Smrgtypedef int (*XmbTextListToTextPropertyProc)(
2871ab64890Smrg    XLCd		lcd,
2881ab64890Smrg    Display*		display,
2891ab64890Smrg    char**		list,
2901ab64890Smrg    int			count,
2911ab64890Smrg    XICCEncodingStyle	style,
2921ab64890Smrg    XTextProperty*	text_prop_return
2931ab64890Smrg);
2941ab64890Smrg
2951ab64890Smrgtypedef int (*XwcTextListToTextPropertyProc)(
2961ab64890Smrg    XLCd		lcd,
2971ab64890Smrg    Display*		display,
2981ab64890Smrg    wchar_t**		list,
2991ab64890Smrg    int			count,
3001ab64890Smrg    XICCEncodingStyle	style,
3011ab64890Smrg    XTextProperty*	text_prop_return
3021ab64890Smrg);
3031ab64890Smrg
3041ab64890Smrgtypedef void (*XwcFreeStringListProc)(
3051ab64890Smrg    XLCd		lcd,
3061ab64890Smrg    wchar_t**		list
3071ab64890Smrg);
3081ab64890Smrg
3091ab64890Smrgtypedef const char* (*XDefaultStringProc)(
3101ab64890Smrg    XLCd		lcd
3111ab64890Smrg);
3121ab64890Smrg
3131ab64890Smrgtypedef struct {
3141ab64890Smrg    XCloseLCProc			close;
3151ab64890Smrg    XlcMapModifiersProc			map_modifiers;
3161ab64890Smrg    XOpenOMProc				open_om;
3171ab64890Smrg    XOpenIMProc				open_im;
3181ab64890Smrg    XrmInitParseInfoProc		init_parse_info;
3191ab64890Smrg    XmbTextPropertyToTextListProc	mb_text_prop_to_list;
3201ab64890Smrg    XwcTextPropertyToTextListProc	wc_text_prop_to_list;
3211ab64890Smrg    XmbTextPropertyToTextListProc	utf8_text_prop_to_list;
3221ab64890Smrg    XmbTextListToTextPropertyProc	mb_text_list_to_prop;
3231ab64890Smrg    XwcTextListToTextPropertyProc	wc_text_list_to_prop;
3241ab64890Smrg    XmbTextListToTextPropertyProc	utf8_text_list_to_prop;
3251ab64890Smrg    XwcFreeStringListProc		wc_free_string_list;
3261ab64890Smrg    XDefaultStringProc			default_string;
3271ab64890Smrg    XRegisterIMInstantiateCBProc	register_callback;
3281ab64890Smrg    XUnregisterIMInstantiateCBProc	unregister_callback;
3291ab64890Smrg} XLCdMethodsRec, *XLCdMethods;
3301ab64890Smrg
3311ab64890Smrg
3321ab64890Smrgtypedef struct {
3331ab64890Smrg    char*		name;			/* name of this LC */
3341ab64890Smrg    char*		modifiers;		/* modifiers of locale */
3351ab64890Smrg} XLCdCoreRec, *XLCdCore;
3361ab64890Smrg
3371ab64890Smrg
3381ab64890Smrgtypedef struct _XLCd {
3391ab64890Smrg    XLCdMethods		methods;		/* methods of this LC */
3401ab64890Smrg    XLCdCore		core;			/* data of this LC */
3411ab64890Smrg    XPointer		opaque;			/* LDX specific data */
3421ab64890Smrg} XLCdRec;
3431ab64890Smrg
3441ab64890Smrgtypedef int XlcPosition;
3451ab64890Smrg
3461ab64890Smrg#define XlcHead		0
3471ab64890Smrg#define XlcTail		-1
3481ab64890Smrg
3491ab64890Smrgtypedef struct {
3501ab64890Smrg    char *name;
3511ab64890Smrg    XPointer value;
3521ab64890Smrg} XlcArg, *XlcArgList;
3531ab64890Smrg
3541ab64890Smrgtypedef struct _XlcResource {
3551ab64890Smrg    const char *name;
3561ab64890Smrg    XrmQuark xrm_name;
3571ab64890Smrg    int size;
3581ab64890Smrg    int offset;
3591ab64890Smrg    unsigned long mask;
3601ab64890Smrg} XlcResource, *XlcResourceList;
3611ab64890Smrg
3621ab64890Smrg#define XlcCreateMask	(1L<<0)
3631ab64890Smrg#define XlcDefaultMask	(1L<<1)
3641ab64890Smrg#define XlcGetMask	(1L<<2)
3651ab64890Smrg#define XlcSetMask	(1L<<3)
3661ab64890Smrg#define XlcIgnoreMask	(1L<<4)
3671ab64890Smrg
3681ab64890Smrg#define XlcNumber(arr)	(sizeof(arr) / sizeof(arr[0]))
3691ab64890Smrg
3701ab64890Smrgtypedef Status (*XCloseOMProc)(
3711ab64890Smrg    XOM			/* om */
3721ab64890Smrg);
3731ab64890Smrg
3741ab64890Smrgtypedef char* (*XSetOMValuesProc)(
3751ab64890Smrg    XOM			/* om */,
3761ab64890Smrg    XlcArgList		/* args */,
3771ab64890Smrg    int			/* num_args */
3781ab64890Smrg);
3791ab64890Smrg
3801ab64890Smrgtypedef char* (*XGetOMValuesProc)(
3811ab64890Smrg    XOM			/* om */,
3821ab64890Smrg    XlcArgList		/* args */,
3831ab64890Smrg    int			/* num_args */
3841ab64890Smrg);
3851ab64890Smrg
3861ab64890Smrgtypedef XOC (*XCreateOCProc)(
3871ab64890Smrg    XOM			/* om */,
3881ab64890Smrg    XlcArgList		/* args */,
3891ab64890Smrg    int			/* num_args */
3901ab64890Smrg);
3911ab64890Smrg
3921ab64890Smrgtypedef struct _XOMMethodsRec {
3931ab64890Smrg    XCloseOMProc	close;
3941ab64890Smrg    XSetOMValuesProc	set_values;
3951ab64890Smrg    XGetOMValuesProc	get_values;
3961ab64890Smrg    XCreateOCProc	create_oc;
3971ab64890Smrg} XOMMethodsRec, *XOMMethods;
3981ab64890Smrg
3991ab64890Smrgtypedef struct _XOMCoreRec {
4001ab64890Smrg    XLCd lcd;				/* lcd */
4011ab64890Smrg    Display *display;			/* display */
4021ab64890Smrg    XrmDatabase rdb;			/* database */
4031ab64890Smrg    char *res_name;			/* resource name */
4041ab64890Smrg    char *res_class;			/* resource class */
4051ab64890Smrg    XOC oc_list;			/* xoc list */
4061ab64890Smrg    XlcResourceList resources;		/* xom resources */
4071ab64890Smrg    int num_resources;			/* number of xom resources */
4081ab64890Smrg    XOMCharSetList required_charset;	/* required charset list */
4091ab64890Smrg    XOMOrientation orientation_list;	/* orientation list */
4101ab64890Smrg    Bool directional_dependent;		/* directional-dependent */
4111ab64890Smrg    Bool contextual_drawing;		/* contextual drawing */
4121ab64890Smrg    Bool context_dependent;		/* context-dependent drawing */
4131ab64890Smrg} XOMCoreRec, *XOMCore;
4141ab64890Smrg
4151ab64890Smrgtypedef struct _XOM {
4161ab64890Smrg    XOMMethods methods;
4171ab64890Smrg    XOMCoreRec core;
4181ab64890Smrg} XOMRec;
4191ab64890Smrg
4201ab64890Smrgtypedef void (*XDestroyOCProc)(
4211ab64890Smrg    XOC			/* oc */
4221ab64890Smrg);
4231ab64890Smrg
4241ab64890Smrgtypedef char* (*XSetOCValuesProc)(
4251ab64890Smrg    XOC			/* oc */,
4261ab64890Smrg    XlcArgList		/* args */,
4271ab64890Smrg    int			/* num_args */
4281ab64890Smrg);
4291ab64890Smrg
4301ab64890Smrgtypedef char* (*XGetOCValuesProc)(
4311ab64890Smrg    XOC			/* oc */,
4321ab64890Smrg    XlcArgList		/* args */,
4331ab64890Smrg    int			/* num_args */
4341ab64890Smrg);
4351ab64890Smrg
4361ab64890Smrg/*
43761b2299dSmrg * X Font Sets are an instantiable object, so we define it, the
4381ab64890Smrg * object itself, a method list and data
4391ab64890Smrg */
4401ab64890Smrg
44161b2299dSmrg/*
4421ab64890Smrg * XFontSet object method list
4431ab64890Smrg */
4441ab64890Smrg
4451ab64890Smrgtypedef int (*XmbTextEscapementProc)(
4461ab64890Smrg    XFontSet		/* font_set */,
4471ab64890Smrg    _Xconst char*	/* text */,
4481ab64890Smrg    int			/* text_len */
4491ab64890Smrg);
4501ab64890Smrg
4511ab64890Smrgtypedef int (*XmbTextExtentsProc)(
4521ab64890Smrg    XFontSet		/* font_set */,
4531ab64890Smrg    _Xconst char*	/* text */,
4541ab64890Smrg    int			/* text_len */,
4551ab64890Smrg    XRectangle*		/* overall_ink_extents */,
4561ab64890Smrg    XRectangle*		/* overall_logical_extents */
4571ab64890Smrg);
4581ab64890Smrg
4591ab64890Smrgtypedef Status (*XmbTextPerCharExtentsProc)(
4601ab64890Smrg    XFontSet		/* font_set */,
4611ab64890Smrg    _Xconst char*	/* text */,
4621ab64890Smrg    int			/* text_len */,
4631ab64890Smrg    XRectangle*		/* ink_extents_buffer */,
4641ab64890Smrg    XRectangle*		/* logical_extents_buffer */,
4651ab64890Smrg    int			/* buffer_size */,
4661ab64890Smrg    int*		/* num_chars */,
4671ab64890Smrg    XRectangle*		/* max_ink_extents */,
4681ab64890Smrg    XRectangle*		/* max_logical_extents */
4691ab64890Smrg);
4701ab64890Smrg
4711ab64890Smrgtypedef int (*XmbDrawStringProc)(
4721ab64890Smrg    Display*		/* display */,
4731ab64890Smrg    Drawable		/* drawable */,
4741ab64890Smrg    XFontSet		/* font_set */,
4751ab64890Smrg    GC			/* gc */,
4761ab64890Smrg    int			/* x */,
4771ab64890Smrg    int			/* y */,
4781ab64890Smrg    _Xconst char*	/* text */,
4791ab64890Smrg    int			/* text_len */
4801ab64890Smrg);
4811ab64890Smrg
4821ab64890Smrgtypedef void (*XmbDrawImageStringProc)(
4831ab64890Smrg    Display*		/* display */,
4841ab64890Smrg    Drawable		/* drawable */,
4851ab64890Smrg    XFontSet		/* font_set */,
4861ab64890Smrg    GC			/* gc */,
4871ab64890Smrg    int			/* x */,
4881ab64890Smrg    int			/* y */,
4891ab64890Smrg    _Xconst char*	/* text */,
4901ab64890Smrg    int			/* text_len */
4911ab64890Smrg);
4921ab64890Smrg
4931ab64890Smrgtypedef int (*XwcTextEscapementProc)(
4941ab64890Smrg    XFontSet		/* font_set */,
4951ab64890Smrg    _Xconst wchar_t*	/* text */,
4961ab64890Smrg    int			/* text_len */
4971ab64890Smrg);
4981ab64890Smrg
4991ab64890Smrgtypedef int (*XwcTextExtentsProc)(
5001ab64890Smrg    XFontSet		/* font_set */,
5011ab64890Smrg    _Xconst wchar_t*	/* text */,
5021ab64890Smrg    int			/* text_len */,
5031ab64890Smrg    XRectangle*		/* overall_ink_extents */,
5041ab64890Smrg    XRectangle*		/* overall_logical_extents */
5051ab64890Smrg);
5061ab64890Smrg
5071ab64890Smrgtypedef Status (*XwcTextPerCharExtentsProc)(
5081ab64890Smrg    XFontSet		/* font_set */,
5091ab64890Smrg    _Xconst wchar_t*	/* text */,
5101ab64890Smrg    int			/* text_len */,
5111ab64890Smrg    XRectangle*		/* ink_extents_buffer */,
5121ab64890Smrg    XRectangle*		/* logical_extents_buffer */,
5131ab64890Smrg    int			/* buffer_size */,
5141ab64890Smrg    int*		/* num_chars */,
5151ab64890Smrg    XRectangle*		/* max_ink_extents */,
5161ab64890Smrg    XRectangle*		/* max_logical_extents */
5171ab64890Smrg);
5181ab64890Smrg
5191ab64890Smrgtypedef int (*XwcDrawStringProc)(
5201ab64890Smrg    Display*		/* display */,
5211ab64890Smrg    Drawable		/* drawable */,
5221ab64890Smrg    XFontSet		/* font_set */,
5231ab64890Smrg    GC			/* gc */,
5241ab64890Smrg    int			/* x */,
5251ab64890Smrg    int			/* y */,
5261ab64890Smrg    _Xconst wchar_t*	/* text */,
5271ab64890Smrg    int			/* text_len */
5281ab64890Smrg);
5291ab64890Smrg
5301ab64890Smrgtypedef void (*XwcDrawImageStringProc)(
5311ab64890Smrg    Display*		/* display */,
5321ab64890Smrg    Drawable		/* drawable */,
5331ab64890Smrg    XFontSet		/* font_set */,
5341ab64890Smrg    GC			/* gc */,
5351ab64890Smrg    int			/* x */,
5361ab64890Smrg    int			/* y */,
5371ab64890Smrg    _Xconst wchar_t*	/* text */,
5381ab64890Smrg    int			/* text_len */
5391ab64890Smrg);
5401ab64890Smrg
5411ab64890Smrgtypedef struct {
5421ab64890Smrg    XDestroyOCProc 		destroy;
5431ab64890Smrg    XSetOCValuesProc 		set_values;
5441ab64890Smrg    XGetOCValuesProc 		get_values;
5451ab64890Smrg
5461ab64890Smrg    /* multi-byte text drawing methods */
5471ab64890Smrg
5481ab64890Smrg    XmbTextEscapementProc	mb_escapement;
5491ab64890Smrg    XmbTextExtentsProc		mb_extents;
5501ab64890Smrg    XmbTextPerCharExtentsProc	mb_extents_per_char;
5511ab64890Smrg    XmbDrawStringProc		mb_draw_string;
5521ab64890Smrg    XmbDrawImageStringProc	mb_draw_image_string;
5531ab64890Smrg
5541ab64890Smrg    /* wide character text drawing methods */
5551ab64890Smrg
5561ab64890Smrg    XwcTextEscapementProc	wc_escapement;
5571ab64890Smrg    XwcTextExtentsProc		wc_extents;
5581ab64890Smrg    XwcTextPerCharExtentsProc	wc_extents_per_char;
5591ab64890Smrg    XwcDrawStringProc		wc_draw_string;
5601ab64890Smrg    XwcDrawImageStringProc	wc_draw_image_string;
5611ab64890Smrg
5621ab64890Smrg    /* UTF-8 text drawing methods */
5631ab64890Smrg
5641ab64890Smrg    XmbTextEscapementProc	utf8_escapement;
5651ab64890Smrg    XmbTextExtentsProc		utf8_extents;
5661ab64890Smrg    XmbTextPerCharExtentsProc	utf8_extents_per_char;
5671ab64890Smrg    XmbDrawStringProc		utf8_draw_string;
5681ab64890Smrg    XmbDrawImageStringProc	utf8_draw_image_string;
5691ab64890Smrg} XOCMethodsRec, *XOCMethods;
5701ab64890Smrg
5711ab64890Smrg
5721ab64890Smrg/*
5731ab64890Smrg * XOC independent data
5741ab64890Smrg */
5751ab64890Smrg
5761ab64890Smrgtypedef struct {
5771ab64890Smrg    XOM om;				/* XOM */
5781ab64890Smrg    XOC next;				/* next XOC */
5791ab64890Smrg    XlcResourceList resources;		/* xoc resources */
5801ab64890Smrg    int num_resources;			/* number of xoc resources */
5811ab64890Smrg    char *base_name_list;     		/* base font name list */
5821ab64890Smrg    Bool om_automatic;			/* OM Automatic */
5831ab64890Smrg    XOMFontInfo font_info;		/* font info */
5841ab64890Smrg    XFontSetExtents font_set_extents;  	/* font set extents */
5851ab64890Smrg    char *default_string;     		/* default string */
5861ab64890Smrg    XOMCharSetList missing_list;	/* missing charset list */
5871ab64890Smrg    XOrientation orientation;		/* orientation */
5881ab64890Smrg    char *res_name;			/* resource name */
5891ab64890Smrg    char *res_class;			/* resource class */
5901ab64890Smrg} XOCCoreRec, *XOCCore;
5911ab64890Smrg
5921ab64890Smrgtypedef struct _XOC {
5931ab64890Smrg    XOCMethods methods;
5941ab64890Smrg    XOCCoreRec core;
5951ab64890Smrg} XOCRec;
5961ab64890Smrg
5971ab64890Smrg
5981ab64890Smrg/*
59961b2299dSmrg * X Input Managers are an instantiable object, so we define it, the
6001ab64890Smrg * object itself, a method list and data.
6011ab64890Smrg */
6021ab64890Smrg
6031ab64890Smrg/*
6041ab64890Smrg * an Input Manager object method list
6051ab64890Smrg */
6061ab64890Smrgtypedef struct {
6071ab64890Smrg    Status (*close)(
6081ab64890Smrg	XIM
6091ab64890Smrg	);
6101ab64890Smrg    char* (*set_values)(
6111ab64890Smrg	XIM, XIMArg*
6121ab64890Smrg	);
6131ab64890Smrg    char* (*get_values)(
6141ab64890Smrg	XIM, XIMArg*
6151ab64890Smrg	);
6161ab64890Smrg    XIC (*create_ic)(
6171ab64890Smrg	XIM, XIMArg*
6181ab64890Smrg	);
6191ab64890Smrg    int (*ctstombs)(
6201ab64890Smrg	XIM, char*, int, char*, int, Status *
6211ab64890Smrg	);
6221ab64890Smrg    int (*ctstowcs)(
6231ab64890Smrg	XIM, char*, int, wchar_t*, int, Status *
6241ab64890Smrg	);
6251ab64890Smrg    int (*ctstoutf8)(
6261ab64890Smrg	XIM, char*, int, char*, int, Status *
6271ab64890Smrg	);
6281ab64890Smrg} XIMMethodsRec, *XIMMethods;
6291ab64890Smrg
6301ab64890Smrg/*
6311ab64890Smrg * Input Manager LC independent data
6321ab64890Smrg */
6331ab64890Smrgtypedef struct {
6341ab64890Smrg    XLCd		lcd;			/* LC of this input method */
6351ab64890Smrg    XIC			ic_chain;		/* list of ICs for this IM */
6361ab64890Smrg
6371ab64890Smrg    Display *		display;               	/* display */
6381ab64890Smrg    XrmDatabase 	rdb;
6391ab64890Smrg    char *		res_name;
6401ab64890Smrg    char *		res_class;
6411ab64890Smrg
6421ab64890Smrg    XIMValuesList	*im_values_list;
6431ab64890Smrg    XIMValuesList	*ic_values_list;
6441ab64890Smrg    XIMStyles		*styles;
6451ab64890Smrg    XIMCallback		 destroy_callback;
6461ab64890Smrg    char *		im_name;		/* XIMMODIFIER name */
6471ab64890Smrg    XIMResourceList	im_resources;		/* compiled IM resource list */
6481ab64890Smrg    unsigned int	im_num_resources;
6491ab64890Smrg    XIMResourceList	ic_resources;		/* compiled IC resource list */
6501ab64890Smrg    unsigned int	ic_num_resources;
6511ab64890Smrg    Bool		visible_position;
6521ab64890Smrg} XIMCoreRec, *XIMCore;
6531ab64890Smrg
6541ab64890Smrg
6551ab64890Smrg
6561ab64890Smrg/*
65761b2299dSmrg * An X Input Manager (IM).  Implementations may need to extend this data
6589c019ec5Smaya * structure to accommodate additional data, state information etc.
6591ab64890Smrg */
6601ab64890Smrgtypedef struct _XIM {
6611ab64890Smrg    XIMMethods		methods;		/* method list of this IM */
6621ab64890Smrg    XIMCoreRec		core;			/* data of this IM */
6631ab64890Smrg} XIMRec;
6641ab64890Smrg
6651ab64890Smrg
6661ab64890Smrg
6671ab64890Smrg/*
66861b2299dSmrg * X Input Contexts (IC) are an instantiable object, so we define it, the
6691ab64890Smrg * object itself, a method list and data for this object
6701ab64890Smrg */
6711ab64890Smrg
6721ab64890Smrg/*
6731ab64890Smrg * Input Context method list
67461b2299dSmrg */
6751ab64890Smrgtypedef struct {
6761ab64890Smrg    void (*destroy)(
6771ab64890Smrg	XIC
6781ab64890Smrg	);
6791ab64890Smrg    void (*set_focus)(
6801ab64890Smrg	XIC
6811ab64890Smrg	);
6821ab64890Smrg    void (*unset_focus)(
6831ab64890Smrg	XIC
6841ab64890Smrg	);
6851ab64890Smrg    char* (*set_values)(
6861ab64890Smrg	XIC, XIMArg*
6871ab64890Smrg	);
6881ab64890Smrg    char* (*get_values)(
6891ab64890Smrg	XIC, XIMArg*
6901ab64890Smrg	);
6911ab64890Smrg    char* (*mb_reset)(
6921ab64890Smrg	XIC
6931ab64890Smrg	);
6941ab64890Smrg    wchar_t* (*wc_reset)(
6951ab64890Smrg	XIC
6961ab64890Smrg	);
6971ab64890Smrg    char* (*utf8_reset)(
6981ab64890Smrg	XIC
6991ab64890Smrg	);
7001ab64890Smrg    int (*mb_lookup_string)(
7011ab64890Smrg	XIC, XKeyEvent*, char*, int, KeySym*, Status*
7021ab64890Smrg	);
7031ab64890Smrg    int (*wc_lookup_string)(
7041ab64890Smrg	XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
7051ab64890Smrg	);
7061ab64890Smrg    int (*utf8_lookup_string)(
7071ab64890Smrg	XIC, XKeyEvent*, char*, int, KeySym*, Status*
7081ab64890Smrg	);
7091ab64890Smrg} XICMethodsRec, *XICMethods;
7101ab64890Smrg
7111ab64890Smrg
7121ab64890Smrg/*
7131ab64890Smrg * Input Context LC independent data
7141ab64890Smrg */
7151ab64890Smrgtypedef struct {
7161ab64890Smrg    XIM			im;			/* XIM this IC belongs too */
7171ab64890Smrg    XIC			next;			/* linked list of ICs for IM */
7181ab64890Smrg
7191ab64890Smrg    Window		client_window;		/* window IM can use for */
7201ab64890Smrg						/* display or subwindows */
7211ab64890Smrg    XIMStyle		input_style;		/* IM's input style */
7221ab64890Smrg    Window		focus_window;		/* where key events go */
7231ab64890Smrg    unsigned long	filter_events;		/* event mask from IM */
7241ab64890Smrg    XICCallback		geometry_callback;	/* client callback */
7251ab64890Smrg    char *		res_name;
7261ab64890Smrg    char *		res_class;
7271ab64890Smrg
7281ab64890Smrg    XICCallback		destroy_callback;
7291ab64890Smrg    XICCallback		string_conversion_callback;
7301ab64890Smrg    XIMStringConversionText	 string_conversion;
7311ab64890Smrg    XIMResetState	reset_state;
7321ab64890Smrg    XIMHotKeyTriggers  *hotkey;
7331ab64890Smrg    XIMHotKeyState	hotkey_state;
7341ab64890Smrg
7351ab64890Smrg    ICPreeditAttributes	preedit_attr;		/* visuals of preedit area */
7361ab64890Smrg    ICStatusAttributes	status_attr;		/* visuals of status area */
7371ab64890Smrg} XICCoreRec, *XICCore;
7381ab64890Smrg
7391ab64890Smrg
7401ab64890Smrg/*
74161b2299dSmrg * an Input Context.  Implementations may need to extend this data
7429c019ec5Smaya * structure to accommodate additional data, state information etc.
7431ab64890Smrg */
7441ab64890Smrgtypedef struct _XIC {
7451ab64890Smrg    XICMethods		methods;		/* method list of this IC */
7461ab64890Smrg    XICCoreRec		core;			/* data of this IC */
7471ab64890Smrg} XICRec;
7481ab64890Smrg
7491ab64890Smrg
7501ab64890Smrg/* If the argument 'name' is appropriate for this loader, it instantiates an
7511ab64890Smrg   XLCd object with appropriate locale methods and returns it. May return
7521ab64890Smrg   NULL; in this case, the remaining loaders are tried. */
7531ab64890Smrgtypedef XLCd (*XLCdLoadProc)(
7541ab64890Smrg    const char*		name
7551ab64890Smrg);
7561ab64890Smrg
7571ab64890Smrg_XFUNCPROTOBEGIN
7581ab64890Smrg
7591ab64890Smrgextern XLCd _XOpenLC(
7601ab64890Smrg    char*		name
7611ab64890Smrg);
7621ab64890Smrg
7631ab64890Smrgextern void _XCloseLC(
7641ab64890Smrg    XLCd		lcd
7651ab64890Smrg);
7661ab64890Smrg
7671ab64890Smrgextern XLCd _XlcCurrentLC (void);
7681ab64890Smrg
7691ab64890Smrgextern Bool _XlcValidModSyntax(
7701ab64890Smrg    const char*		mods,
7711ab64890Smrg    const char* const *	valid
7721ab64890Smrg);
7731ab64890Smrg
7741ab64890Smrgextern char *_XlcDefaultMapModifiers(
7751ab64890Smrg    XLCd		lcd,
7761ab64890Smrg    _Xconst char*		user_mods,
7771ab64890Smrg    _Xconst char*		prog_mods
7781ab64890Smrg);
7791ab64890Smrg
7801ab64890Smrgextern void _XIMCompileResourceList(
7811ab64890Smrg    XIMResourceList	/* res */,
7821ab64890Smrg    unsigned int	/* num_res */
7831ab64890Smrg);
7841ab64890Smrg
7851ab64890Smrgextern void _XCopyToArg(
7861ab64890Smrg    XPointer		/* src */,
7871ab64890Smrg    XPointer*		/* dst */,
7881ab64890Smrg    unsigned int	/* size */
7891ab64890Smrg);
7901ab64890Smrg
7911ab64890Smrgextern char ** _XParseBaseFontNameList(
7921ab64890Smrg    char*		/* str */,
7931ab64890Smrg    int*		/* num */
7941ab64890Smrg);
7951ab64890Smrg
7961ab64890Smrgextern XrmMethods _XrmInitParseInfo(
7971ab64890Smrg	XPointer*	statep
7981ab64890Smrg);
7991ab64890Smrg
8001ab64890Smrgextern void _XRegisterFilterByMask(
8011ab64890Smrg    Display*		/* dpy */,
8021ab64890Smrg    Window		/* window */,
8031ab64890Smrg    unsigned long	/* event_mask */,
8041ab64890Smrg    Bool (*)(
8051ab64890Smrg	     Display*	/* display */,
8061ab64890Smrg	     Window	/* window */,
8071ab64890Smrg	     XEvent*	/* event */,
8081ab64890Smrg	     XPointer	/* client_data */
8091ab64890Smrg	     )		/* filter */,
8101ab64890Smrg    XPointer		/* client_data */
8111ab64890Smrg);
8121ab64890Smrg
8131ab64890Smrgextern void _XRegisterFilterByType(
8141ab64890Smrg    Display*		/* dpy */,
8151ab64890Smrg    Window		/* window */,
8161ab64890Smrg    int			/* start_type */,
8171ab64890Smrg    int			/* end_type */,
8181ab64890Smrg    Bool (*)(
8191ab64890Smrg	     Display*	/* display */,
8201ab64890Smrg	     Window	/* window */,
8211ab64890Smrg	     XEvent*	/* event */,
8221ab64890Smrg	     XPointer	/* client_data */
8231ab64890Smrg	     )		/* filter */,
8241ab64890Smrg    XPointer		/* client_data */
8251ab64890Smrg);
8261ab64890Smrg
8271ab64890Smrgextern void _XUnregisterFilter(
8281ab64890Smrg    Display*		/* dpy */,
8291ab64890Smrg    Window		/* window */,
8301ab64890Smrg    Bool (*)(
8311ab64890Smrg	     Display*	/* display */,
8321ab64890Smrg	     Window	/* window */,
8331ab64890Smrg	     XEvent*	/* event */,
8341ab64890Smrg	     XPointer	/* client_data */
8351ab64890Smrg	     )		/* filter */,
8361ab64890Smrg    XPointer		/* client_data */
8371ab64890Smrg);
8381ab64890Smrg
8391ab64890Smrgextern void _XlcCountVaList(
8401ab64890Smrg    va_list		var,
8411ab64890Smrg    int*		count_return
8421ab64890Smrg);
8431ab64890Smrg
8441ab64890Smrgextern void _XlcVaToArgList(
8451ab64890Smrg    va_list		var,
8461ab64890Smrg    int			count,
8471ab64890Smrg    XlcArgList*		args_return
8481ab64890Smrg);
8491ab64890Smrg
8501ab64890Smrg
8511ab64890Smrgextern void _XlcCopyFromArg(
8521ab64890Smrg    char *		src,
8531ab64890Smrg    char *		dst,
8541ab64890Smrg    int			size
8551ab64890Smrg);
8561ab64890Smrg
8571ab64890Smrgextern void _XlcCopyToArg(
8581ab64890Smrg    char *		src,
8591ab64890Smrg    char **		dst,
8601ab64890Smrg    int			size
8611ab64890Smrg);
8621ab64890Smrg
8631ab64890Smrgextern void _XlcCompileResourceList(
8641ab64890Smrg    XlcResourceList	resources,
8651ab64890Smrg    int			num_resources
8661ab64890Smrg);
8671ab64890Smrg
8681ab64890Smrgextern char *_XlcGetValues(
8691ab64890Smrg    XPointer		base,
8701ab64890Smrg    XlcResourceList	resources,
8711ab64890Smrg    int			num_resources,
8721ab64890Smrg    XlcArgList		args,
8731ab64890Smrg    int			num_args,
8741ab64890Smrg    unsigned long	mask
8751ab64890Smrg);
8761ab64890Smrg
8771ab64890Smrgextern char *_XlcSetValues(
8781ab64890Smrg    XPointer		base,
8791ab64890Smrg    XlcResourceList	resources,
8801ab64890Smrg    int			num_resources,
8811ab64890Smrg    XlcArgList		args,
8821ab64890Smrg    int			num_args,
8831ab64890Smrg    unsigned long	mask
8841ab64890Smrg);
8851ab64890Smrg
8861ab64890Smrg/* documented in i18n/Framework.PS */
8871ab64890Smrgextern void _XlcInitLoader (void);
8881ab64890Smrg
8891ab64890Smrgextern void _XlcDeInitLoader (void);
8901ab64890Smrg
8911ab64890Smrg/* documented in i18n/Framework.PS */
8921ab64890Smrg/* Returns True on success, False on failure. */
8931ab64890Smrgextern Bool _XlcAddLoader(
8941ab64890Smrg    XLCdLoadProc	proc,
8951ab64890Smrg    XlcPosition		position
8961ab64890Smrg);
8971ab64890Smrg
8981ab64890Smrg/* documented in i18n/Framework.PS */
8991ab64890Smrgextern void _XlcRemoveLoader(
9001ab64890Smrg    XLCdLoadProc	proc
9011ab64890Smrg);
9021ab64890Smrg
9031ab64890Smrg/* Registers UTF-8 converters for a non-UTF-8 locale. */
9041ab64890Smrgextern void _XlcAddUtf8Converters(
9051ab64890Smrg    XLCd		lcd
9061ab64890Smrg);
9071ab64890Smrg
9081ab64890Smrg/* Registers UTF-8 converters for a UTF-8 locale. */
9091ab64890Smrgextern void _XlcAddUtf8LocaleConverters(
9101ab64890Smrg    XLCd		lcd
9111ab64890Smrg);
9121ab64890Smrg
91361b2299dSmrg/* Registers GB18030 converters for a GB18030 locale. */
91461b2299dSmrgextern void _XlcAddGB18030LocaleConverters(
91561b2299dSmrg    XLCd		lcd
91661b2299dSmrg);
91761b2299dSmrg
9181ab64890Smrg/* The default locale loader. Assumes an ASCII encoding. */
9191ab64890Smrgextern XLCd _XlcDefaultLoader(
9201ab64890Smrg    const char*		name
9211ab64890Smrg);
9221ab64890Smrg
9231ab64890Smrg/* The generic locale loader. Suitable for all encodings except UTF-8.
9241ab64890Smrg   Uses an XLC_LOCALE configuration file. */
9251ab64890Smrgextern XLCd _XlcGenericLoader(
9261ab64890Smrg    const char*		name
9271ab64890Smrg);
9281ab64890Smrg
9291ab64890Smrg/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
9301ab64890Smrg   Uses an XLC_LOCALE configuration file. */
9311ab64890Smrgextern XLCd _XlcUtf8Loader(
9321ab64890Smrg    const char*		name
9331ab64890Smrg);
9341ab64890Smrg
9351ab64890Smrgextern XLCd _XlcDynamicLoad(
9361ab64890Smrg    const char*		name
9371ab64890Smrg);
9381ab64890Smrg
9391ab64890Smrg/* The old dynamic loader. */
9401ab64890Smrgextern XLCd _XlcDynamicLoader(
9411ab64890Smrg    const char*		name
9421ab64890Smrg);
9431ab64890Smrg
9441ab64890Smrgextern Bool _XInitDefaultIM(
9451ab64890Smrg    XLCd		lcd
9461ab64890Smrg);
9471ab64890Smrg
9481ab64890Smrgextern Bool _XInitDefaultOM(
9491ab64890Smrg    XLCd		lcd
9501ab64890Smrg);
9511ab64890Smrg
9521ab64890Smrgextern Bool _XInitDynamicIM(
9531ab64890Smrg    XLCd		lcd
9541ab64890Smrg);
9551ab64890Smrg
9561ab64890Smrgextern Bool _XInitDynamicOM(
9571ab64890Smrg    XLCd		lcd
9581ab64890Smrg);
9591ab64890Smrg
9601ab64890Smrg_XFUNCPROTOEND
9611ab64890Smrg
9621ab64890Smrg#endif /* !_XP_PRINT_SERVER_ */
9631ab64890Smrg
9641ab64890Smrg#endif	/* _XLCINT_H_ */
965