1 /* 2 ******************************************************************************* 3 * 4 * Copyright (C) 1999-2004, International Business Machines 5 * Corporation and others. All Rights Reserved. 6 * 7 ******************************************************************************* 8 * file name: uinvchar.h 9 * encoding: US-ASCII 10 * tab size: 8 (not used) 11 * indentation:2 12 * 13 * created on: 2004sep14 14 * created by: Markus W. Scherer 15 * 16 * Definitions for handling invariant characters, moved here from putil.c 17 * for better modularization. 18 */ 19 20 #ifndef __UINVCHAR_H__ 21 #define __UINVCHAR_H__ 22 23 #include "unicode/utypes.h" 24 25 /** 26 * Check if a char string only contains invariant characters. 27 * See utypes.h for details. 28 * 29 * @param s Input string pointer. 30 * @param length Length of the string, can be -1 if NUL-terminated. 31 * @return TRUE if s contains only invariant characters. 32 * 33 * @internal (ICU 2.8) 34 */ 35 U_INTERNAL UBool U_EXPORT2 36 uprv_isInvariantString(const char *s, int32_t length); 37 38 /** 39 * Check if a Unicode string only contains invariant characters. 40 * See utypes.h for details. 41 * 42 * @param s Input string pointer. 43 * @param length Length of the string, can be -1 if NUL-terminated. 44 * @return TRUE if s contains only invariant characters. 45 * 46 * @internal (ICU 2.8) 47 */ 48 U_INTERNAL UBool U_EXPORT2 49 uprv_isInvariantUString(const UChar *s, int32_t length); 50 51 /** 52 * \def U_UPPER_ORDINAL 53 * Get the ordinal number of an uppercase invariant character 54 * @internal 55 */ 56 #if U_CHARSET_FAMILY==U_ASCII_FAMILY 57 # define U_UPPER_ORDINAL(x) ((x)-'A') 58 #elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY 59 # define U_UPPER_ORDINAL(x) (((x) < 'J') ? ((x)-'A') : \ 60 (((x) < 'S') ? ((x)-'J'+9) : \ 61 ((x)-'S'+18))) 62 #else 63 # error Unknown charset family! 64 #endif 65 66 #endif 67