Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
curs_getcchar(3X)		 Library calls		     curs_getcchar(3X)

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

SYNOPSIS
       #include	<curses.h>

       int getcchar(
	       const cchar_t *wch,
	       wchar_t *wc,
	       attr_t *attrs,
	       short *color_pair,
	       void *opts );

       int setcchar(
	       cchar_t *wch,
	       const wchar_t *wc,
	       const attr_t attrs,
	       short color_pair,
	       const void *opts	);

DESCRIPTION
   getcchar
       The getcchar function gets a wide-character string and rendition	from a
       cchar_t argument.  When wc is not a null	pointer, the getcchar function
       does the	following:

          Extracts information	from a cchar_t value wch

          Stores the character	attributes in the location pointed to by attrs

          Stores the color pair in the	location pointed to by color_pair

          Stores the wide-character string,  characters  referenced  by  wch,
	   into	the array pointed to by	wc.

       When wc is a null pointer, the getcchar function	does the following:

          Obtains the number of wide characters pointed to by wch

          Does	not change the data referenced by attrs	or color_pair

   setcchar
       The setcchar function initializes the location pointed to by wch	by us-
       ing:

          The character attributes in attrs

          The color pair in color_pair

          The	wide-character	string	pointed	 to by wc.  The	string must be
	   L'\0' terminated, contain at	most one spacing character, which must
	   be the first.

	   Up to CCHARW_MAX-1 non-spacing characters may  follow.   Additional
	   non-spacing characters are ignored.

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

RETURN VALUE
       When  wc	is a null pointer, getcchar returns the	number of wide charac-
       ters referenced by wch, including one for a trailing null.

       When wc is not a	null pointer, getcchar returns OK upon successful com-
       pletion,	and ERR	otherwise.

       Upon successful completion, setcchar returns OK.	 Otherwise, it returns
       ERR.

NOTES
       The wch argument	may be a value generated by a call to setcchar or by a
       function	that has a cchar_t output argument.  If	wch is constructed  by
       any other means,	the effect is unspecified.

EXTENSIONS
       X/Open  Curses  documents the opts argument as reserved for future use,
       saying that it must be null.  This implementation uses  that  parameter
       in ABI 6	for the	functions which	have a color pair parameter to support
       extended	color pairs:

          For	 functions  which modify the color, e.g., setcchar, if opts is
	   set it is treated as	a pointer to int, and used to  set  the	 color
	   pair	instead	of the short pair parameter.

          For functions which retrieve	the color, e.g., getcchar, if opts  is
	   set it is treated as	a pointer to int, and  used  to	 retrieve  the
	   color pair as an int	value, in addition retrieving it via the stan-
	   dard	pointer	to short parameter.

PORTABILITY
       The  CCHARW_MAX	symbol is specific to ncurses.	X/Open Curses does not
       provide details for the layout of the cchar_t structure.	 It tells what
       data are	stored in it:

          a spacing character (wchar_t, i.e., 32-bits).

          non-spacing characters (again, wchar_t's).

          attributes (at least	16 bits, inferred from the  various  ACS-  and
	   WACS-flags).

          color  pair	(at  least  16	bits, inferred from the	unsigned short
	   type).

       The 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.

       The Unix	implementations	at the time follow that	limit:

          AIX 4  and  OSF1 4 use the same declaration with an array of	5 non-
	   spacing characters z	and a single spacing character c.

          HP-UX 10 uses an opaque structure with 28  bytes,  which  is	 large
	   enough for the 6 wchar_t values.

          Solaris xpg4	curses uses a single array of 6	wchar_t	values.

       This implementation's cchar_t was defined in 1995 using 5 for the total
       of  spacing and non-spacing characters (CCHARW_MAX).  That was probably
       due to a	misreading 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 beginning	to implement the func-
       tions using the structure.

       In practice, even four non-spacing characters may seem enough.	X/Open
       Curses  documents  possible  uses for non-spacing characters, including
       using them for ligatures	between	characters (a feature  apparently  not
       supported  by  any  curses implementation).  Unicode does not limit the
       (analogous) number of combining characters, so some applications	may be
       affected.

SEE ALSO
       curses(3X), curs_attr(3X), curs_color(3X), wcwidth(3)

ncurses	6.5			  2024-04-20		     curs_getcchar(3X)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | NOTES | EXTENSIONS | PORTABILITY | SEE ALSO

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curs_getcchar&sektion=3&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help