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