Ejemplo n.º 1
0
 static Pullenti.Ner.Measure.UnitReferent _createReferent(Unit u)
 {
     Pullenti.Ner.Measure.UnitReferent ur = new Pullenti.Ner.Measure.UnitReferent();
     ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_NAME, u.NameCyr, false, 0);
     ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_NAME, u.NameLat, false, 0);
     ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_FULLNAME, u.FullnameCyr, false, 0);
     ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_FULLNAME, u.FullnameLat, false, 0);
     ur.Tag    = u;
     ur.m_Unit = u;
     return(ur);
 }
Ejemplo n.º 2
0
        public Pullenti.Ner.Measure.UnitReferent CreateReferentWithRegister(Pullenti.Ner.Core.AnalyzerData ad)
        {
            Pullenti.Ner.Measure.UnitReferent ur = ExtOnto;
            if (Unit != null)
            {
                ur = _createReferent(Unit);
            }
            else if (UnknownName != null)
            {
                ur = new Pullenti.Ner.Measure.UnitReferent();
                ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_NAME, UnknownName, false, 0);
                ur.IsUnknown = true;
            }
            if (Pow != 1)
            {
                ur.AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_POW, Pow.ToString(), false, 0);
            }
            List <Pullenti.Ner.Measure.UnitReferent> owns = new List <Pullenti.Ner.Measure.UnitReferent>();

            owns.Add(ur);
            if (Unit != null)
            {
                for (Unit uu = Unit.BaseUnit; uu != null; uu = uu.BaseUnit)
                {
                    Pullenti.Ner.Measure.UnitReferent ur0 = _createReferent(uu);
                    owns.Add(ur0);
                }
            }
            for (int i = owns.Count - 1; i >= 0; i--)
            {
                if (ad != null)
                {
                    owns[i] = ad.RegisterReferent(owns[i]) as Pullenti.Ner.Measure.UnitReferent;
                }
                if (i > 0)
                {
                    owns[i - 1].AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_BASEUNIT, owns[i], false, 0);
                    if ((owns[i - 1].Tag as Unit).BaseMultiplier != 0)
                    {
                        owns[i - 1].AddSlot(Pullenti.Ner.Measure.UnitReferent.ATTR_BASEFACTOR, Pullenti.Ner.Core.NumberHelper.DoubleToString((owns[i - 1].Tag as Unit).BaseMultiplier), false, 0);
                    }
                }
            }
            return(owns[0]);
        }