From: Bruno Haible Date: Sat, 7 Jul 2007 16:15:17 +0000 (+0000) Subject: New module 'uniwidth/base'. X-Git-Tag: cvs-readonly~163 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=7ea8f23237e936f47252c602f6b374717c480dd7;p=gnulib.git New module 'uniwidth/base'. --- diff --git a/ChangeLog b/ChangeLog index 27a5ca68b..8607aa5d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-07-07 Bruno Haible + * lib/uniwidth.h: New file, from GNU libiconv. + * modules/uniwidth/base: New file. + +2007-07-07 Bruno Haible + * lib/uniname.h: New file, from GNU gettext. * lib/uniname/gen-uninames.lisp: New file, from GNU gettext. * lib/uniname/uninames.h: New file, from GNU gettext. diff --git a/lib/uniwidth.h b/lib/uniwidth.h new file mode 100644 index 000000000..6dfad2c73 --- /dev/null +++ b/lib/uniwidth.h @@ -0,0 +1,66 @@ +/* Display width functions. + Copyright (C) 2001-2002, 2005, 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _UNIWIDTH_H +#define _UNIWIDTH_H + +#include "unitypes.h" + +/* Get size_t. */ +#include + +/* Get locale_charset() declaration. */ +#include "localcharset.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Display width. */ + +/* These functions are locale dependent. The encoding argument identifies + the encoding (e.g. "ISO-8859-2" for Polish). */ + +/* Determine number of column positions required for UC. */ +extern int + uc_width (ucs4_t uc, const char *encoding); + +/* Determine number of column positions required for first N units + (or fewer if S ends before this) in S. */ +extern int + u8_width (const uint8_t *s, size_t n, const char *encoding); +extern int + u16_width (const uint16_t *s, size_t n, const char *encoding); +extern int + u32_width (const uint32_t *s, size_t n, const char *encoding); + +/* Determine number of column positions required for S. */ +extern int + u8_strwidth (const uint8_t *s, const char *encoding); +extern int + u16_strwidth (const uint16_t *s, const char *encoding); +extern int + u32_strwidth (const uint32_t *s, const char *encoding); + + +#ifdef __cplusplus +} +#endif + +#endif /* _UNIWIDTH_H */ diff --git a/modules/uniwidth/base b/modules/uniwidth/base new file mode 100644 index 000000000..2b78dca0e --- /dev/null +++ b/modules/uniwidth/base @@ -0,0 +1,23 @@ +Description: +Base layer for Unicode string width. + +Files: +lib/uniwidth.h +lib/localcharset.h + +Depends-on: +unitypes + +configure.ac: + +Makefile.am: + +Include: +"uniwidth.h" + +License: +LGPL + +Maintainer: +Bruno Haible +