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