/*******************************************************************************
;*******************************************************************************
;**                                                                           **
;**                    COPYRIGHT 1998-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: et9adlm.h                                                   **
;**                                                                           **
;**  Description: Dynamic LM header file.                                     **
;**                                                                           **
;*******************************************************************************
;******************************************************************************/

#ifndef ET9ADLM_H
#define ET9ADLM_H    1

#include "et9api.h"
#ifdef ET9_ALPHABETIC_MODULE
#include "et9aslst.h"


/* don't mangle the function name if compile under C++ */
#if defined(__cplusplus)
extern "C" {
#endif

/*  -IDR-    
 *                     
 *
 *                      
 */

typedef enum _ET9AW_DLM_WordQuality_e {
    _ET9AW_DLM_WordQuality_First = 2,           /* < -IDR-              */
    _ET9AW_DLM_WordQuality_ScanLow,             /* < -IDR-                          */
    _ET9AW_DLM_WordQuality_ScanHigh,            /* < -IDR-                           */
    _ET9AW_DLM_WordQuality_UserQuarantine,      /* < -IDR-                                  */
    _ET9AW_DLM_WordQuality_UserNormal,          /* < -IDR-                       */
    _ET9AW_DLM_WordQuality_UserHigh,            /* < -IDR-                              */
    _ET9AW_DLM_WordQuality_Last                 /* < -IDR-              */
} _ET9AW_DLM_WordQuality;                       /* < -IDR-     */


ET9PRIVATE ET9STATUS ET9FARCALL _ET9AW_DLM_AddWord(ET9AWLingInfo           * const pLingInfo,
                                                   ET9SYMB           const * const psBuf,
                                                   const ET9U16                    wBufLen,
                                                   const ET9BOOL                   bUpdateUse,
                                                   const _ET9AW_DLM_WordQuality    eQuality,
                                                   const ET9BOOL                   bInhibitNewWord);

ET9PRIVATE ET9STATUS ET9FARCALL _ET9AW_DLM_AddUserWord(ET9AWLingInfo           * const pLingInfo,
                                                       ET9SYMB           const * const psBuf,
                                                       const ET9U16                    wBufLen);

ET9PRIVATE ET9STATUS ET9FARCALL _ET9AW_DLM_DeleteWord(ET9AWLingInfo        * const pLingInfo,
                                                      ET9SYMB        const * const psBuf,
                                                      const ET9U16                 wBufLen);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9AW_DLM_FindWord(ET9AWLingInfo           * const pLingInfo,
                                                  ET9SYMB           const * const psBuf,
                                                  const ET9U16                    wBufLen,
                                                  const ET9BOOL                   bAllowStatic,
                                                  const ET9BOOL                   bCaseSensitive);

ET9PRIVATE ET9STATUS ET9FARCALL _ET9AW_DLM_WordsSearch(ET9AWLingInfo        * const pLingInfo,
                                                       const ET9U16                 wIndex,
                                                       const ET9U16                 wLength,
                                                       const ET9_FREQ_DESIGNATION   bFreqIndicator);

ET9PRIVATE void ET9FARCALL _ET9AW_DLM_ProcessSelListEntries(ET9AWLingInfo  * const pLingInfo,
                                                            const ET9UINT          nSelectIndex);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9AW_DLM_HasALMConfidence(ET9AWLingInfo    * const pLingInfo);

ET9PRIVATE ET9FLOAT ET9FARCALL _ET9AW_DLM_GetConfidence(ET9AWLingInfo    * const pLingInfo);

ET9PRIVATE ET9BOOL ET9FARCALL _ET9AW_Is_DLM_Entries(ET9AWLingInfo          * const pLingInfo,
                                                    ET9SimpleWord    const * const pFirstWord,
                                                    ET9SimpleWord    const * const pSecondWord,
                                                    ET9FREQPART            * const pxWordFreq,
                                                    ET9U8                  * const pbNLMOrder,
                                                    const ET9BOOL                  bCheckAlternate,
                                                    ET9SimpleWord          * const pAlternateWord);

#ifdef ET9_QA_ACCESS

ET9BOOL ET9FARCALL _ET9_QA_DLM_GetWordProperties(ET9AWLingInfo      * const pLingInfo,
                                                 ET9SYMB      const * const psBuf,
                                                 const ET9U16               wBufLen,
                                                 const ET9U16               wLanguageId,
                                                 ET9U16             * const pwUseCount,
                                                 ET9S8              * const psbQuality);

#endif /* ET9_QA_ACCESS */


#if defined(__cplusplus)
}
#endif

#endif /* ET9_ALPHABETIC_MODULE */
#endif /* ET9ADLM_H */
/* ----------------------------------< eof >--------------------------------- */
