11ab64890Smrg/*
21ab64890Smrg * Copyright 1992, 1993 by TOSHIBA Corp.
31ab64890Smrg *
41ab64890Smrg * Permission to use, copy, modify, and distribute this software and its
51ab64890Smrg * documentation for any purpose and without fee is hereby granted, provided
61ab64890Smrg * that the above copyright notice appear in all copies and that both that
71ab64890Smrg * copyright notice and this permission notice appear in supporting
81ab64890Smrg * documentation, and that the name of TOSHIBA not be used in advertising
91ab64890Smrg * or publicity pertaining to distribution of the software without specific,
101ab64890Smrg * written prior permission. TOSHIBA make no representations about the
111ab64890Smrg * suitability of this software for any purpose.  It is provided "as is"
121ab64890Smrg * without express or implied warranty.
131ab64890Smrg *
141ab64890Smrg * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
151ab64890Smrg * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
161ab64890Smrg * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
171ab64890Smrg * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
181ab64890Smrg * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
191ab64890Smrg * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
201ab64890Smrg * SOFTWARE.
211ab64890Smrg *
221ab64890Smrg * Author: Katsuhisa Yano	TOSHIBA Corp.
231ab64890Smrg *			   	mopi@osa.ilab.toshiba.co.jp
241ab64890Smrg */
251ab64890Smrg/*
261ab64890Smrg * Copyright 1995 by FUJITSU LIMITED
271ab64890Smrg * This is source code modified by FUJITSU LIMITED under the Joint
281ab64890Smrg * Development Agreement for the CDE/Motif PST.
291ab64890Smrg *
301ab64890Smrg * Modifier: Takanori Tateno   FUJITSU LIMITED
311ab64890Smrg *
321ab64890Smrg */
331ab64890Smrg
341ab64890Smrg#ifndef _XLCGENERIC_H_
351ab64890Smrg#define _XLCGENERIC_H_
361ab64890Smrg
371ab64890Smrg#include "XlcPubI.h"
381ab64890Smrg
391ab64890Smrgtypedef struct _ByteInfo {
401ab64890Smrg     unsigned char start,end;
411ab64890Smrg} ByteInfoRec, *ByteInfo;
421ab64890Smrg
431ab64890Smrgtypedef struct _ByteInfoList {
441ab64890Smrg    int 	M;                          /* 1 <= M <= length */
451ab64890Smrg    int 	byteinfo_num;
461ab64890Smrg    ByteInfo 	byteinfo;
471ab64890Smrg} ByteInfoListRec, *ByteInfoList;
481ab64890Smrg
491ab64890Smrg/* conversion_type values */
501ab64890Smrg#define LOCALCONV      1
511ab64890Smrg#define FILECONV       2
521ab64890Smrg#define FUNCTIONCONV   4
531ab64890Smrg
541ab64890Smrgtypedef struct _Conversion {
551ab64890Smrg    unsigned long 	conversion_type;
561ab64890Smrg    int       		conv_num;
571ab64890Smrg    FontScope 		convlist;
581ab64890Smrg    char      		*cnv_file;
591ab64890Smrg    XlcConv    		cnvfunc;
601ab64890Smrg} ConversionRec, *Conversion;
611ab64890Smrg
621ab64890Smrgtypedef struct _ExtdSegment {
631ab64890Smrg    char    	*name;
641ab64890Smrg    XlcSide 	side;
651ab64890Smrg    FontScope 	area;
661ab64890Smrg    int 	area_num;
671ab64890Smrg    XlcCharSet  charset;
681ab64890Smrg} ExtdSegmentRec, *ExtdSegment;
691ab64890Smrg
701ab64890Smrgtypedef struct _SegConvRec {
711ab64890Smrg    int         	length;
721ab64890Smrg    char        	*source_encoding;
731ab64890Smrg    XlcCharSet		source;
741ab64890Smrg    char        	*destination_encoding;
751ab64890Smrg    XlcCharSet		dest;
761ab64890Smrg    FontScopeRec   	range;
771ab64890Smrg    int         	conv_num;
781ab64890Smrg    FontScope   	conv;
791ab64890Smrg} SegConvRec, *SegConv;
801ab64890Smrg
811ab64890Smrgtypedef struct _ParseInfoRec *ParseInfo;
821ab64890Smrg
831ab64890Smrgtypedef struct _CodeSetRec {
841ab64890Smrg    XlcCharSet 		*charset_list;
851ab64890Smrg    int 		num_charsets;
861ab64890Smrg    int 		cs_num;
871ab64890Smrg    XlcSide 		side;
881ab64890Smrg    int 		length;
891ab64890Smrg    ByteInfoList 	byteM;
901ab64890Smrg    Conversion 		mbconv;
911ab64890Smrg    Conversion 		ctconv;
921ab64890Smrg    ExtdSegment 	ctextseg;
931ab64890Smrg    ParseInfo 		parse_info;
941ab64890Smrg    unsigned long 	wc_encoding;
951ab64890Smrg    Bool		string_encoding;
961ab64890Smrg} CodeSetRec, *CodeSet;
971ab64890Smrg
981ab64890Smrgtypedef enum {
991ab64890Smrg    E_GL,			/* GL encoding */
1001ab64890Smrg    E_GR,			/* GR encoding */
1011ab64890Smrg    E_SS,			/* single shift */
1021ab64890Smrg    E_LSL,			/* locking shift left */
1031ab64890Smrg    E_LSR,			/* locking shift right */
1041ab64890Smrg    E_LAST
1051ab64890Smrg} EncodingType;
1061ab64890Smrg
1071ab64890Smrgtypedef struct _ParseInfoRec {
1081ab64890Smrg    EncodingType 	type;
1091ab64890Smrg    char 		*encoding;
1101ab64890Smrg    CodeSet 		codeset;
1111ab64890Smrg} ParseInfoRec;
1121ab64890Smrg
1131ab64890Smrg/*
1141ab64890Smrg * XLCd private data
1151ab64890Smrg */
1161ab64890Smrg
1171ab64890Smrg#define XLC_GENERIC(lcd, x)	(((XLCdGeneric) lcd->core)->gen.x)
1181ab64890Smrg#define XLC_GENERIC_PART(lcd)	(&(((XLCdGeneric) lcd->core)->gen))
1191ab64890Smrg
1201ab64890Smrgtypedef struct _XLCdGenericPart {
1211ab64890Smrg    int 		codeset_num;
1221ab64890Smrg    CodeSet 		*codeset_list;
1231ab64890Smrg    unsigned char 	*mb_parse_table;
1241ab64890Smrg    int 		mb_parse_list_num;
1251ab64890Smrg    ParseInfo 		*mb_parse_list;
1261ab64890Smrg    unsigned long 	wc_encode_mask;
1271ab64890Smrg    unsigned long 	wc_shift_bits;
1281ab64890Smrg    CodeSet 		initial_state_GL;
1291ab64890Smrg    CodeSet 		initial_state_GR;
1301ab64890Smrg    int  		segment_conv_num;  /* UDC */
1311ab64890Smrg    SegConv 		segment_conv;      /* UDC */
1321ab64890Smrg    Bool 		use_stdc_env;
1331ab64890Smrg    Bool 		force_convert_to_mb;
1341ab64890Smrg} XLCdGenericPart;
1351ab64890Smrg
1361ab64890Smrgtypedef struct _XLCdGenericRec {
13761b2299dSmrg    XLCdCoreRec 	core;
1381ab64890Smrg    XLCdPublicPart 	pub;
13961b2299dSmrg    XLCdGenericPart 	gen;
1401ab64890Smrg} XLCdGenericRec, *XLCdGeneric;
1411ab64890Smrg
1421ab64890Smrgextern XLCdMethods _XlcGenericMethods;
1431ab64890Smrg
1441ab64890Smrgextern FontScope
1451ab64890Smrg_XlcParse_scopemaps(
1461ab64890Smrg    const char *str,
1471ab64890Smrg    int *size);
1481ab64890Smrgextern void
1491ab64890Smrg_XlcDbg_printValue(
1501ab64890Smrg    const char *str,
1511ab64890Smrg    char **value,
1521ab64890Smrg    int num);
1531ab64890Smrg
1541ab64890Smrgextern XIM
1551ab64890Smrg_XDefaultOpenIM(
1561ab64890Smrg    XLCd                lcd,
1571ab64890Smrg    Display             *dpy,
1581ab64890Smrg    XrmDatabase         rdb,
1591ab64890Smrg    char                *res_name,
1601ab64890Smrg    char                *res_class);
1611ab64890Smrg
1621ab64890Smrg#endif  /* _XLCGENERIC_H_ */
163