| Index: icu46/source/test/intltest/nptrans.h
|
| ===================================================================
|
| --- icu46/source/test/intltest/nptrans.h (revision 0)
|
| +++ icu46/source/test/intltest/nptrans.h (revision 0)
|
| @@ -0,0 +1,164 @@
|
| +/*
|
| + *******************************************************************************
|
| + *
|
| + * Copyright (C) 2003-2006, International Business Machines
|
| + * Corporation and others. All Rights Reserved.
|
| + *
|
| + *******************************************************************************
|
| + * file name: nptrans.h
|
| + * encoding: US-ASCII
|
| + * tab size: 8 (not used)
|
| + * indentation:4
|
| + *
|
| + * created on: 2003feb1
|
| + * created by: Ram Viswanadha
|
| + */
|
| +
|
| +#ifndef NPTRANS_H
|
| +#define NPTRANS_H
|
| +
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_IDNA
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| +
|
| +#include "unicode/uniset.h"
|
| +#include "unicode/ures.h"
|
| +#include "unicode/translit.h"
|
| +
|
| +#include "intltest.h"
|
| +
|
| +
|
| +#define ASCII_SPACE 0x0020
|
| +
|
| +class NamePrepTransform {
|
| +
|
| +private :
|
| + Transliterator *mapping;
|
| + UnicodeSet unassigned;
|
| + UnicodeSet prohibited;
|
| + UnicodeSet labelSeparatorSet;
|
| + UResourceBundle *bundle;
|
| + NamePrepTransform(UParseError& parseError, UErrorCode& status);
|
| +
|
| +
|
| +public :
|
| +
|
| + static NamePrepTransform* createInstance(UParseError& parseError, UErrorCode& status);
|
| +
|
| + virtual ~NamePrepTransform();
|
| +
|
| +
|
| + inline UBool isProhibited(UChar32 ch);
|
| +
|
| + /**
|
| + * ICU "poor man's RTTI", returns a UClassID for the actual class.
|
| + *
|
| + * @draft ICU 2.6
|
| + */
|
| + inline UClassID getDynamicClassID() const { return getStaticClassID(); }
|
| +
|
| + /**
|
| + * ICU "poor man's RTTI", returns a UClassID for this class.
|
| + *
|
| + * @draft ICU 2.6
|
| + */
|
| + static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
|
| +
|
| + /**
|
| + * Map every character in input stream with mapping character
|
| + * in the mapping table and populate the output stream.
|
| + * For any individual character the mapping table may specify
|
| + * that that a character be mapped to nothing, mapped to one
|
| + * other character or to a string of other characters.
|
| + *
|
| + * @param src Pointer to UChar buffer containing a single label
|
| + * @param srcLength Number of characters in the source label
|
| + * @param dest Pointer to the destination buffer to receive the output
|
| + * @param destCapacity The capacity of destination array
|
| + * @param allowUnassigned Unassigned values can be converted to ASCII for query operations
|
| + * If TRUE unassigned values are treated as normal Unicode code point.
|
| + * If FALSE the operation fails with U_UNASSIGNED_CODE_POINT_FOUND error code.
|
| + * @param status ICU error code in/out parameter.
|
| + * Must fulfill U_SUCCESS before the function call.
|
| + * @return The number of UChars in the destination buffer
|
| + *
|
| + */
|
| + int32_t map(const UChar* src, int32_t srcLength,
|
| + UChar* dest, int32_t destCapacity,
|
| + UBool allowUnassigned,
|
| + UParseError* parseError,
|
| + UErrorCode& status );
|
| +
|
| + /**
|
| + * Prepare the input stream with for use. This operation maps, normalizes(NFKC),
|
| + * checks for prohited and BiDi characters in the order defined by RFC 3454
|
| + *
|
| + * @param src Pointer to UChar buffer containing a single label
|
| + * @param srcLength Number of characters in the source label
|
| + * @param dest Pointer to the destination buffer to receive the output
|
| + * @param destCapacity The capacity of destination array
|
| + * @param allowUnassigned Unassigned values can be converted to ASCII for query operations
|
| + * If TRUE unassigned values are treated as normal Unicode code point.
|
| + * If FALSE the operation fails with U_UNASSIGNED_CODE_POINT error code.
|
| + * @param status ICU error code in/out parameter.
|
| + * Must fulfill U_SUCCESS before the function call.
|
| + * @return The number of UChars in the destination buffer
|
| + */
|
| + int32_t process(const UChar* src, int32_t srcLength,
|
| + UChar* dest, int32_t destCapacity,
|
| + UBool allowUnassigned,
|
| + UParseError* parseError,
|
| + UErrorCode& status );
|
| +
|
| + /**
|
| + * Ascertain if the given code point is a label separator as specified by IDNA
|
| + *
|
| + * @return TRUE is the code point is a label separator
|
| + *
|
| + *
|
| + */
|
| + UBool isLabelSeparator(UChar32 ch, UErrorCode& status);
|
| +
|
| +
|
| + inline UBool isLDHChar(UChar32 ch);
|
| +private:
|
| + /**
|
| + * The address of this static class variable serves as this class's ID
|
| + * for ICU "poor man's RTTI".
|
| + */
|
| + static const char fgClassID;
|
| +};
|
| +
|
| +inline UBool NamePrepTransform::isLDHChar(UChar32 ch){
|
| + // high runner case
|
| + if(ch>0x007A){
|
| + return FALSE;
|
| + }
|
| + //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A]
|
| + if( (ch==0x002D) ||
|
| + (0x0030 <= ch && ch <= 0x0039) ||
|
| + (0x0041 <= ch && ch <= 0x005A) ||
|
| + (0x0061 <= ch && ch <= 0x007A)
|
| + ){
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +
|
| +#endif /* #if !UCONFIG_NO_TRANSLITERATION */
|
| +#else
|
| +class NamePrepTransform {
|
| +};
|
| +#endif /* #if !UCONFIG_NO_IDNA */
|
| +
|
| +#endif
|
| +
|
| +/*
|
| + * Hey, Emacs, please set the following:
|
| + *
|
| + * Local Variables:
|
| + * indent-tabs-mode: nil
|
| + * End:
|
| + *
|
| + */
|
|
|
| Property changes on: icu46/source/test/intltest/nptrans.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|