]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/curs_getcchar.3x
ncurses 6.5 - patch 20240504
[ncurses.git] / man / curs_getcchar.3x
index b811a37db8f724f8ecca7b6b66e5039eba0419db..523cc99df92c9c73b7192c1cfe7243fd8fa51a10 100644 (file)
@@ -1,5 +1,6 @@
 .\"***************************************************************************
 .\"***************************************************************************
-.\" Copyright (c) 2001-2003,2006 Free Software Foundation, Inc.              *
+.\" Copyright 2019-2023,2024 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            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getcchar.3x,v 1.10 2006/12/24 16:00:02 tom Exp $
-.TH curs_getcchar 3X ""
+.\" $Id: curs_getcchar.3x,v 1.49 2024/04/20 18:55:09 tom Exp $
+.TH curs_getcchar 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
 .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
+\fB\%getcchar\fP,
+\fB\%setcchar\fP \-
+convert between a wide-character string and a \fIcurses\fR complex character
 .SH SYNOPSIS
 .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
+.nf
+\fB#include <curses.h>
+.PP
+\fBint getcchar(
+.B "        const cchar_t *\fIwch\fP,"
+.B "        wchar_t *\fIwc\fP,"
 .B "        attr_t *\fIattrs\fP,"
 .B "        attr_t *\fIattrs\fP,"
-.br
 .B "        short *\fIcolor_pair\fP,"
 .B "        short *\fIcolor_pair\fP,"
-.br
 .B "        void *\fIopts\fP );"
 .B "        void *\fIopts\fP );"
-.sp
+.PP
 .B "int setcchar("
 .B "int setcchar("
-.br
-.B "        cchar_t *\fIwcval\fP,"
-.br
-.B "        const wchar_t *\fIwch\fP,"
-.br
+.B "        cchar_t *\fIwch\fP,"
+.B "        const wchar_t *\fIwc\fP,"
 .B "        const attr_t \fIattrs\fP,"
 .B "        const attr_t \fIattrs\fP,"
-.br
 .B "        short \fIcolor_pair\fP,"
 .B "        short \fIcolor_pair\fP,"
-.br
-.B "        void *\fIopts\fP );"
+.B "        const void *\fIopts\fP );"
+.fi
 .SH DESCRIPTION
 .SH DESCRIPTION
-.PP
+.SS getcchar
 The \fBgetcchar\fP function gets a wide-character string
 and rendition from a \fBcchar_t\fP argument.
 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,
+When \fIwc\fP is not a null pointer,
 the \fBgetcchar\fP function does the following:
 the \fBgetcchar\fP function does the following:
-.TP 5
--
-Extracts information from a \fBcchar_t\fP value \fIwcval\fP
-.TP 5
--
+.bP
+Extracts information from a \fBcchar_t\fP value \fIwch\fP
+.bP
 Stores the character attributes in the location pointed to by \fIattrs\fP
 Stores the character attributes in the location pointed to by \fIattrs\fP
-.TP 5
--
-Stores the color-pair in the location pointed to by \fIcolor_pair\fP
-.TP 5
--
+.bP
+Stores the color pair in the location pointed to by \fIcolor_pair\fP
+.bP
 Stores the wide-character string,
 Stores the wide-character string,
-characters referenced by \fIwcval\fP, into the array pointed to by \fIwch\fP.
+characters referenced by \fIwch\fP, into the array pointed to by \fIwc\fP.
 .PP
 When
 .PP
 When
-\fIwch\fP
+\fIwc\fP
 is a null pointer, the
 \fBgetcchar\fP
 function does the following:
 is a null pointer, the
 \fBgetcchar\fP
 function does the following:
-.TP 5
--
-Obtains the number of wide characters pointed to by \fIwcval\fP
-.TP 5
--
+.bP
+Obtains the number of wide characters pointed to by \fIwch\fP
+.bP
 Does not change the data referenced by
 \fIattrs\fP
 or
 \fIcolor_pair\fP
 Does not change the data referenced by
 \fIattrs\fP
 or
 \fIcolor_pair\fP
-.PP
-The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\fP
+.SS setcchar
+The \fBsetcchar\fP function initializes the location pointed to by \fIwch\fP
 by using:
 by using:
-.TP 5
--
+.bP
 The character attributes in
 \fIattrs\fP
 The character attributes in
 \fIattrs\fP
-.TP 5
--
+.bP
 The color pair in
 \fIcolor_pair\fP
 The color pair in
 \fIcolor_pair\fP
-.TP 5
--
-The wide-character string pointed to by \fIwch\fP.
-The string must be L'\\0' terminated,
-contain at most one character with strictly positive width,
-which must be the first,
-and contain no characters of negative width.
-.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 VALUES
-.PP
-When \fIwch\fP is a null pointer,
+.bP
+The wide-character string pointed to by \fIwc\fP.
+The string must be L'\e0' terminated,
+contain at most one spacing character,
+which must be the first.
+.IP
+Up to \fBCCHARW_MAX\fP\-1 non-spacing characters may follow.
+Additional non-spacing characters are ignored.
+.IP
+The string may contain a single control character instead.
+In that case, no non-spacing characters are allowed.
+.SH RETURN VALUE
+When \fIwc\fP is a null pointer,
 \fBgetcchar\fP returns the number of wide characters referenced by
 \fBgetcchar\fP returns the number of wide characters referenced by
-\fIwcval\fP.
+\fIwch\fP,
+including one for a trailing null.
 .PP
 .PP
-When \fIwch\fP is not a null pointer,
+When \fIwc\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.
 \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
+.SH NOTES
+The \fIwch\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 \fIwch\fP is constructed by any other means, the effect is unspecified.
+.SH EXTENSIONS
+X/Open Curses documents the \fIopts\fP 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:
+.bP
+For  functions  which modify the color, e.g., \fBsetcchar\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to  set  the  color pair instead of the \fBshort\fP pair parameter.
+.bP
+For functions which retrieve the color, e.g., \fBgetcchar\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and  used  to  retrieve  the color pair as an \fBint\fP value,
+in addition retrieving it via the standard pointer to \fBshort\fP parameter.
+.SH PORTABILITY
+The \fBCCHARW_MAX\fP symbol is specific to \fI\%ncurses\fP.
+X/Open Curses does not provide details for the layout of the \fBcchar_t\fP
+structure.
+It tells what data are stored in it:
+.bP
+a spacing character (\fBwchar_t\fP, i.e., 32-bits).
+.bP
+non-spacing characters (again, \fBwchar_t\fP's).
+.bP
+attributes (at least 16 bits, inferred from the various ACS- and WACS-flags).
+.bP
+color pair (at least 16 bits, inferred from the \fBunsigned short\fP type).
+.PP
+The non-spacing characters are optional,
+in the sense that zero or more may be stored in a \fBcchar_t\fP.
+XOpen/Curses specifies a limit:
+.RS 4
 .PP
 .PP
-Functions:
-\fBcurs_attr\fR(3X),
-\fBcurs_color\fR(3X),
-\fBcurses\fR(3X),
-\fBwcwidth\fR(3).
-.\"#
-.\"# The following sets edit modes for GNU EMACS
-.\"# Local Variables:
-.\"# mode:nroff
-.\"# fill-column:79
-.\"# End:
+Implementations may limit the number of non-spacing characters that can be
+associated with a spacing character, provided any limit is at least 5.
+.RE
+.PP
+The Unix implementations at the time follow that limit:
+.bP
+AIX\ 4 and OSF1\ 4 use the same declaration with an array of 5 non-spacing
+characters \fIz\fP and a single spacing character \fIc\fP.
+.bP
+HP-UX\ 10 uses an opaque structure with 28 bytes,
+which is large enough for the 6 \fBwchar_t\fP values.
+.bP
+Solaris \fIxpg4\fP curses uses a single array of 6 \fBwchar_t\fP values.
+.PP
+This implementation's \fBcchar_t\fP was defined in 1995
+using \fB5\fP for the total of spacing and non-spacing characters
+(\fBCCHARW_MAX\fP).
+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.
+.PP
+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.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_color\fP(3X),
+\fB\%wcwidth\fP(3)