X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fucs4-utf16.h;h=8450a99f53f63b4d2b2955291438f18e0257ae82;hb=2354d5ead305b61c925e53bcfb73d47de7c53162;hp=bf56a551f75a11ea5372fbd3d50ee04ddea22c3d;hpb=4bc0a0ad4c963017ab77335801566546afbf965b;p=gnulib.git diff --git a/lib/ucs4-utf16.h b/lib/ucs4-utf16.h index bf56a551f..8450a99f5 100644 --- a/lib/ucs4-utf16.h +++ b/lib/ucs4-utf16.h @@ -1,51 +1,37 @@ /* Conversion UCS-4 to UTF-16. - Copyright (C) 2002 Free Software Foundation, Inc. - Written by Bruno Haible , 2002. + Copyright (C) 2002, 2005-2007 Free Software Foundation, Inc. + Written by Bruno Haible , 2002. -This program is free software; 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, or (at your option) -any later version. + 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 General Public License for more details. + 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 General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 _UCS4_UTF16_H +#define _UCS4_UTF16_H #include +#include "unitypes.h" + +extern int u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); /* Return the length (number of units) of the UTF-16 representation of uc, after storing it at S. Return -1 upon failure, -2 if the number of available units, N, is too small. */ -static int -u16_uctomb_aux (unsigned short *s, unsigned int uc, int n) -{ - if (uc >= 0x10000) - { - if (uc < 0x110000) - { - if (n >= 2) - { - s[0] = 0xd800 + ((uc - 0x10000) >> 10); - s[1] = 0xdc00 + ((uc - 0x10000) & 0x3ff); - return 2; - } - } - else - return -1; - } - return -2; -} - static inline int -u16_uctomb (unsigned short *s, unsigned int uc, int n) +u16_uctomb (uint16_t *s, ucs4_t uc, int n) { - if (uc < 0x10000 && n > 0) + if (uc < 0xd800 && n > 0) { s[0] = uc; return 1; @@ -53,3 +39,5 @@ u16_uctomb (unsigned short *s, unsigned int uc, int n) else return u16_uctomb_aux (s, uc, n); } + +#endif /* _UCS4_UTF16_H */