lyx_mirror/src/support/textutils.h
Georg Baum a116e04b8b Use wctype character classification functions if possible
* 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
2006-11-13 09:53:25 +00:00

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