/* Copyright (c) Microsoft Corporation. Licensed under the MIT License. */ /* Copyright (c) Microsoft Corporation. Licensed under the MIT License. */ /*************************************************************************** Author: ShonK Project: Kauai Copyright (c) Microsoft Corporation Spell checker support using CSAPI compliant spell checkers. ***************************************************************************/ #ifndef SPELL_H #define SPELL_H //REVIEW shonk: dictionary type on Mac const FTG kftgDictionary = MacWin('DICT', 'DIC'); // include the standard spell checker API header #ifdef WIN #define NT #endif //WIN extern "C" { #include "csapi.h" }; enum { fsplcNil = 0, fsplcSuggestFromUserDict = soSuggestFromUserDict, fsplcIgnoreAllCaps = soIgnoreAllCaps, fsplcIgnoreMixedDigits = soIgnoreMixedDigits, fsplcIgnoreRomanNumerals = soIgnoreRomanNumerals, fsplcFindUncappedSentences = soFindUncappedSentences, fsplcFindMissingSpaces = soFindMissingSpaces, fsplcFindRepeatWord = soFindRepeatWord, fsplcFindExtraSpaces = soFindExtraSpaces, fsplcFindSpacesBeforePunc = soFindSpacesBeforePunc, fsplcFindSpacesAfterPunc = soFindSpacesAfterPunc, fsplcFindInitialNumerals = soFindInitialNumerals, fsplcQuickSuggest = soQuickSuggest, fsplcUseAllOpenUdr = soUseAllOpenUdr, fsplcSglStepSugg = soSglStepSugg, fsplcIgnoreSingleLetter = soIgnoreSingleLetter, }; typedef class SPLC *PSPLC; #define SPLC_PAR BASE #define kclsSPLC 'SPLC' class SPLC : public SPLC_PAR { RTCLASS_DEC MARKMEM ASSERT protected: bool _fSplidValid: 1; bool _fMdrsValid: 1; bool _fUdrValid: 1; ulong _splid; SC_MDRS _mdrs; SC_UDR _udr; achar _rgchSuggest[512]; long _ichSuggest; #ifdef WIN HINSTANCE _hlib; SC_SEC (__cdecl *_pfnInit)(SC_SPLID *psplid, SC_WSC *pwsc); SC_SEC (__cdecl *_pfnOptions)(SC_SPLID splid, long grfso); SC_SEC (__cdecl *_pfnCheck)(SC_SPLID splid, SC_CC sccc, LPSC_SIB psib, LPSC_SRB psrb); SC_SEC (__cdecl *_pfnTerminate)(SC_SPLID splid, SC_BOOL fForce); SC_SEC (__cdecl *_pfnOpenMdr)(SC_SPLID splid, LPSC_PATH ppath, LPSC_PATH ppathExclude, SC_BOOL fCreateExclude, SC_BOOL fCache, SC_LID lidExpected, LPSC_MDRS pmdrs); SC_SEC (__cdecl *_pfnOpenUdr)(SC_SPLID splid, LPSC_PATH ppath, SC_BOOL fCreate, SC_WORD udrprop, SC_UDR * pudr, SC_BOOL *pfReadOnly); SC_SEC (__cdecl *_pfnAddUdr)(SC_SPLID splid, SC_UDR udr, SC_CHAR *pszAdd); SC_SEC (__cdecl *_pfnAddChangeUdr)(SC_SPLID splid, SC_UDR udr, SC_CHAR *pszAdd, SC_CHAR *pszChange); SC_SEC (__cdecl *_pfnClearUdr)(SC_SPLID splid, SC_UDR udr); SC_SEC (__cdecl *_pfnCloseMdr)(SC_SPLID splid, LPSC_MDRS pmdrs); SC_SEC (__cdecl *_pfnCloseUdr)(SC_SPLID splid, SC_UDR udr, SC_BOOL fForce); //SC_SEC SpellVer(SC_WORD *pwVer, SC_WORD *pwEngine, SC_WORD *pwType); SC_SEC SpellInit(SC_SPLID *psplid, SC_WSC *pwsc); SC_SEC SpellOptions(SC_SPLID splid, long grfso); SC_SEC SpellCheck(SC_SPLID splid, SC_CC sccc, LPSC_SIB psib, LPSC_SRB psrb); SC_SEC SpellTerminate(SC_SPLID splid, SC_BOOL fForce); //SC_SEC SpellVerifyMdr(LPSC_PATH ppath, SC_LID lidExpected, SC_LID *plid); SC_SEC SpellOpenMdr(SC_SPLID splid, LPSC_PATH ppath, LPSC_PATH ppathExclude, SC_BOOL fCreateExclude, SC_BOOL fCache, SC_LID lidExpected, LPSC_MDRS pmdrs); SC_SEC SpellOpenUdr(SC_SPLID splid, LPSC_PATH ppath, SC_BOOL fCreate, SC_WORD udrprop, SC_UDR * pudr, SC_BOOL *pfReadOnly); SC_SEC SpellAddUdr(SC_SPLID splid, SC_UDR udr, SC_CHAR *pszAdd); SC_SEC SpellAddChangeUdr(SC_SPLID splid, SC_UDR udr, SC_CHAR *pszAdd, SC_CHAR *pszChange); //SC_SEC SpellDelUdr(SC_SPLID splid, SC_UDR udr, SC_CHAR *pszDel); SC_SEC SpellClearUdr(SC_SPLID splid, SC_UDR udr); //SC_SEC SpellGetSizeUdr(SC_SPLID splid, SC_UDR udr, int *pcsz); //SC_SEC SpellGetListUdr(SC_SPLID splid, SC_UDR udr, SC_WORD iszStart, // LPSC_SRB psrb); SC_SEC SpellCloseMdr(SC_SPLID splid, LPSC_MDRS pmdrs); SC_SEC SpellCloseUdr(SC_SPLID splid, SC_UDR udr, SC_BOOL fForce); #endif //WIN SPLC(void); virtual bool _FInit(SC_LID sclid, PSTN pstnCustom = pvNil); virtual bool _FEnsureDll(SC_LID sclid); virtual bool _FEnsureMainDict(SC_LID sclid, PFNI pfniDic = pvNil); virtual bool _FEnsureUserDict(PSTN pstnCustom, PFNI pfniDef = pvNil); virtual bool _FLoadDictionary(SC_LID sclid, PSZ psz, SC_MDRS *pmdrs); virtual bool _FLoadUserDictionary(PSZ psz, SC_UDR *pudr, bool fCreate = fFalse); public: ~SPLC(void); static PSPLC PsplcNew(SC_LID sclid, PSTN pstnCustom = pvNil); virtual bool FSetOptions(ulong grfsplc); virtual bool FCheck(achar *prgch, long cch, long *pichMinBad, long *pichLimBad, PSTN pstn, long *pscrs); virtual bool FSuggest(achar *prgch, long cch, bool fFirst, PSTN pstn); virtual bool FIgnoreAll(PSTN pstn); virtual bool FChange(PSTN pstnSrc, PSTN pstnDst, bool fAll); virtual bool FAddToUser(PSTN pstn); virtual void FlushIgnoreList(void); virtual void FlushChangeList(bool fAll); }; #endif //!SPELL_H