Exemplo n.º 1
0
        private Set <int> GetHvoSlots()
        {
            Set <int>     hvoSlots;
            IPartOfSpeech pos = PartOfSpeech.CreateFromDBObject(m_cache, m_selectedMainPOSHvo);

            if (m_morphType == null)
            {             // Not called by InsertEntryDlg; need to figure out the morphtype(s)
                LexEntry lex = m_mediator.PropertyTable.GetValue("ActiveClerkSelectedObject") as LexEntry;
                if (lex != null)
                {
                    hvoSlots = MoInflAffMsa.GetSetOfSlots(m_cache, lex, pos);
                }
                else
                {
                    hvoSlots = new Set <int>(pos.AllAffixSlotIDs);
                }
            }
            else
            {             //  Called by InsertEntryDlg so we know the morphtype
                bool fIsPrefixal = false;
                bool fIsSuffixal = false;
                if (MoMorphType.IsPrefixishType(m_cache, m_morphType.Hvo))
                {
                    fIsPrefixal = true;
                }
                if (MoMorphType.IsSuffixishType(m_cache, m_morphType.Hvo))
                {
                    fIsSuffixal = true;
                }
                if (fIsPrefixal && fIsSuffixal)
                {
                    hvoSlots = new Set <int>(pos.AllAffixSlotIDs);
                }
                else
                {
                    hvoSlots =
                        MoInflAffixTemplate.GetSomeSlots(m_cache, new Set <int>(pos.AllAffixSlotIDs), fIsPrefixal);
                }
            }
            return(hvoSlots);
        }