dwww Home | Manual pages | Find package

getcchar(3NCURSES)               Library calls               getcchar(3NCURSES)

NAME
       getcchar,  setcchar  -  convert  between  a  wide-character string and a
       curses complex character

SYNOPSIS
       #include <curses.h>

       int gettchar(const cchar_t * wch, wchar_t * wc,
             attr_t * attrs, short * pair, void * opts);
       int settchar(cchar_t * wch, const wchar_t * wc,
             const attr_t attrs, short pair, const void * opts);

DESCRIPTION
       The curses complex character data type cchar_t is a structure type  com-
       prising  a  wide-character string, a set of attributes, and a color pair
       identifier.  The cchar_t structure is opaque; do not attempt  to  access
       its members directly.  The library provides functions to manipulate this
       type.

   getcchar
       getcchar destructures a cchar_t into its components.

       If wc is not a null pointer, getcchar:

       •   stores the wide-character string in the curses complex character wch
           into wc;

       •   stores the attributes in attrs; and

       •   stores the color pair identifier in pair.

       If  wc is a null pointer, getcchar counts the wchar_t wide characters in
       wch, returns that value, and leaves attrs and pair unchanged.

   setcchar
       setcchar constructs a curses complex character wch from  the  components
       wc,  attrs,  and pair.  The wide-character string wch must be terminated
       with a null wide character L'\0' and must contain at  most  one  spacing
       character,  which,  if  present, must be the first wide character in the
       string.

       Up  to   CCHARW_MAX - 1   non-spacing   characters   may   follow   (see
       curses_variables(3NCURSES)).  ncurses ignores any additional non-spacing
       characters.

       The  string  may  contain  a  single control character instead.  In that
       case, no non-spacing characters are allowed.

RETURN VALUE
       If getcchar is passed a null pointer as its wc argument, it returns  the
       number  of  wide  characters  for a given wch that it would store in wc,
       counting a trailing null wide character.  If getcchar is  not  passed  a
       null  pointer  as  its  wc argument, it returns OK on success and ERR on
       failure.

       In ncurses, getcchar returns ERR if either  attrs  or  pair  is  a  null
       pointer and wc is not.

       setcchar returns OK on success and ERR on failure.

       In ncurses, setcchar returns ERR if

       •   wch is a null pointer,

       •   wc  starts  with  a  (wide) control character and contains any other
           wide characters, or

       •   pair has a negative value.

NOTES
       wch may be a value stored by setcchar or another curses function with  a
       writable  cchar_t  argument.   If wch is constructed by any other means,
       the library's behavior is unspecified.

EXTENSIONS
       X/Open Curses documents the opts argument as reserved  for  future  use,
       saying  that  it must be a null pointer.  The ncurses 6 ABI uses it with
       functions that have a color pair parameter  to  support  extended  color
       pairs.

       •   In  functions that assign colors, such as setcchar, if opts is not a
           null pointer, ncurses treats it as a pointer to int, and  interprets
           it instead of the short pair parameter as a color pair identifier.

       •   In  functions that retrieve colors, such as getcchar, if opts is not
           a null pointer, ncurses treats it as a pointer to  int,  and  stores
           the  retrieved  color  pair identifier there as well as in the short
           pair parameter (which may therefore undergo a narrowing conversion).

PORTABILITY
       Applications employing ncurses extensions should condition their use  on
       the visibility of the NCURSES_VERSION preprocessor macro.

       These functions are described in X/Open Curses Issue 4.  It specifies no
       error conditions for them.

       X/Open  Curses  does not detail the layout of the cchar_t structure, de-
       scribing only its minimal required contents:

       •   a spacing wide character (wchar_t),

       •   at least five non-spacing wide characters (wchar_t; see below),

       •   attributes (at least 15 bits' worth,  inferred  from  the  count  of
           specified WA_ constants),

       •   a  color  pair identifier (at least 16 bits, inferred from the short
           type used to encode it).

       Non-spacing characters are optional, in the sense that zero or more  may
       be stored in a cchar_t.  XOpen/Curses specifies a limit:

           Implementations  may limit the number of non-spacing characters that
           can be associated with a spacing character, provided any limit is at
           least 5.

       Then-contemporary Unix implementations adhered to that limit.

       •   AIX 4 and OSF/1 4 used the same declaration with  a  single  spacing
           wide character c and an array of 5 non-spacing wide characters z.

       •   HP-UX 10  used  an  opaque structure of 28 bytes, large enough for 6
           wchar_t values.

       •   Solaris xcurses uses a single array of 6 wchar_t values.

       ncurses defined its cchar_t in 1995 using 5 as the total of spacing  and
       non-spacing  characters  (CCHARW_MAX).   That was probably due to a mis-
       reading of the AIX 4 header files, because the  X/Open  Curses  document
       was  not generally available at that time.  Later (in 2002), this detail
       was overlooked when work began to  implement  the  functions  using  the
       structure.

       In  practice,  a  mere  four  non-spacing  characters may seem adequate.
       X/Open Curses documents possible applications of non-spacing characters,
       including their use as ligatures (a feature apparently not supported  by
       any curses implementation).  Unicode does not limit the (analogous) num-
       ber of combining characters in a grapheme cluster; some applications may
       be affected.  ncurses can be compiled with a different CCHARW_MAX value;
       doing so alters the library's ABI.

HISTORY
       X/Open Curses Issue 4 (1995) initially specified these functions.

SEE ALSO
       ncurses(3NCURSES), attr(3NCURSES), color(3NCURSES), wcwidth(3)

ncurses 6.5                        2025-02-01                getcchar(3NCURSES)

Generated by dwww version 1.16 on Sat Oct 3 05:18:51 CEST 2026.