/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// <param name="lexDb"></param> /// ------------------------------------------------------------------------------------ private void AddMorphTypes(LexDb lexDb) { int hvoMorphTypesList = m_cacheBase.NewHvo(CmPossibilityList.kClassId); lexDb.MorphTypesOAHvo = hvoMorphTypesList; CmPossibilityList morphTypesList = new CmPossibilityList(Cache, hvoMorphTypesList); for (int i = 1; i <= MoMorphTypeCollection.kmtLimit; i++) { int hvoMorphType = m_cacheBase.NewHvo(MoMorphType.kClassId); MoMorphType morphType = new MoMorphType(Cache, hvoMorphType); switch (i) { case 1: InitMorphType(new Guid(MoMorphType.kguidMorphBoundRoot), "*", null, 2, morphType); break; case 2: InitMorphType(new Guid(MoMorphType.kguidMorphBoundStem), "*", null, 2, morphType); break; case 3: InitMorphType(new Guid(MoMorphType.kguidMorphCircumfix), null, null, 1, morphType); break; case 4: InitMorphType(new Guid(MoMorphType.kguidMorphEnclitic), "=", null, 7, morphType); break; case 5: InitMorphType(new Guid(MoMorphType.kguidMorphInfix), "-", "-", 5, morphType); break; case 6: InitMorphType(new Guid(MoMorphType.kguidMorphParticle), null, null, 1, morphType); break; case 7: InitMorphType(new Guid(MoMorphType.kguidMorphPrefix), null, "-", 3, morphType); break; case 8: InitMorphType(new Guid(MoMorphType.kguidMorphProclitic), null, "=", 4, morphType); break; case 9: InitMorphType(new Guid(MoMorphType.kguidMorphRoot), null, null, 1, morphType); break; case 10: InitMorphType(new Guid(MoMorphType.kguidMorphSimulfix), "=", "=", 5, morphType); break; case 11: InitMorphType(new Guid(MoMorphType.kguidMorphStem), null, null, 1, morphType); break; case 12: InitMorphType(new Guid(MoMorphType.kguidMorphSuffix), "-", null, 6, morphType); break; case 13: InitMorphType(new Guid(MoMorphType.kguidMorphSuprafix), "~", "~", 5, morphType); break; case 14: InitMorphType(new Guid(MoMorphType.kguidMorphInfixingInterfix), "-", "-", 0, morphType); break; case 15: InitMorphType(new Guid(MoMorphType.kguidMorphPrefixingInterfix), null, "-", 0, morphType); break; case 16: InitMorphType(new Guid(MoMorphType.kguidMorphSuffixingInterfix), "-", null, 0, morphType); break; case 17: InitMorphType(new Guid(MoMorphType.kguidMorphPhrase), null, null, 0, morphType); break; case 18: InitMorphType(new Guid(MoMorphType.kguidMorphDiscontiguousPhrase), null, null, 0, morphType); break; case 19: InitMorphType(new Guid(MoMorphType.kguidMorphClitic), null, null, 0, morphType); break; } m_cacheBase.SetBasicProps(hvoMorphType, hvoMorphTypesList, (int)MoMorphType.kClassId, (int)CmPossibilityList.CmPossibilityListTags.kflidPossibilities, i); m_cacheBase.AppendToFdoVector(hvoMorphTypesList, (int)CmPossibilityList.CmPossibilityListTags.kflidPossibilities, hvoMorphType); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initialize lexical database and morph types /// </summary> /// ------------------------------------------------------------------------------------ public void InitializeLexDb() { CheckDisposed(); LoadMetaData("ling"); int hvoLexDb = m_cacheBase.NewHvo(LexDb.kClassId); m_lp.LexDbOAHvo = hvoLexDb; LexDb lexDb = new LexDb(Cache, hvoLexDb); AddMorphTypes(lexDb); m_lp.PartsOfSpeechOAHvo = m_cacheBase.NewHvo(CmPossibilityList.kClassId); m_lp.SemanticDomainListOAHvo = m_cacheBase.NewHvo(CmPossibilityList.kClassId); lexDb.UsageTypesOAHvo = m_cacheBase.NewHvo(CmPossibilityList.kClassId); m_lp.PhonologicalDataOAHvo = m_cacheBase.NewHvo(PhPhonData.kClassId); m_lp.WordformInventoryOAHvo = m_cacheBase.NewHvo(WordformInventory.kClassId); m_lp.MorphologicalDataOAHvo = m_cacheBase.NewHvo(MoMorphData.kClassId); m_lp.ConfidenceLevelsOAHvo = m_cacheBase.NewHvo(CmPossibilityList.kClassId); // TODO: add lexDb.Introduction, lexDb.Domain/Subentry/Sense, // lexDb.Status }