-<!--
+<!--
****************************************************************************
- * Copyright (c) 2001-2017,2019 Free Software Foundation, Inc. *
+ * Copyright 2019-2020,2021 Thomas E. Dickey *
+ * Copyright 2001-2015,2017 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_getcchar.3x,v 1.21 2019/03/24 00:59:45 tom Exp @
+ * @Id: curs_getcchar.3x,v 1.25 2021/06/17 21:26:02 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_getcchar 3x</TITLE>
+<TITLE>curs_getcchar 3X</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1 class="no-header">curs_getcchar 3x</H1>
+<H1 class="no-header">curs_getcchar 3X</H1>
<PRE>
-<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+<B><A HREF="curs_getcchar.3X.html">curs_getcchar(3X)</A></B> <B><A HREF="curs_getcchar.3X.html">curs_getcchar(3X)</A></B>
</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
- <STRONG>getcchar</STRONG>, <STRONG>setcchar</STRONG> - Get a wide character string and rendition from a
- <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-character string
+ <B>getcchar</B>, <B>setcchar</B> - Get a wide character string and rendition from a
+ <B>cchar_t</B> or set a <B>cchar_t</B> from a wide-character string
</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>getcchar(</STRONG>
- <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG>
- <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
- <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG>
- <STRONG>short</STRONG> <STRONG>*</STRONG><EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG>
- <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
+ <B>int</B> <B>getcchar(</B>
+ <B>const</B> <B>cchar_t</B> <B>*</B><I>wcval</I><B>,</B>
+ <B>wchar_t</B> <B>*</B><I>wch</I><B>,</B>
+ <B>attr_t</B> <B>*</B><I>attrs</I><B>,</B>
+ <B>short</B> <B>*</B><I>color</I><B>_</B><I>pair</I><B>,</B>
+ <B>void</B> <B>*</B><I>opts</I> <B>);</B>
- <STRONG>int</STRONG> <STRONG>setcchar(</STRONG>
- <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG>
- <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
- <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG>
- <STRONG>short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG>
- <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
+ <B>int</B> <B>setcchar(</B>
+ <B>cchar_t</B> <B>*</B><I>wcval</I><B>,</B>
+ <B>const</B> <B>wchar_t</B> <B>*</B><I>wch</I><B>,</B>
+ <B>const</B> <B>attr_t</B> <I>attrs</I><B>,</B>
+ <B>short</B> <I>color</I><B>_</B><I>pair</I><B>,</B>
+ <B>const</B> <B>void</B> <B>*</B><I>opts</I> <B>);</B>
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
</PRE><H3><a name="h3-getcchar">getcchar</a></H3><PRE>
- The <STRONG>getcchar</STRONG> function gets a wide-character string and rendition from a
- <STRONG>cchar_t</STRONG> argument. When <EM>wch</EM> is not a null pointer, the <STRONG>getcchar</STRONG> func-
- tion does the following:
+ The <B>getcchar</B> function gets a wide-character string and rendition from a
+ <B>cchar_t</B> argument. When <I>wch</I> is not a null pointer, the <B>getcchar</B>
+ function does the following:
- <STRONG>o</STRONG> Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM>
+ <B>o</B> Extracts information from a <B>cchar_t</B> value <I>wcval</I>
- <STRONG>o</STRONG> Stores the character attributes in the location pointed to by <EM>attrs</EM>
+ <B>o</B> Stores the character attributes in the location pointed to by <I>attrs</I>
- <STRONG>o</STRONG> Stores the color-pair in the location pointed to by <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+ <B>o</B> Stores the color-pair in the location pointed to by <I>color</I><B>_</B><I>pair</I>
- <STRONG>o</STRONG> Stores the wide-character string, characters referenced by <EM>wcval</EM>,
- into the array pointed to by <EM>wch</EM>.
+ <B>o</B> Stores the wide-character string, characters referenced by <I>wcval</I>,
+ into the array pointed to by <I>wch</I>.
- When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the following:
+ When <I>wch</I> is a null pointer, the <B>getcchar</B> function does the following:
- <STRONG>o</STRONG> Obtains the number of wide characters pointed to by <EM>wcval</EM>
+ <B>o</B> Obtains the number of wide characters pointed to by <I>wcval</I>
- <STRONG>o</STRONG> Does not change the data referenced by <EM>attrs</EM> or <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+ <B>o</B> Does not change the data referenced by <I>attrs</I> or <I>color</I><B>_</B><I>pair</I>
</PRE><H3><a name="h3-setcchar">setcchar</a></H3><PRE>
- The <STRONG>setcchar</STRONG> function initializes the location pointed to by <EM>wcval</EM> by
+ The <B>setcchar</B> function initializes the location pointed to by <I>wcval</I> by
using:
- <STRONG>o</STRONG> The character attributes in <EM>attrs</EM>
+ <B>o</B> The character attributes in <I>attrs</I>
- <STRONG>o</STRONG> The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+ <B>o</B> The color pair in <I>color</I><B>_</B><I>pair</I>
- <STRONG>o</STRONG> The wide-character string pointed to by <EM>wch</EM>. The string must be
+ <B>o</B> The wide-character string pointed to by <I>wch</I>. The string must be
L'\0' terminated, contain at most one spacing character, which must
be the first.
- Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters may follow. Additional
+ Up to <B>CCHARW_MAX</B>-1 nonspacing characters may follow. Additional
nonspacing characters are ignored.
The string may contain a single control character instead. In that
</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
- X/Open Curses documents the <EM>opts</EM> argument as reserved for future use,
+ X/Open Curses documents the <I>opts</I> 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:
- <STRONG>o</STRONG> For functions which modify the color, e.g., <STRONG>setcchar</STRONG>, if <EM>opts</EM> is
- set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color
- pair instead of the <STRONG>short</STRONG> pair parameter.
+ <B>o</B> For functions which modify the color, e.g., <B>setcchar</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to set the color
+ pair instead of the <B>short</B> pair parameter.
- <STRONG>o</STRONG> For functions which retrieve the color, e.g., <STRONG>getcchar</STRONG>, if <EM>opts</EM> is
- set it is treated as a pointer to <STRONG>int</STRONG>, and used to retrieve the
- color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the stan-
- dard pointer to <STRONG>short</STRONG> parameter.
+ <B>o</B> For functions which retrieve the color, e.g., <B>getcchar</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to retrieve the
+ color pair as an <B>int</B> value, in addition retrieving it via the
+ standard pointer to <B>short</B> parameter.
</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
- The <EM>wcval</EM> argument may be a value generated by a call to <STRONG>setcchar</STRONG> or by
- a function that has a <STRONG>cchar_t</STRONG> output argument. If <EM>wcval</EM> is constructed
+ The <I>wcval</I> argument may be a value generated by a call to <B>setcchar</B> or by
+ a function that has a <B>cchar_t</B> output argument. If <I>wcval</I> is constructed
by any other means, the effect is unspecified.
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
- When <EM>wch</EM> is a null pointer, <STRONG>getcchar</STRONG> returns the number of wide charac-
- ters referenced by <EM>wcval</EM>, including one for a trailing null.
+ When <I>wch</I> is a null pointer, <B>getcchar</B> returns the number of wide
+ characters referenced by <I>wcval</I>, including one for a trailing null.
- When <EM>wch</EM> is not a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon successful
- completion, and <STRONG>ERR</STRONG> otherwise.
+ When <I>wch</I> is not a null pointer, <B>getcchar</B> returns <B>OK</B> upon successful
+ completion, and <B>ERR</B> otherwise.
- Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>. Otherwise, it returns
- <STRONG>ERR</STRONG>.
+ Upon successful completion, <B>setcchar</B> returns <B>OK</B>. Otherwise, it returns
+ <B>ERR</B>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <B>CCHARW_MAX</B> symbol is specific to ncurses. X/Open Curses does not
+ provide details for the layout of the <B>cchar_t</B> structure. It tells what
+ data are stored in it:
+
+ <B>o</B> a spacing character (<B>wchar_t</B>, i.e., 32-bits).
+
+ <B>o</B> non-spacing characters (again, <B>wchar_t</B>'s).
+
+ <B>o</B> attributes (at least 16 bits, inferred from the various ACS- and
+ WACS-flags).
+
+ <B>o</B> color pair (at least 16 bits, inferred from the <B>unsigned</B> <B>short</B>
+ type).
+
+ The non-spacing characters are optional, in the sense that zero or more
+ may be stored in a <B>cchar_t</B>. 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:
+
+ <B>o</B> AIX 4 and OSF1 4 use the same declaration with an array of 5 non-
+ spacing characters <I>z</I> and a single spacing character <I>c</I>.
+
+ <B>o</B> HP-UX 10 uses an opaque structure with 28 bytes, which is large
+ enough for the 6 <B>wchar_t</B> values.
+
+ <B>o</B> Solaris xpg4 curses uses a single array of 6 <B>wchar_t</B> values.
+
+ This implementation's <B>cchar_t</B> was defined in 1995 using <B>5</B> for the total
+ of spacing and non-spacing characters (<B>CCHARW_MAX</B>). 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
+ functions 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.
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
- Functions: <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>wcwidth(3)</STRONG>.
+ Functions: <B><A HREF="curs_attr.3X.html">curs_attr(3X)</A></B>, <B><A HREF="curs_color.3X.html">curs_color(3X)</A></B>, <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B>wcwidth(3)</B>.
- <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+ <B><A HREF="curs_getcchar.3X.html">curs_getcchar(3X)</A></B>
</PRE>
<div class="nav">
<ul>
<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
<li><a href="#h2-NOTES">NOTES</a></li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>
</div>