Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/ldap/include/ldap_utf8.h
4394 views
1
/* $OpenLDAP$ */
2
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3
*
4
* Copyright 1998-2024 The OpenLDAP Foundation.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted only as authorized by the OpenLDAP
9
* Public License.
10
*
11
* A copy of this license is available in file LICENSE in the
12
* top-level directory of the distribution or, alternatively, at
13
* <http://www.OpenLDAP.org/license.html>.
14
*/
15
/* This notice applies to changes, created by or for Novell, Inc.,
16
* to preexisting works for which notices appear elsewhere in this file.
17
*
18
* Copyright (C) 2000 Novell, Inc. All Rights Reserved.
19
*
20
* THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
21
* USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO VERSION
22
* 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS AVAILABLE AT
23
* HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE" IN THE
24
* TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION OF THIS
25
* WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP PUBLIC
26
* LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT THE
27
* PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
28
*/
29
/* Note: A verbatim copy of version 2.0.1 of the OpenLDAP Public License
30
* can be found in the file "build/LICENSE-2.0.1" in this distribution
31
* of OpenLDAP Software.
32
*/
33
34
#ifndef _LDAP_UTF8_H
35
#define _LDAP_UTF8_H
36
37
#include <lber_types.h> /* get ber_*_t */
38
39
/*
40
* UTF-8 Utility Routines
41
*/
42
43
LDAP_BEGIN_DECL
44
45
#define LDAP_UCS4_INVALID (0x80000000U)
46
typedef ber_int_t ldap_ucs4_t;
47
48
49
/* LDAP_MAX_UTF8_LEN is 3 or 6 depending on size of wchar_t */
50
#define LDAP_MAX_UTF8_LEN ( sizeof(wchar_t) * 3/2 )
51
52
/* Unicode conversion routines */
53
LDAP_F( ldap_ucs4_t ) ldap_x_utf8_to_ucs4( LDAP_CONST char * p );
54
LDAP_F( int ) ldap_x_ucs4_to_utf8( ldap_ucs4_t c, char *buf );
55
56
57
/*
58
* Wide Char / UTF-8 Conversion Routines
59
*/
60
61
/* UTF-8 character to Wide Char */
62
LDAP_F(int) ldap_x_utf8_to_wc LDAP_P((
63
wchar_t *wchar, LDAP_CONST char *utf8char ));
64
65
/* UTF-8 string to Wide Char string */
66
LDAP_F(int) ldap_x_utf8s_to_wcs LDAP_P((
67
wchar_t *wcstr, LDAP_CONST char *utf8str, size_t count ));
68
69
/* Wide Char to UTF-8 character */
70
LDAP_F(int) ldap_x_wc_to_utf8 LDAP_P((
71
char *utf8char, wchar_t wchar, size_t count ));
72
73
/* Wide Char string to UTF-8 string */
74
LDAP_F(int) ldap_x_wcs_to_utf8s LDAP_P((
75
char *utf8str, LDAP_CONST wchar_t *wcstr, size_t count ));
76
77
/*
78
* MultiByte Char / UTF-8 Conversion Routines
79
*/
80
81
/* UTF-8 character to MultiByte character */
82
LDAP_F(int) ldap_x_utf8_to_mb LDAP_P((
83
char *mbchar, LDAP_CONST char *utf8char,
84
int (*ldap_f_wctomb)( char *mbchar, wchar_t wchar )));
85
86
/* UTF-8 string to MultiByte string */
87
LDAP_F(int) ldap_x_utf8s_to_mbs LDAP_P((
88
char *mbstr, LDAP_CONST char *utf8str, size_t count,
89
size_t (*ldap_f_wcstombs)( char *mbstr,
90
LDAP_CONST wchar_t *wcstr, size_t count) ));
91
92
/* MultiByte character to UTF-8 character */
93
LDAP_F(int) ldap_x_mb_to_utf8 LDAP_P((
94
char *utf8char, LDAP_CONST char *mbchar, size_t mbsize,
95
int (*ldap_f_mbtowc)( wchar_t *wchar,
96
LDAP_CONST char *mbchar, size_t count) ));
97
98
/* MultiByte string to UTF-8 string */
99
LDAP_F(int) ldap_x_mbs_to_utf8s LDAP_P((
100
char *utf8str, LDAP_CONST char *mbstr, size_t count,
101
size_t (*ldap_f_mbstowcs)( wchar_t *wcstr,
102
LDAP_CONST char *mbstr, size_t count) ));
103
104
LDAP_END_DECL
105
106
#endif /* _LDAP_UTF8_H */
107
108