/*******************************************************************************
;*******************************************************************************
;**                                                                           **
;**                  COPYRIGHT 1999-2012 NUANCE COMMUNICATIONS                **
;**                                                                           **
;**               NUANCE COMMUNICATIONS PROPRIETARY INFORMATION               **
;**                                                                           **
;**     This software is supplied under the terms of a license agreement      **
;**     or non-disclosure agreement with Nuance Communications and may not    **
;**     be copied or disclosed except in accordance with the terms of that    **
;**     agreement.                                                            **
;**                                                                           **
;*******************************************************************************
;**                                                                           **
;**     FileName: et9asym.h                                                   **
;**                                                                           **
;**  Description: ST symbol key, class, key information                       **
;**                                                                           **
;*******************************************************************************/

#ifndef ET9ASYM_H
#define ET9ASYM_H 1

#include "et9api.h"
#ifdef ET9_ALPHABETIC_MODULE

/* don't mangle the function name if compile under C++ */
#if defined(__cplusplus)
extern "C" {
#endif

ET9PRIVATE ET9SYMB ET9FARCALL _ET9_GetEmbPunctChar(ET9AWLingInfo   * const pLingInfo,
                                                   const ET9U32            dwLdbNum);

ET9PRIVATE ET9SYMB ET9FARCALL _ET9_GetTermPunctChar(ET9AWLingInfo  * const pLingInfo,
                                                    const ET9U32           dwLdbNum,
                                                    const ET9UINT          nSymbIndex);

ET9PRIVATE ET9UINT ET9FARCALL _ET9_GetNumTermPunct(ET9AWLingInfo   * const pLingInfo,
                                                   const ET9U32            dwLdbNum);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_IsTermPunct(ET9AWLingInfo   * const pLingInfo,
                                               const ET9U32            dwLdbNum,
                                               const ET9SYMB           sSymb);

ET9PRIVATE ET9UINT ET9FARCALL _ET9_GetNumSingleCharWords(ET9AWLingInfo  const * const pLingInfo,
                                                         const ET9U32                 dwLdbNum);

ET9PRIVATE ET9SYMB ET9FARCALL _ET9_GetSingleCharWord(ET9AWLingInfo const * const pLingInfo,
                                                     const ET9U32                dwLdbNum,
                                                     const ET9UINT               nSymbIndex);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_IsSingleCharWord(ET9AWLingInfo    const * const pLingInfo,
                                                    const ET9U32                   dwLdbNum,
                                                    const ET9SYMB                  sSymb);

ET9PRIVATE ET9STATUS ET9FARCALL _ET9_ConvertBuildBuf(ET9AWLingInfo     * const pLingInfo,
                                                     ET9AWWordInfo     * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplySpcLenTwo(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9U8 ET9FARCALL _ET9_LanguageSpecific_ApplyDynamicRegionality(ET9AWLingInfo * const pLingInfo,
                                                                          const ET9U16          wLength);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyCapsRules(ET9AWLingInfo               * const pLingInfo,
                                                                   ET9AWPrivWordInfo     const * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyAcronymRules(ET9AWLingInfo               * const pLingInfo,
                                                                      ET9AWPrivWordInfo     const * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyCompletionRules(ET9AWLingInfo               * const pLingInfo,
                                                                         ET9AWPrivWordInfo     const * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyShifting(ET9AWLingInfo               * const pLingInfo,
                                                                  ET9AWPrivWordInfo     const * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyTermDemote(ET9AWLingInfo               * const pLingInfo,
                                                                    ET9AWPrivWordInfo     const * const pWord);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyConfusablesRules(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyCaseSensitiveRule(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyShapedWords(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyCdbWords(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyListShrinking(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyBuildarounds(ET9AWLingInfo * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyImplicitLocking(ET9AWLingCmnInfo * const pLingCmnInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_ApplyTraceTapLocking(ET9AWLingCmnInfo * const pLingCmnInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_IsNonSpaceLanguage(ET9AWLingCmnInfo * const pLingCmnInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_IsNonGestureLanguage(ET9AWLingCmnInfo * const pLingCmnInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_IsNonBreakingSpaceLanguage(ET9AWLingCmnInfo * const pLingCmnInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_IsDLMLanguage(const ET9U32 dwLdbNum);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9_LanguageSpecific_IsRequireDoubleLetterGestureLanguage(const ET9U32 dwLdbNum);

#define _ET9_LanguageSpecific_FreeExactishSymb(sSymb)   ((sSymb) == '\'')

ET9PRIVATE void ET9FARCALL _ET9_PrecalculateSettings(ET9AWLingInfo * const pLingInfo,
                                                     const ET9U8           bLastInputSymb);

/* End don't mangle the function name if compile under C++ */
#if defined (__cplusplus)
    }
#endif

#endif /* ET9_ALPHABETIC_MODULE */
#endif /* !ET9ASYM_H */
