textandloc_plat/japanese_language_utilities_api/inc/jplangutil.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 14:39:28 +0300
branchRCL_3
changeset 28 26914f8d1faf
parent 0 1fb32624e06b
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*     A utility for providing Japanese Language-specific (UNICODE) functions.
*
*
*/


#ifndef __JPLANGUTIL_H__
#define __JPLANGUTIL_H__

// INCLUDES
#include <e32std.h>

// CONSTANTS

// CLASS DECLARATION

/**
 *  This is the only class provided buy the JPLangUtil Library,
 *  and is intended for encapsulation only.
 *  As such, it should not be instantiated.
 *
 *  @lib JPLangUtil.lib
 *  @since 2.6
 */
class JPLangUtil
    {
    public: // Conversion API

        /**
        * Converts all Half-width conformant text (including ASCII, Special
        * Characters and Katakana) found in aUnicodeSource to their Full-width
        * counterparts and places the resulting text into aUnicodeTarget.
        *
        * @param aUnicodeSource Descriptor that contains the text to be
        *        converted.
        * @param aUnicodeTarget The target descriptor for the converted text.
        *
        * @return Either a positive integer signifying the count of converted
        *         characters, or the negative error code KErrToBig when the
        *         target descriptor cannot hold all the converted text.
        */
        IMPORT_C static TInt ConvertHalfToFullWidth
            (const TDesC16& aUnicodeSource, TDes16& aUnicodeTarget );

        /**
        * Converts all Full-width conformant text found in aUnicodeSource to
        * their Half-width counterparts and places the resulting text into
        * aUnicodeTarget. Only those characters with existing Half-width
        * variants are converted. There will be a 2-for-1 conversion for each
        * Full-width Voiced and Semi-voiced Katakana character.
        *
        * @param aUnicodeSource Descriptor that contains the text to be
        *        converted.
        * @param aUnicodeTarget The target descriptor for the converted text.
        *
        * @return Either a positive integer signifying the count of converted
        *         characters, or the negative error code KErrToBig when the
        *         target descriptor cannot hold all the converted text.
        */
        IMPORT_C static TInt ConvertFullToHalfWidth
            ( const TDesC16& aUnicodeSource, TDes16& aUnicodeTarget );

        /**
        * Converts Half-width Katakana and Special Character text found in
        * aUnicodeSource to their Full-width counterparts and places the
        * resulting text into aUnicodeTarget.
        *
        * @param aUnicodeSource Descriptor that contains the text to be
        *        converted.
        * @param aUnicodeTarget The target descriptor for the converted text.
        *
        * @return Either a positive integer signifying the count of converted
        *         characters, or the negative error code KErrToBig when the
        *         target descriptor cannot hold all the converted text.
        */
        IMPORT_C static TInt ConvertHalfToFullWidthKatakana
            ( const TDesC16& aUnicodeSource, TDes16& aUnicodeTarget );

        /**
        * Converts Full-width Katakana and Special Character text found in
        * aUnicodeSource to their Half-width counterparts and places the
        * resulting text into aUnicodeTarget. There will be a 2-for-1 conversion
        * for each Full-width Voiced and Semi-voiced Katakana character.
        *
        * @param aUnicodeSource Descriptor that contains the text to be
        *        converted.
        * @param aUnicodeTarget The target descriptor for the converted text.
        *
        * @return Either a positive integer signifying the count of converted
        *         characters, or the negative error code KErrToBig when the
        *         target descriptor cannot hold all the converted text.
        */
        IMPORT_C static TInt ConvertFullToHalfWidthKatakana
            ( const TDesC16& aUnicodeSource, TDes16& aUnicodeTarget );

        /**
        * Converts Full-width Hiragana and Special Character text found in
        * aUnicodeSource to their Full-width counterparts and places the
        * resulting text into aUnicodeTarget.
        *
        * @param aUnicodeSource Descriptor that contains the text to be
        *        converted.
        * @param aUnicodeTarget The target descriptor for the converted text.
        *
        * @return Either a positive integer signifying the count of converted
        *         characters, or the negative error code KErrToBig when the
        *         target descriptor cannot hold all the converted text.
        */
        IMPORT_C static TInt ConvertFullHiragnaToFullKatakana
            ( const TDesC16& aUnicodeSource, TDes16& aUnicodeTarget );

    public: // Character Category Query API

        /**
        * Returns ETrue if aUnicodeChar is Katakana.
        * This includes both Full and Half-width Katakana.
        *
        * @param aUnicodeChar The unicode character to test.
        *
        * @return Etrue : aUnicodeChar is Katakana
        */
        IMPORT_C static TBool IsKatakana( const TText aUnicodeChar );

        /**
        * Returns ETrue if aUnicodeChar is Hiragana.
        * There are no Half-width Hiragana variants.
        *
        * @param aUnicodeChar The unicode character to test.
        *
        * @return Etrue : aUnicodeChar is Hiragana
        */
        IMPORT_C static TBool IsHiragana( const TText aUnicodeChar );

        /**
        * Returns ETrue if aUnicodeChar is Kanji, or CJK ideographic
        * All characters in the CJK ideographic range are Full-width.
        *
        * @param aUnicodeChar The unicode character to test.
        *
        * @return Etrue : aUnicodeChar is Kanji
        */
        IMPORT_C static TBool IsKanji( const TText aUnicodeChar );

        /**
        * Returns ETrue if aUnicodeChar is Half-width according to
        * the UNICODE definition of the term.
        *
        * @param aUnicodeChar The unicode character to test.
        *
        * @return Etrue : aUnicodeChar is Half-width
        */
        IMPORT_C static TBool IsHalfWidth( const TText aUnicodeChar );

        /**
        * Returns ETrue if aUnicodeChar is Full-width.
        * Essentially, all text that is not Half-width.
        *
        * @param aUnicodeChar The unicode character to test.
        *
        * @return Etrue : aUnicodeChar is Full-width
        */
        IMPORT_C static TBool IsFullWidth( const TText aUnicodeChar );

    };

#endif //  __JPLANGUTIL_H__

// End of file