.\"***************************************************************************
.\" Copyright (c) 2001-2012,2015 Free Software Foundation, Inc.              *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: curs_getcchar.3x,v 1.17 2015/07/21 09:30:38 tom Exp $
.TH curs_getcchar 3X ""
.de bP
.IP \(bu 4
..
.SH NAME
\fBgetcchar\fP,
\fBsetcchar\fP \- Get a wide character string and rendition from a \fBcchar_t\fP or set a \fBcchar_t\fP from a wide-character string
.SH SYNOPSIS
\fB#include <curses.h>\fP
.sp
\fBint getcchar(\fP
.br
.B "        const cchar_t *\fIwcval\fP,"
.br
.B "        wchar_t *\fIwch\fP,"
.br
.B "        attr_t *\fIattrs\fP,"
.br
.B "        short *\fIcolor_pair\fP,"
.br
.B "        void *\fIopts\fP );"
.sp
.B "int setcchar("
.br
.B "        cchar_t *\fIwcval\fP,"
.br
.B "        const wchar_t *\fIwch\fP,"
.br
.B "        const attr_t \fIattrs\fP,"
.br
.B "        short \fIcolor_pair\fP,"
.br
.B "        void *\fIopts\fP );"
.SH DESCRIPTION
.SS getcchar
.PP
The \fBgetcchar\fP function gets a wide-character string
and rendition from a \fBcchar_t\fP argument.
When \fIwch\fP is not a null pointer,
the \fBgetcchar\fP function does the following:
.bP
Extracts information from a \fBcchar_t\fP value \fIwcval\fP
.bP
Stores the character attributes in the location pointed to by \fIattrs\fP
.bP
Stores the color-pair in the location pointed to by \fIcolor_pair\fP
.bP
Stores the wide-character string,
characters referenced by \fIwcval\fP, into the array pointed to by \fIwch\fP.
.PP
When
\fIwch\fP
is a null pointer, the
\fBgetcchar\fP
function does the following:
.bP
Obtains the number of wide characters pointed to by \fIwcval\fP
.bP
Does not change the data referenced by
\fIattrs\fP
or
\fIcolor_pair\fP
.SS setcchar
.PP
The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\fP
by using:
.bP
The character attributes in
\fIattrs\fP
.bP
The color pair in
\fIcolor_pair\fP
.bP
The wide-character string pointed to by \fIwch\fP.
The string must be L'\\0' terminated,
contain at most one spacing character,
which must be the first.
.IP
Up to \fBCCHARW_MAX\fP\-1 nonspacing characters may follow.
Additional nonspacing characters are ignored.
.IP
The string may contain a single control character instead.
In that case, no nonspacing characters are allowed.
.SH NOTES
.PP
The \fIopts\fP argument is reserved for future use.
Currently, an application must provide a null pointer as \fIopts\fP.
.PP
The \fIwcval\fP argument may be a value generated by a call to
\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument.
If \fIwcval\fP is constructed by any other means, the effect is unspecified.
.SH RETURN VALUE
.PP
When \fIwch\fP is a null pointer,
\fBgetcchar\fP returns the number of wide characters referenced by
\fIwcval\fP,
including one for a trailing null.
.PP
When \fIwch\fP is not a null pointer,
\fBgetcchar\fP returns \fBOK\fP upon successful completion,
and \fBERR\fP otherwise.
.PP
Upon successful completion, \fBsetcchar\fP returns \fBOK\fP.
Otherwise, it returns \fBERR\fP.
.SH SEE ALSO
.PP
Functions:
\fBcurs_attr\fR(3X),
\fBcurs_color\fR(3X),
\fBcurses\fR(3X),
\fBwcwidth\fR(3).
