// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // // Copyright (c) Microsoft Corporation. All rights reserved #include "Private.h" #include "TableDictionaryEngine.h" #include "DictionarySearch.h" //+--------------------------------------------------------------------------- // // CollectWord // //---------------------------------------------------------------------------- VOID CTableDictionaryEngine::CollectWord(_In_ CStringRange *pKeyCode, _Inout_ CSampleImeArray *pWordStrings) { CDictionaryResult* pdret = nullptr; CDictionarySearch dshSearch(_locale, _pDictionaryFile, pKeyCode); while (dshSearch.FindPhrase(&pdret)) { for (UINT index = 0; index < pdret->_FindPhraseList.Count(); index++) { CStringRange* pPhrase = nullptr; pPhrase = pWordStrings->Append(); if (pPhrase) { *pPhrase = *pdret->_FindPhraseList.GetAt(index); } } delete pdret; pdret = nullptr; } } VOID CTableDictionaryEngine::CollectWord(_In_ CStringRange *pKeyCode, _Inout_ CSampleImeArray *pItemList) { CDictionaryResult* pdret = nullptr; CDictionarySearch dshSearch(_locale, _pDictionaryFile, pKeyCode); while (dshSearch.FindPhrase(&pdret)) { for (UINT iIndex = 0; iIndex < pdret->_FindPhraseList.Count(); iIndex++) { CCandidateListItem* pLI = nullptr; pLI = pItemList->Append(); if (pLI) { pLI->_ItemString.Set(*pdret->_FindPhraseList.GetAt(iIndex)); pLI->_FindKeyCode.Set(pdret->_FindKeyCode.Get(), pdret->_FindKeyCode.GetLength()); } } delete pdret; pdret = nullptr; } } //+--------------------------------------------------------------------------- // // CollectWordForWildcard // //---------------------------------------------------------------------------- VOID CTableDictionaryEngine::CollectWordForWildcard(_In_ CStringRange *pKeyCode, _Inout_ CSampleImeArray *pItemList) { CDictionaryResult* pdret = nullptr; CDictionarySearch dshSearch(_locale, _pDictionaryFile, pKeyCode); while (dshSearch.FindPhraseForWildcard(&pdret)) { for (UINT iIndex = 0; iIndex < pdret->_FindPhraseList.Count(); iIndex++) { CCandidateListItem* pLI = nullptr; pLI = pItemList->Append(); if (pLI) { pLI->_ItemString.Set(*pdret->_FindPhraseList.GetAt(iIndex)); pLI->_FindKeyCode.Set(pdret->_FindKeyCode.Get(), pdret->_FindKeyCode.GetLength()); } } delete pdret; pdret = nullptr; } } //+--------------------------------------------------------------------------- // // CollectWordFromConvertedStringForWildcard // //---------------------------------------------------------------------------- VOID CTableDictionaryEngine::CollectWordFromConvertedStringForWildcard(_In_ CStringRange *pString, _Inout_ CSampleImeArray *pItemList) { CDictionaryResult* pdret = nullptr; CDictionarySearch dshSearch(_locale, _pDictionaryFile, pString); while (dshSearch.FindConvertedStringForWildcard(&pdret)) // TAIL ALL CHAR MATCH { for (UINT index = 0; index < pdret->_FindPhraseList.Count(); index++) { CCandidateListItem* pLI = nullptr; pLI = pItemList->Append(); if (pLI) { pLI->_ItemString.Set(*pdret->_FindPhraseList.GetAt(index)); pLI->_FindKeyCode.Set(pdret->_FindKeyCode.Get(), pdret->_FindKeyCode.GetLength()); } } delete pdret; pdret = nullptr; } }