.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\" %%%LICENSE_END
.\"
.\" References consulted:
.\"   GNU glibc-2 source code and manual
.\"   Dinkumware C library reference http://www.dinkumware.com/
.\"   OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"   ISO/IEC 9899:1999
.\"
.TH ISWSPACE 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
iswspace \- test for whitespace wide character
.SH SYNOPSIS
.nf
.B #include <wctype.h>
.PP
.BI "int iswspace(wint_t " wc );
.fi
.SH DESCRIPTION
The
.BR iswspace ()
function is the wide-character equivalent of the
.BR isspace (3)
function.
It tests whether
.I wc
is a wide character
belonging to the wide-character class "space".
.PP
The wide-character class "space" is disjoint from the wide-character class
"graph" and therefore also disjoint from its subclasses "alnum", "alpha",
"upper", "lower", "digit", "xdigit", "punct".
.\" Note: UNIX98 (susv2/xbd/locale.html) says that "space" and "graph" may
.\" have characters in common, except U+0020. But C99 (ISO/IEC 9899:1999
.\" section 7.25.2.1.10) says that "space" and "graph" are disjoint.
.PP
The wide-character class "space" contains the wide-character class "blank".
.PP
The wide-character class "space" always contains at least the space character
and the control
characters \(aq\ef\(aq, \(aq\en\(aq, \(aq\er\(aq, \(aq\et\(aq, \(aq\ev\(aq.
.SH RETURN VALUE
The
.BR iswspace ()
function returns nonzero if
.I wc
is a wide character
belonging to the wide-character class "space".
Otherwise, it returns zero.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR iswspace ()
T}	Thread safety	MT-Safe locale
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
The behavior of
.BR iswspace ()
depends on the
.B LC_CTYPE
category of the
current locale.
.SH SEE ALSO
.BR isspace (3),
.BR iswctype (3)
