blob: 443f5ca9483870ff3ec338def2c3c8bb783b4024 [file] [log] [blame]
/*
*****************************************************************************************
* *
* COPYRIGHT: *
* (C) Copyright Taligent, Inc., 1997 *
* (C) Copyright International Business Machines Corporation, 1997-1999 *
* Licensed Material - Program-Property of IBM - All Rights Reserved. *
* US Government Users Restricted Rights - Use, duplication, or disclosure *
* restricted by GSA ADP Schedule Contract with IBM Corp. *
* *
*****************************************************************************************
*
* File UNICDCM.H
*
* UnicodeClassMapping maps characters to state change inputs for WordBreakTable.
*
* @package Text and International
* @category Text Scanning
*
* Modification History:
*
* Date Name Description
* 02/18/97 aliu Converted from OpenClass.
* 05/06/97 aliu Made SpecialMapping an array of objects instead of pointers,
* to help out non-compliant compilers.
*****************************************************************************************
*/
#ifndef UNICDCM_H
#define UNICDCM_H
#include "spclmap.h"
#include "unicode.h"
/**
* This class maps characters to state change inputs for
* WordBreakTable. If the character appears in the exception list,
* the mapping there is retuned, otherwise the mapping returned by
* IUnicode::type is returned.
*
* Note in this implementation characters from 0x0040 to 0x009f always use the
* mapping returned by IUnicode::type and never the exception list.
*/
class UnicodeClassMapping {
public:
// For convenience
typedef TextBoundaryData::Type Type;
/**
* Create a mapping given a mapping from categories and a list
* of exceptions. Both the mapping list and exceptionChars list must
* be sorted in ascending order.
*/
UnicodeClassMapping(Type* mappedValue,
int32_t mappedValue_length,
const SpecialMapping* exceptionChars,
int32_t exceptionChars_length,
const bool_t* hasException,
Type* asiiValues );
/**
* Map a character to a state change input for WordBreakTable.
* @param ch the character to map.
* @return the mapped value.
*/
Type mappedChar(UChar ch) const;
private:
const bool_t *fHasException;
const Type* fMappedValue;
const int32_t fMappedValue_length;
const SpecialMapping* fExceptionChars;
const int32_t fExceptionChars_length;
const Type* fAsciiValues;
};
#endif // _UNICDCM
//eof