OSDN Git Service

a4cbeb327f94f9cd4e0c7dbfec715bc33d180355
[putex/putex.git] / src / texsourc / libtoua / ptexenc / ptexenc / ptexenc.h
1 /*
2  *  KANJI Code conversion routines.
3  */
4
5 #ifndef PTEXENC_PTEXENC_H
6 #define PTEXENC_PTEXENC_H
7
8 #include <kpathsea/types.h>
9
10 #if defined (WIN32) && !defined (__MINGW32__) && !defined (NO_PTENC_DLL)
11 #define PTENC_DLL 1
12 #endif /* WIN32 && !__MINGW32__ && !NO_PTENC_DLL */
13
14 #if defined (PTENC_DLL) && (defined (WIN32) || defined (__CYGWIN__))
15 #ifdef MAKE_PTENC_DLL
16 #define PTENCDLL __declspec(dllexport)
17 #else /* ! MAKE_PTENC_DLL */
18 #define PTENCDLL __declspec(dllimport)
19 #endif
20 #else /* ! (PTENC_DLL && (WIN32 || __CYGWIN__)) */
21 #define PTENCDLL
22 #endif
23
24 extern PTENCDLL const char *ptexenc_version_string;
25 #if defined(WIN32)
26 extern PTENCDLL int sjisterminal;
27 extern PTENCDLL FILE *Poptr;
28 extern PTENCDLL int infile_enc_auto;
29 #endif
30
31 #define KANJI_OPTS "{jis|euc|sjis|utf8}"
32
33 /* enable/disable UPTEX */
34 extern PTENCDLL void enable_UPTEX (boolean enable);
35 extern PTENCDLL void set_prior_file_enc(void);
36
37 /* get/set Kanji encoding by string */
38 extern PTENCDLL const_string get_enc_string(void);
39 extern PTENCDLL boolean set_enc_string(const_string file, const_string inter);
40 #define getencstring  get_enc_string
41 #define setencstring  set_enc_string
42
43 /* decide if internal Kanji encode is SJIS/UPTEX or not */
44 extern PTENCDLL boolean  is_internalSJIS(void);
45 extern PTENCDLL boolean  is_internalEUC(void);
46 extern PTENCDLL boolean  is_internalUPTEX(void);
47 #define isinternalSJIS  is_internalSJIS
48 #define isinternalEUC   is_internalEUC
49 #define isinternalUPTEX is_internalUPTEX
50
51 /* check char range */
52 extern PTENCDLL boolean ismultichr (int length, int nth, int c);
53 extern PTENCDLL boolean iskanji1(int c);
54 extern PTENCDLL boolean iskanji2(int c);
55
56 /* internal (EUC/SJIS/UPTEX) from/to buffer (EUC/SJIS/UTF-8) code conversion */
57 extern PTENCDLL int multistrlen(unsigned char *s, int len, int pos);
58 extern PTENCDLL int multibytelen (int first_byte);
59 extern PTENCDLL long fromBUFF(unsigned char *s, int len, int pos);
60 extern PTENCDLL long toBUFF(long inter);
61
62 /* internal (EUC/SJIS/UPTEX) from/to DVI (JIS/UCS) code conversion */
63 extern PTENCDLL long toDVI (long kcode);
64 extern PTENCDLL long fromDVI (long kcode);
65
66 /* JIS/EUC/SJIS/KUTN/UCS to internal (EUC/SJIS/UPTEX) code conversion */
67 /* (only for \euc primitive, etc.) */
68 extern PTENCDLL long toJIS(long kcode);
69 extern PTENCDLL long fromJIS(long jis);
70 extern PTENCDLL long fromEUC(long euc);
71 extern PTENCDLL long fromSJIS(long sjis);
72 extern PTENCDLL long fromKUTEN(long kuten);
73 extern PTENCDLL long fromUCS (long ucs);
74 extern PTENCDLL long toUCS(long kcode);
75
76 /* fputs/putc with encoding conversion */
77 extern PTENCDLL int putc2(int c, FILE *fp);
78 extern PTENCDLL int fputs2(const char *s, FILE *fp);
79
80 /* input line with encoding conversion */
81 extern PTENCDLL long input_line2(FILE *fp, unsigned char *buff, long pos,
82                                 const long buffsize, int *lastchar);
83
84 #ifdef WIN32
85 extern PTENCDLL void clear_infile_enc(FILE *fp);
86 #else
87 /* open/close through nkf */
88 extern PTENCDLL void nkf_disable(void);
89 extern PTENCDLL FILE *nkf_open(const char *path, const char *mode);
90 extern PTENCDLL int nkf_close(FILE *fp);
91 #endif
92
93 #endif /* PTEXENC_PTEXENC_H */