1*9a4a12bdSRobert Mustacchi.\" 2*9a4a12bdSRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*9a4a12bdSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*9a4a12bdSRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*9a4a12bdSRobert Mustacchi.\" 1.0 of the CDDL. 6*9a4a12bdSRobert Mustacchi.\" 7*9a4a12bdSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*9a4a12bdSRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*9a4a12bdSRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*9a4a12bdSRobert Mustacchi.\" 11*9a4a12bdSRobert Mustacchi.\" 12*9a4a12bdSRobert Mustacchi.\" Copyright 2020 Robert Mustacchi 13*9a4a12bdSRobert Mustacchi.\" 14*9a4a12bdSRobert Mustacchi.Dd April 22, 2020 15*9a4a12bdSRobert Mustacchi.Dt UCHAR.H 3HEAD 16*9a4a12bdSRobert Mustacchi.Os 17*9a4a12bdSRobert Mustacchi.Sh NAME 18*9a4a12bdSRobert Mustacchi.Nm uchar.h 19*9a4a12bdSRobert Mustacchi.Nd unicode utilities header 20*9a4a12bdSRobert Mustacchi.Sh SYNOPSIS 21*9a4a12bdSRobert Mustacchi.In uchar.h 22*9a4a12bdSRobert Mustacchi.Sh DESCRIPTION 23*9a4a12bdSRobert MustacchiThe 24*9a4a12bdSRobert Mustacchi.In uchar.h 25*9a4a12bdSRobert Mustacchiheader provides support for the C11 Unicode utilities. 26*9a4a12bdSRobert MustacchiThe types and functions provide means for working with data encoded as 27*9a4a12bdSRobert MustacchiUTF-16 and UTF-32. 28*9a4a12bdSRobert MustacchiWhen working in non-Unicode locales, these types may not represent 29*9a4a12bdSRobert MustacchiUnicode code points. 30*9a4a12bdSRobert Mustacchi.Pp 31*9a4a12bdSRobert MustacchiThe 32*9a4a12bdSRobert Mustacchi.In uchar.h 33*9a4a12bdSRobert Mustacchiheader defines the following types: 34*9a4a12bdSRobert Mustacchi.Bl -tag -width Vt 35*9a4a12bdSRobert Mustacchi.It Vt char16_t 36*9a4a12bdSRobert MustacchiAn unsigned integer that can represent 16-bit characters, generally a 37*9a4a12bdSRobert Mustacchisingle single UTF-16 code unit. 38*9a4a12bdSRobert MustacchiA Unicode code point may be one or two UTF-16 code units due to 39*9a4a12bdSRobert Mustacchisurrogate pairs. 40*9a4a12bdSRobert Mustacchi.It Vt char32_t 41*9a4a12bdSRobert MustacchiAn unsigned integer that can represent 32-bit characters, generally a 42*9a4a12bdSRobert Mustacchisingle UTF-32 code unit. 43*9a4a12bdSRobert Mustacchi.It Vt size_t 44*9a4a12bdSRobert MustacchiAn unsigned integer that represents the size of various objects. 45*9a4a12bdSRobert MustacchiThis can hold the result of the 46*9a4a12bdSRobert Mustacchi.Sy sizeof 47*9a4a12bdSRobert Mustacchioperator. 48*9a4a12bdSRobert MustacchiSee also 49*9a4a12bdSRobert Mustacchi.Xr stddef.h 3HEAD . 50*9a4a12bdSRobert Mustacchi.It Vt mbstate_t 51*9a4a12bdSRobert MustacchiAn object that holds the state for converting between character 52*9a4a12bdSRobert Mustacchisequences and wide characters 53*9a4a12bdSRobert Mustacchi.Po 54*9a4a12bdSRobert Mustacchi.Vt wchar_t , 55*9a4a12bdSRobert Mustacchi.Vt char16_t , 56*9a4a12bdSRobert Mustacchi.Vt char32_t 57*9a4a12bdSRobert Mustacchi.Pc . 58*9a4a12bdSRobert MustacchiSee also, 59*9a4a12bdSRobert Mustacchi.Xr wchar.h 3HEAD . 60*9a4a12bdSRobert Mustacchi.El 61*9a4a12bdSRobert MustacchiThe 62*9a4a12bdSRobert Mustacchi.In uchar.h 63*9a4a12bdSRobert Mustacchiheader also defines the following functions which are used to convert 64*9a4a12bdSRobert Mustacchibetween 65*9a4a12bdSRobert Mustacchi.Vt char16_t 66*9a4a12bdSRobert Mustacchiand 67*9a4a12bdSRobert Mustacchi.Vt char32_t 68*9a4a12bdSRobert Mustacchisequences and other character sequences: 69*9a4a12bdSRobert Mustacchi.Bl -tag -width cr16rtomb 70*9a4a12bdSRobert Mustacchi.It Xr c16rtomb 3C 71*9a4a12bdSRobert MustacchiConvert 72*9a4a12bdSRobert Mustacchi.Vt char16_t 73*9a4a12bdSRobert Mustacchisequences to multi-byte character sequences. 74*9a4a12bdSRobert Mustacchi.It Xr c32rtomb 3C 75*9a4a12bdSRobert MustacchiConvert 76*9a4a12bdSRobert Mustacchi.Vt char32_t 77*9a4a12bdSRobert Mustacchisequences to multi-byte character sequences. 78*9a4a12bdSRobert Mustacchi.It Xr mbrtoc16 3C 79*9a4a12bdSRobert MustacchiConvert multi-byte character sequences to 80*9a4a12bdSRobert Mustacchi.Vt char16_t 81*9a4a12bdSRobert Mustacchisequences. 82*9a4a12bdSRobert Mustacchi.It Xr mbrtoc32 3C 83*9a4a12bdSRobert MustacchiConvert multi-byte character sequences to 84*9a4a12bdSRobert Mustacchi.Vt char32_t 85*9a4a12bdSRobert Mustacchisequences. 86*9a4a12bdSRobert Mustacchi.El 87*9a4a12bdSRobert Mustacchi.Sh INTERFACE STABILITY 88*9a4a12bdSRobert Mustacchi.Sy Committed 89*9a4a12bdSRobert Mustacchi.Sh SEE ALSO 90*9a4a12bdSRobert Mustacchi.Xr c16rtomb 3C , 91*9a4a12bdSRobert Mustacchi.Xr c32rtomb 3C , 92*9a4a12bdSRobert Mustacchi.Xr mbrtoc16 3C , 93*9a4a12bdSRobert Mustacchi.Xr mbrtoc32 3C , 94*9a4a12bdSRobert Mustacchi.Xr stddef.h 3HEAD , 95*9a4a12bdSRobert Mustacchi.Xr wchar.h 3HEAD 96