source: trunk/src/emx/include/unidef.h@ 372

Last change on this file since 372 was 372, checked in by bird, 22 years ago

#455: Added missing apis.

  • Property cvs2svn:cvs-rev set to 1.3
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 9.5 KB
Line 
1/*
2 * Legalesy-free Unicode API interface for OS/2
3 * Interface definitions for basic Unicode API functions
4 *
5 * Written by Andrew Zabolotny <bit@eltech.ru>
6 *
7 * This file is put into public domain. You are free to do
8 * literally anything you wish with it: modify, print, sell,
9 * rent, eat, throw out of window: in all (esp. in later)
10 * cases I am not responsible for any damage it causes.
11 */
12
13#ifndef __UNIDEF_H__
14#define __UNIDEF_H__
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#include <stddef.h>
21#include <time.h>
22
23#include <ulserrno.h>
24#include <ulsitem.h>
25
26typedef wchar_t UniChar;
27typedef void *LocaleObject;
28typedef unsigned int LocaleToken;
29typedef void *AttrObject;
30typedef void *XformObject;
31typedef int ulsBool;
32
33#ifndef TRUE
34# define TRUE 1
35#endif
36#ifndef FALSE
37# define FALSE 0
38#endif
39#ifndef APIENTRY
40#define APIENTRY _System
41#endif
42
43#define UNI_TOKEN_POINTER 1
44#define UNI_MBS_STRING_POINTER 2
45#define UNI_UCS_STRING_POINTER 3
46
47/* Locale categories */
48#undef LANG
49#undef LC_ALL
50#undef LC_COLLATE
51#undef LC_CTYPE
52#undef LC_NUMERIC
53#undef LC_MONETARY
54#undef LC_TIME
55#undef LC_MESSAGES
56
57#define LANG (-2)
58#define LC_ALL (-1)
59#define LC_COLLATE 0
60#define LC_CTYPE 1
61#define LC_NUMERIC 2
62#define LC_MONETARY 3
63#define LC_TIME 4
64#define LC_MESSAGES 5
65
66/* Locale conventions structure */
67typedef struct UniLconv
68{
69 UniChar *decimal_point; /* non-monetary decimal point */
70 UniChar *thousands_sep; /* non-monetary thousands separator */
71 short *grouping; /* non-monetary size of grouping */
72 UniChar *int_curr_symbol; /* int'l currency symbol and separator */
73 UniChar *currency_symbol; /* local currency symbol */
74 UniChar *mon_decimal_point; /* monetary decimal point */
75 UniChar *mon_thousands_sep; /* monetary thousands separator */
76 short *mon_grouping; /* monetary size of grouping */
77 UniChar *positive_sign; /* non-negative values sign */
78 UniChar *negative_sign; /* negative values sign */
79 short int_frac_digits; /* no of fractional digits int currency */
80 short frac_digits; /* no of fractional digits loc currency */
81 short p_cs_precedes; /* nonneg curr sym 1-precedes,0-succeeds */
82 short p_sep_by_space; /* nonneg curr sym 1-space,0-no space */
83 short n_cs_precedes; /* neg curr sym 1-precedes,0-succeeds */
84 short n_sep_by_space; /* neg curr sym 1-space 0-no space */
85 short p_sign_posn; /* positioning of nonneg monetary sign */
86 short n_sign_posn; /* positioning of negative monetary sign */
87 short os2_mondecpt; /* os2 curr sym positioning */
88 UniChar *debit_sign; /* non-neg-valued monetary sym - "DB" */
89 UniChar *credit_sign; /* negative-valued monetary sym - "CR" */
90 UniChar *left_parenthesis; /* negative-valued monetary sym - "(" */
91 UniChar *right_parenthesis; /* negative-valued monetary sym - ")" */
92} UNILCONV;
93
94/* Char/String Type (QueryCharType and UniQueryStringType). */
95typedef struct UniCType {
96 unsigned short itype;
97 char bidi;
98 char charset;
99 unsigned short extend;
100 unsigned short codepage;
101} UNICTYPE;
102
103
104/* Locale Management Function Prototypes */
105
106int APIENTRY UniCreateLocaleObject (int locale_spec_type, const void *locale_spec,
107 LocaleObject *locale_object_ptr);
108int APIENTRY UniQueryLocaleObject (const LocaleObject locale_object, int category,
109 int locale_spec_type, void **locale_spec_ptr);
110int APIENTRY UniFreeLocaleObject (LocaleObject locale_object);
111int APIENTRY UniFreeMem (void *memory_ptr);
112int APIENTRY UniLocaleStrToToken (int locale_string_type, const void *locale_string,
113 LocaleToken *locale_token_ptr);
114int APIENTRY UniLocaleTokenToStr (const LocaleToken locale_token,
115 int locale_string_type, void **locale_string_ptr);
116
117/* Locale Information Function Prototypes */
118int APIENTRY UniQueryLocaleInfo (const LocaleObject locale_object,
119 struct UniLconv **unilconv_addr_ptr);
120int APIENTRY UniFreeLocaleInfo (struct UniLconv *unilconv_addr);
121int APIENTRY UniQueryLocaleItem (const LocaleObject locale_object, LocaleItem item,
122 UniChar **info_item_addr_ptr);
123
124/* Date and Time Function Prototypes */
125size_t APIENTRY UniStrftime (const LocaleObject locale_object, UniChar *ucs,
126 size_t maxsize, const UniChar *format, const struct tm *time_ptr);
127UniChar *APIENTRY UniStrptime (const LocaleObject locale_object, const UniChar *buf,
128 const UniChar *format, struct tm *time_ptr);
129
130/* Monetary Formatting Function Prototype */
131int APIENTRY UniStrfmon (const LocaleObject locale_object, UniChar *ucs, size_t maxsize,
132 const UniChar *format, ...);
133
134/* String/Character Function Prototypes */
135UniChar *APIENTRY UniStrcat (UniChar *ucs1, const UniChar *ucs2);
136UniChar *APIENTRY UniStrchr (const UniChar *ucs, UniChar uc);
137int APIENTRY UniStrcmp (const UniChar *ucs1, const UniChar *ucs2);
138UniChar *APIENTRY UniStrcpy (UniChar *ucs1, const UniChar *ucs2);
139size_t APIENTRY UniStrcspn (const UniChar *ucs1, const UniChar *ucs2);
140size_t APIENTRY UniStrlen (const UniChar *ucs1);
141UniChar *APIENTRY UniStrncat (UniChar *ucs1, const UniChar *ucs2, size_t n);
142int APIENTRY UniStrncmp (const UniChar *ucs1, const UniChar *ucs2, size_t n);
143UniChar *APIENTRY UniStrncpy (UniChar *ucs1, const UniChar *ucs2, size_t n);
144UniChar *APIENTRY UniStrpbrk (const UniChar *ucs1, const UniChar *ucs2);
145UniChar *APIENTRY UniStrrchr (const UniChar *ucs, UniChar uc);
146size_t APIENTRY UniStrspn (const UniChar *ucs1, const UniChar *ucs2);
147UniChar *APIENTRY UniStrstr (const UniChar *ucs1, const UniChar *ucs2);
148UniChar *APIENTRY UniStrtok (UniChar *ucs1, const UniChar *ucs2);
149
150/* Character Attribute Function Prototypes */
151int APIENTRY UniCreateAttrObject (const LocaleObject locale_object,
152 const UniChar *attr_name, AttrObject *attr_object_ptr);
153int APIENTRY UniQueryCharAttr (AttrObject attr_object, UniChar uc);
154int APIENTRY UniScanForAttr (AttrObject attr_object, const UniChar *ucs,
155 size_t num_elems, ulsBool inverse_op, size_t *offset_ptr);
156int APIENTRY UniFreeAttrObject (AttrObject attr_object);
157int APIENTRY UniQueryAlnum (const LocaleObject locale_object, UniChar uc);
158int APIENTRY UniQueryAlpha (const LocaleObject locale_object, UniChar uc);
159int APIENTRY UniQueryBlank (const LocaleObject locale_object, UniChar uc);
160int APIENTRY UniQueryCntrl (const LocaleObject locale_object, UniChar uc);
161int APIENTRY UniQueryDigit (const LocaleObject locale_object, UniChar uc);
162int APIENTRY UniQueryGraph (const LocaleObject locale_object, UniChar uc);
163int APIENTRY UniQueryLower (const LocaleObject locale_object, UniChar uc);
164int APIENTRY UniQueryPrint (const LocaleObject locale_object, UniChar uc);
165int APIENTRY UniQueryPunct (const LocaleObject locale_object, UniChar uc);
166int APIENTRY UniQuerySpace (const LocaleObject locale_object, UniChar uc);
167int APIENTRY UniQueryUpper (const LocaleObject locale_object, UniChar uc);
168int APIENTRY UniQueryXdigit (const LocaleObject locale_object, UniChar uc);
169
170/* String Transformation Function Prototypes */
171int APIENTRY UniCreateTransformObject (const LocaleObject locale_object,
172 const UniChar *xtype, XformObject *xform_object_ptr);
173int APIENTRY UniTransformStr (XformObject xform_object, const UniChar *inp_buf,
174 int *inp_size, UniChar *out_buf, int *out_size);
175int APIENTRY UniFreeTransformObject (XformObject xform_object);
176UniChar APIENTRY UniTransLower (const LocaleObject locale_object, UniChar uc);
177UniChar APIENTRY UniTransUpper (const LocaleObject locale_object, UniChar uc);
178
179/* String Conversion Function Prototypes */
180int APIENTRY UniStrtod (const LocaleObject locale_object, const UniChar *ucs,
181 UniChar **end_ptr, double *result_ptr);
182int APIENTRY UniStrtol (const LocaleObject locale_object, const UniChar *ucs,
183 UniChar **end_ptr, int base, long int *result_ptr);
184int APIENTRY UniStrtoul (const LocaleObject locale_object, const UniChar *ucs,
185 UniChar **end_ptr, int base, unsigned long int *result_ptr);
186
187/* String Comparison Function Prototypes */
188int APIENTRY UniStrcoll (const LocaleObject locale_object,
189 const UniChar *ucs1, const UniChar *ucs2);
190size_t APIENTRY UniStrxfrm (const LocaleObject locale_object, UniChar *ucs1,
191 const UniChar *ucs2, size_t n);
192int APIENTRY UniStrcmpi (const LocaleObject locale_object,
193 const UniChar *ucs1, const UniChar *ucs2);
194int APIENTRY UniStrncmpi (const LocaleObject locale_object,
195 const UniChar *ucs1, const UniChar *ucs2, const size_t n);
196
197/* Unicode Case Mapping Function Prototypes */
198UniChar APIENTRY UniToupper (UniChar uc);
199UniChar APIENTRY UniTolower (UniChar uc);
200UniChar *APIENTRY UniStrupr (UniChar *ucs);
201UniChar *APIENTRY UniStrlwr (UniChar *ucs);
202
203int APIENTRY UniMapCtryToLocale (unsigned long Country, UniChar *LocaleName, size_t n);
204
205/* Locale independent character classification. */
206int APIENTRY UniQueryChar (UniChar uc, unsigned long attr);
207unsigned long APIENTRY UniQueryAttr (UniChar * name);
208unsigned long APIENTRY UniQueryStringType (UniChar * ustr, int size, unsigned short *outstr, int kind);
209struct UniCType*APIENTRY UniQueryCharType (UniChar uchr);
210unsigned long APIENTRY UniQueryCharTypeTable (unsigned long * count, struct UniCType **unictype);
211int APIENTRY UniQueryNumericValue (UniChar uc);
212
213/* Functions for user locals designed to be used by WPShell (local object). */
214int APIENTRY UniSetUserLocaleItem (UniChar * locale, int item, int type, void * value);
215int APIENTRY UniMakeUserLocale (UniChar * name, UniChar * basename);
216int APIENTRY UniDeleteUserLocale (UniChar * locale);
217int APIENTRY UniCompleteUserLocale (void);
218int APIENTRY UniQueryLocaleList (int, UniChar *, int);
219int APIENTRY UniQueryLanguageName (UniChar *lang, UniChar *isolang, UniChar **infoitem);
220int APIENTRY UniQueryCountryName (UniChar *country, UniChar *isolang, UniChar **infoitem);
221
222
223#ifdef __cplusplus
224}
225#endif
226
227#endif /* __UNIDEF_H__ */
Note: See TracBrowser for help on using the repository browser.