/*
*****************************************************************************************
*                                                                                       *
* 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 SPCLMAP.H
*
* SpecialMapping represents exceptions to the normal unicode category mapping.
*
* @package  Text and International
* @category Text Scanning
*
* Modification History:
*
*   Date        Name        Description
*   02/18/97    aliu        Converted from OpenClass.
*****************************************************************************************
*/

#ifndef SPCLMAP_H
#define SPCLMAP_H

#include "utypes.h" // UChar
#include "txtbdat.h"

/**
 * This class represents ranges of characters that are exceptions to the normal
 * unicode category mapping.  Characters from the start char to the end char,
 * inclusive, are mapped to the new value.
 */
class SpecialMapping {
public:
    /**
     * Create a special mapping from the single char ch to the value nv.
     */
    SpecialMapping(UChar ch, TextBoundaryData::Type nv) : fStartChar(ch), fEndChar(ch), fNewValue(nv) {}

    /**
     * Create a special mapping from the range of chars sch - ech, inclusive, to the value nv.
     */
    SpecialMapping(UChar sch, UChar ech, TextBoundaryData::Type nv) : fStartChar(sch), fEndChar(ech), fNewValue(nv) {}

    /**
     * The first character of the range.
     */
    UChar fStartChar;

    /**
     * The last character of the range.
     */
    UChar fEndChar;

    /**
     * The character mapping to use.
     */
    TextBoundaryData::Type fNewValue;
private:
    SpecialMapping() {}
};

#endif // _SPCLMAP
//eof
