xref: /dflybsd-src/gnu/usr.bin/grep/libgreputils/uniwidth.h (revision 4ce1b01662e01b4aeb3dbaf5e68504c3aa2a1581)
156a835a5SJohn Marino /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
256a835a5SJohn Marino /* Display width functions.
3*4ce1b016SDaniel Fojt    Copyright (C) 2001-2002, 2005, 2007, 2009-2020 Free Software Foundation,
456a835a5SJohn Marino    Inc.
556a835a5SJohn Marino 
656a835a5SJohn Marino    This program is free software: you can redistribute it and/or modify it
756a835a5SJohn Marino    under the terms of the GNU General Public License as published
856a835a5SJohn Marino    by the Free Software Foundation; either version 3 of the License, or
956a835a5SJohn Marino    (at your option) any later version.
1056a835a5SJohn Marino 
1156a835a5SJohn Marino    This program is distributed in the hope that it will be useful,
1256a835a5SJohn Marino    but WITHOUT ANY WARRANTY; without even the implied warranty of
1356a835a5SJohn Marino    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14e54473e5SJohn Marino    General Public License for more details.
1556a835a5SJohn Marino 
1656a835a5SJohn Marino    You should have received a copy of the GNU General Public License
17*4ce1b016SDaniel Fojt    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
1856a835a5SJohn Marino 
1956a835a5SJohn Marino #ifndef _UNIWIDTH_H
2056a835a5SJohn Marino #define _UNIWIDTH_H
2156a835a5SJohn Marino 
2256a835a5SJohn Marino #include "unitypes.h"
2356a835a5SJohn Marino 
2456a835a5SJohn Marino /* Get size_t.  */
2556a835a5SJohn Marino #include <stddef.h>
2656a835a5SJohn Marino 
2756a835a5SJohn Marino /* Get locale_charset() declaration.  */
2856a835a5SJohn Marino #include "localcharset.h"
2956a835a5SJohn Marino 
3056a835a5SJohn Marino #ifdef __cplusplus
3156a835a5SJohn Marino extern "C" {
3256a835a5SJohn Marino #endif
3356a835a5SJohn Marino 
3456a835a5SJohn Marino 
3556a835a5SJohn Marino /* Display width.  */
3656a835a5SJohn Marino 
3756a835a5SJohn Marino /* These functions are locale dependent.  The encoding argument identifies
3856a835a5SJohn Marino    the encoding (e.g. "ISO-8859-2" for Polish).  */
3956a835a5SJohn Marino 
4056a835a5SJohn Marino /* Determine number of column positions required for UC.  */
4156a835a5SJohn Marino extern int
42073c18e4SJohn Marino        uc_width (ucs4_t uc, const char *encoding)
43073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
4456a835a5SJohn Marino 
4556a835a5SJohn Marino /* Determine number of column positions required for first N units
4656a835a5SJohn Marino    (or fewer if S ends before this) in S.  */
4756a835a5SJohn Marino extern int
48073c18e4SJohn Marino        u8_width (const uint8_t *s, size_t n, const char *encoding)
49073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
5056a835a5SJohn Marino extern int
51073c18e4SJohn Marino        u16_width (const uint16_t *s, size_t n, const char *encoding)
52073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
5356a835a5SJohn Marino extern int
54073c18e4SJohn Marino        u32_width (const uint32_t *s, size_t n, const char *encoding)
55073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
5656a835a5SJohn Marino 
5756a835a5SJohn Marino /* Determine number of column positions required for S.  */
5856a835a5SJohn Marino extern int
59073c18e4SJohn Marino        u8_strwidth (const uint8_t *s, const char *encoding)
60073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
6156a835a5SJohn Marino extern int
62073c18e4SJohn Marino        u16_strwidth (const uint16_t *s, const char *encoding)
63073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
6456a835a5SJohn Marino extern int
65073c18e4SJohn Marino        u32_strwidth (const uint32_t *s, const char *encoding)
66073c18e4SJohn Marino        _UC_ATTRIBUTE_PURE;
6756a835a5SJohn Marino 
6856a835a5SJohn Marino 
6956a835a5SJohn Marino #ifdef __cplusplus
7056a835a5SJohn Marino }
7156a835a5SJohn Marino #endif
7256a835a5SJohn Marino 
7356a835a5SJohn Marino #endif /* _UNIWIDTH_H */
74