1 /*	-*- mode: C; mode: fold -*- */
2 /* slkanji.h --- Interface to use Japanese 2byte KANJI code.
3  * Copyright (c) 1995, 2000 Kazuhisa Yoshino(k-yosino@actweb.ne.jp)
4  * This file is part of the Japanized S-Lang library.
5  *
6  * You may distribute under the terms of either the GNU General Public
7  * License or the Perl Artistic License.
8  */
9 
10 
11 /* Added by H.Nishizuka */
12 #ifndef TRUE
13 #define TRUE (-1)
14 #endif
15 #ifndef FALSE
16 #define FALSE (0)
17 #endif
18 
19 #define issjiskanji(c)	((0x81 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0x9f)	\
20 			|| (0xe0 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xfc))
21 #define iseuckanji(c)	(0xa1 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xfe)
22 #define isjiskanji(c)	(0x21 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0x7e)
23 #define ishkana(c)	(0xa0 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xdf)
24 #ifdef iskanji
25 # undef iskanji
26 #endif
27 #define iskanji(c)	IsKanji(c,kSLcode)
28 
29 #define	SS2	0x8E			/* for EUC  kana (Single Shift JIS-X0201kana)*/
30 #define	ESC	0x1b
31 
32 #define	NON	0
33 #define	NOKANJI	0
34 #define ASCII	0
35 #define	EUC	1
36 #define	JIS	2
37 #define	SJIS	3
38 #define	BINARY	4
39 
40 #ifndef IBMPC_SYSTEM
41 # define SLANG_DEFAULT_KANJI_CODE EUC
42 #else
43 # define SLANG_DEFAULT_KANJI_CODE SJIS
44 #endif
45 # define KANJI_DEFAULT_CODE SLANG_DEFAULT_KANJI_CODE
46 
47 #ifndef NULL
48 #define NULL 0
49 #endif
50 
51 extern int	kSLfiAuto, SKanaToDKana;
52 extern int	kSLcode;
53 extern int	kSLfile_code, kSLinput_code, kSLdisplay_code, kSLsystem_code;
54 extern int	DetectLevel;
55 extern int IsKanji(int, int);
56 extern int kanji_pos(unsigned char *, unsigned char *);
57 extern int short_kanji_pos(unsigned short *, unsigned short *);
58 #define kanji_pos2 short_kanji_pos
59 extern int iskanji2nd(char *, int);
60 extern char *kcode_to_str(int);
61 extern int str_to_kcode(char *);
62 #ifdef REAL_UNIX_SYSTEM
63 extern int Stricmp(char *, char *);
64 #else
65 #define Stricmp	stricmp
66 #endif
67 extern void sjistojis(char *, char *);
68 extern void jistosjis(char *, char *);
69 extern void euctosjis(char *, char *);
70 extern void sjistoeuc(char *, char *);
71 extern void euctojis(char *, char *);
72 extern void jistoeuc(char *, char *);
73 extern void notconv(char *, char *);
74 #define NCODE 4
75 extern void (*kSLcodeconv[NCODE][NCODE])();
76 #if 0
77 extern void	kSLset_kanji_filecode(int *);
78 extern void	kSLset_kanji_inputcode(int *);
79 extern void	kSLset_kanji_displaycode(int *);
80 extern void	kSLset_kanji_systemcode(int *);
81 extern void	set_kanji_kSLcode(int *);
82 extern int	kSLget_kanji_filecode(void);
83 extern int	kSLget_kanji_inputcode(void);
84 extern int	kSLget_kanji_displaycode(void);
85 extern char	*get_kanji_systemcode(void);
86 extern char	*get_kanji_kSLcode(void);
87 #if 0
88 extern char	get_1st_kanji_filecode(void);
89 extern char	get_1st_kanji_inputcode(void);
90 extern char	get_1st_kanji_displaycode(void);
91 extern char	get_1st_kanji_systemcode(void);
92 extern char	get_1st_kanji_jedcode(void);
93 #endif
94 extern void	kSLrot_kanji_filecode(void);
95 extern void	kSLrot_kanji_inputcode(void);
96 extern void	kSLrot_kanji_displaycode(void);
97 extern void	kSLrot_kanji_systemcode(void);
98 #endif
99 extern char	*file_kanji_autocode(char *);
100 extern void	han_to_zen(int *);
101 extern void	han2zen(unsigned char *, unsigned char *, int *, int *, int);
102 
103 extern int	kSLis_kanji_code(void);
104 extern int	kcode_detect(char *);
105 extern int	IsKcode(unsigned char *, int, int *);
106 extern int	kSLinit_kanji(void);
107 /* compatible for old version */
108 #define init_SLKanji kSLinit_kanji
109 extern int	kSLCheckLineNum(unsigned char *, int, int, int, int);
110 extern unsigned char * kSLCodeConv(unsigned char *, int *, int, int, int);
111 extern unsigned int kSLsys_getkey(void);
112 
113