CMorphInfos convertWordAnalysis(const WordAnalysis& wordAnalysis) { AnalysisVector const& analysisVec = wordAnalysis.second; CMorphInfos infos; infos.m_szWord = asWStr(wordAnalysis.first); const int n = analysisVec.size(); for (int i=0 ; i<n ; ++i) { Analysis const& analysis = analysisVec[i]; CMorphInfo info; info.m_szRoot = asWStr(analysis.root); info.m_szEnding = asWStr(analysis.ending); info.m_szClitic = asWStr(analysis.clitic); if (analysis.partofspeech.size() > 0) { info.m_cPOS = analysis.partofspeech[0]; } info.m_szForm = asWStr(analysis.form); infos.m_MorphInfo.AddItem(info); } return infos; }
Syllables syllabify(std::string word) { // syllabify the word SILP silp; FSXSTRING fsxWord(asWStr(word)); size_t n = silp.silbita(&fsxWord); silp.silbivalted(); // create the wrapper data structure Syllables syllables; syllables.reserve(n); // copy results for (int idx=0 ; idx<n ; ++idx) { const SILBISTR *silbistr = silp.silbid[idx]; syllables.push_back(Syllable(asString(silbistr->silp), silbistr->valde, silbistr->rohk)); } return syllables; }