mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-21 15:18:45 +00:00
a116e04b8b
* src/buffer.C (Buffer::insertStringAsLines): Uncomment isPrintable test * src/support/lstrings.C (compare_no_case): Use char_type and not int for the docstring version (ascii_tolower): Convert to a template (compare_ascii_no_case): Do not use a template anymore, because we need int for the string version and char_type for the docstring version as intermediate type (lowercase): Use towlower if possible (uppercase): Use towupper if possible * src/support/textutils.h (isLetterChar): Use iswalpha if possible (isPrintable): Use iswprint if possible (isPrintableNonspace): Use iswprint and iswspace if possible (isDigit): Use iswdigit if possible * src/paragraph.C (Paragraph::asString): remove obsolete FIXME (Paragraph::transformChar): add FIXME * configure.ac: Add definition of LIBC_WCTYPE_USES_UCS4 to config.h * development/cmake/config.h.cmake: ditto * development/scons/SConstruct: ditto git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15893 a592a061-630c-0410-9148-cb99ea01b6c8
98 lines
1.8 KiB
C++
98 lines
1.8 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file textutils.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Matthias Ettrich
|
|
* \author Lars Gullik Bjønnes
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
// FIXME: I can think of a better name for this file ...
|
|
|
|
#ifndef TEXTUTILS_H
|
|
#define TEXTUTILS_H
|
|
|
|
#include "support/types.h"
|
|
|
|
#ifdef LIBC_WCTYPE_USES_UCS4
|
|
// We can use the libc ctype functions because we unset the LC_CTYPE
|
|
// category of the current locale in gettext.C
|
|
#include <wctype.h>
|
|
#else
|
|
// Steal some code from somewhere else, e.g. glib (look at gunicode.h)
|
|
// The code that we currently use does not really work.
|
|
#endif
|
|
|
|
|
|
namespace lyx {
|
|
|
|
/// return true if the char is a line separator
|
|
inline
|
|
bool isLineSeparatorChar(char_type c)
|
|
{
|
|
return c == ' ';
|
|
}
|
|
|
|
|
|
/// return true if a char is alphabetical (including accented chars)
|
|
inline
|
|
bool isLetterChar(char_type c)
|
|
{
|
|
#ifdef LIBC_WCTYPE_USES_UCS4
|
|
return iswalpha(c);
|
|
#else
|
|
// FIXME UNICODE This is wrong!
|
|
return (c >= 'A' && c <= 'Z')
|
|
|| (c >= 'a' && c <= 'z')
|
|
|| (c >= 192 && c < 256); // in iso-8859-x these are accented chars
|
|
#endif
|
|
}
|
|
|
|
|
|
/// return true if the char is printable
|
|
inline
|
|
bool isPrintable(char_type c)
|
|
{
|
|
#ifdef LIBC_WCTYPE_USES_UCS4
|
|
return iswprint(c);
|
|
#else
|
|
// FIXME UNICODE This is wrong!
|
|
return (c & 127) >= ' ';
|
|
#endif
|
|
}
|
|
|
|
|
|
/// return true if the char is printable and not a space
|
|
inline
|
|
bool isPrintableNonspace(char_type c)
|
|
{
|
|
#ifdef LIBC_WCTYPE_USES_UCS4
|
|
return iswprint(c) && !iswspace(c);
|
|
#else
|
|
// FIXME UNICODE This is wrong!
|
|
return (c & 127) > ' ';
|
|
#endif
|
|
}
|
|
|
|
|
|
/// return true if a unicode char is a digit.
|
|
inline
|
|
bool isDigit(char_type c)
|
|
{
|
|
#ifdef LIBC_WCTYPE_USES_UCS4
|
|
return iswdigit(c);
|
|
#else
|
|
// FIXME UNICODE This is wrong!
|
|
return c >= '0' && c <= '9';
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
#endif // TEXTUTILS_H
|