source: trunk/src/emx/include/uconv.h@ 2245

Last change on this file since 2245 was 2245, checked in by bird, 20 years ago

UniStrFromUcs added and UniStrToUcs to uconv.h.
Added UniStrFromUcs, UniStrToUcs, UniMalloc and UniFree to unicode.imp.

  • Property cvs2svn:cvs-rev set to 1.4
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.4 KB
Line 
1/* uconv.h,v 1.3 2004/09/14 22:27:36 bird Exp */
2/** @file
3 * IGCC.
4 */
5/*
6 * Legalesy-free Unicode API interface for OS/2
7 * Unicode Conversions API
8 *
9 * Written by Andrew Zabolotny <bit@eltech.ru>
10 *
11 * This file is put into public domain. You are free to do
12 * literally anything you wish with it: modify, print, sell,
13 * rent, eat, throw out of window: in all (esp. in later)
14 * cases I am not responsible for any damage it causes.
15 */
16
17#ifndef __UCONV_H__
18#define __UCONV_H__
19
20#include <unidef.h>
21#include <sys/cdefs.h>
22
23__BEGIN_DECLS
24
25/* Substitution options */
26#define UCONV_OPTION_SUBSTITUTE_FROM_UNICODE 1
27#define UCONV_OPTION_SUBSTITUTE_TO_UNICODE 2
28#define UCONV_OPTION_SUBSTITUTE_BOTH 3
29
30/* Conversion options */
31#define CVTTYPE_PATH 0x00000004 /* Treat string as a path */
32#define CVTTYPE_CDRA 0x00000002 /* Use CDRA control mapping */
33#define CVTTYPE_CTRL7F 0x00000001 /* Treat 0x7F as a control */
34
35/* Conversion bit masks */
36#define DSPMASK_DATA 0xffffffff
37#define DSPMASK_DISPLAY 0x00000000
38#define DSPMASK_TAB 0x00000200
39#define DSPMASK_LF 0x00000400
40#define DSPMASK_CR 0x00002000
41#define DSPMASK_CRLF 0x00002400
42
43#define ENDIAN_SYSTEM 0x0000
44#define ENDIAN_BIG 0xfeff
45#define ENDIAN_LITTLE 0xfffe
46
47typedef struct _conv_endian_t
48{
49 unsigned short source;
50 unsigned short target;
51} conv_endian_t;
52
53/* Encoding schemes */
54enum uconv_esid
55{ /* Process Display VIO GPI */
56 ESID_sbcs_data = 0x2100, /* x x x x */
57 ESID_sbcs_pc = 0x3100, /* x x x x */
58 ESID_sbcs_ebcdic = 0x1100, /* x x x */
59 ESID_sbcs_iso = 0x4100, /* x x x x */
60 ESID_sbcs_windows = 0x4105, /* x x x x */
61 ESID_sbcs_alt = 0xF100, /* x x x */
62 ESID_dbcs_data = 0x2200, /* x x */
63 ESID_dbcs_pc = 0x3200, /* x x x x */
64 ESID_dbcs_ebcdic = 0x1200, /* x */
65 ESID_mbcs_data = 0x2300, /* x x x */
66 ESID_mbcs_pc = 0x3300, /* x x */
67 ESID_mbcs_ebcdic = 0x1301, /* */
68 ESID_ucs_2 = 0x7200, /* */
69 ESID_ugl = 0x72FF, /* */
70 ESID_utf_8 = 0x7807, /* x x x */
71 ESID_upf_8 = 0x78FF /* x x x x */
72};
73
74typedef struct _uconv_attribute_t
75{
76 unsigned long version; /* R/W Version (must be zero) */
77 char mb_min_len; /* R Minimum char size */
78 char mb_max_len; /* R Maximum char size */
79 char usc_min_len; /* R UCS min size */
80 char usc_max_len; /* R UCS max size */
81 unsigned short esid; /* R Encoding scheme ID */
82 char options; /* R/W Substitution options */
83 char state; /* R/W State for stateful convert */
84 conv_endian_t endian; /* R/W Source and target endian */
85 unsigned long displaymask; /* R/W Display/data mask */
86 unsigned long converttype; /* R/W Conversion type */
87 unsigned short subchar_len; /* R/W MBCS sub len 0=table */
88 unsigned short subuni_len; /* R/W Unicode sub len 0=table */
89 char subchar [16]; /* R/W MBCS sub characters */
90 UniChar subuni [8]; /* R/W Unicode sub characters */
91} uconv_attribute_t;
92
93/* User defined character range */
94typedef struct _udcrange_t
95{
96 unsigned short first;
97 unsigned short last;
98} udcrange_t;
99
100typedef int uconv_error_t;
101typedef void *UconvObject;
102
103int APIENTRY UniCreateUconvObject (UniChar *codepage, UconvObject *uobj);
104int APIENTRY UniQueryUconvObject (UconvObject uobj, uconv_attribute_t * attr,
105 size_t size, char first [256], char other [256], udcrange_t udcrange[32]);
106int APIENTRY UniSetUconvObject (UconvObject uobj, uconv_attribute_t * attr);
107int APIENTRY UniUconvToUcs (UconvObject uobj, void **inbuf, size_t *inbytes,
108 UniChar **outbuf, size_t *outchars, size_t *subst);
109int APIENTRY UniUconvFromUcs (UconvObject uobj, UniChar **inbuf, size_t *inchars,
110 void **outbuf, size_t *outbytes, size_t *subst);
111int APIENTRY UniFreeUconvObject (UconvObject uobj);
112int APIENTRY UniMapCpToUcsCp (unsigned long ulCodePage, UniChar *ucsCodePage, size_t n);
113int APIENTRY UniStrFromUcs(UconvObject, char *, UniChar *, int len);
114int APIENTRY UniStrToUcs(UconvObject, UniChar *, char *, int);
115
116#define IBM_437 (UniChar *)L"IBM-437"
117#define IBM_819 (UniChar *)L"IBM-819"
118#define IBM_850 (UniChar *)L"IBM-850"
119#define UTF_8 (UniChar *)L"IBM-1208"
120#define UCS_2 (UniChar *)L"IBM-1200"
121#define ISO8859_1 (UniChar *)L"IBM-819"
122
123/* uconv error aliases. */
124#define UCONV_BADATTR ULS_BADATTR
125#define UCONV_E2BIG ULS_BUFFERFULL
126#define UCONV_EBADF ULS_BADOBJECT
127#define UCONV_EILSEQ ULS_ILLEGALSEQUENCE
128#define UCONV_EINVAL ULS_INVALID
129#define UCONV_EMFILE ULS_MAXFILESPERPROC
130#define UCONV_ENFILE ULS_MAXFILES
131#define UCONV_ENOMEM ULS_NOMEMORY
132#define UCONV_EOTHER ULS_OTHER
133#define UCONV_NOTIMPLEMENTED ULS_NOTIMPLEMENTED
134
135__END_DECLS
136
137#endif /* __UCONV_H__ */
Note: See TracBrowser for help on using the repository browser.