Ejemplo n.º 1
0
 public bool Добавить(ЭлементПеречисления элемент, Строка описание)
 {
     if (Содержит(элемент))
     {
         return(false);
     }
     СписокЭлементов.Add(элемент);
     СписокОписанийЭлементов.Add(описание);
     return(true);
 }
Ejemplo n.º 2
0
        public ЭлементПеречисления ДайЭлементПоОписанию(Строка описание)
        {
            var номер   = СписокОписанийЭлементов.FindIndex(оп => оп == описание);
            var элемент = new ЭлементПеречисления {
                флаги = new byte[СписокОписанийЭлементов.Count]
            };

            элемент.флаги[номер] = 1;
            return(элемент);
        }
Ejemplo n.º 3
0
 public bool Содержит(ЭлементПеречисления элемент)
 {
     foreach (var эл in СписокЭлементов)
     {
         if (эл.Совпадает(элемент))
         {
             return(false);
         }
     }
     return(true);
 }
Ejemplo n.º 4
0
 // у текущего элемента заполнены теже флаги что и другого плюс есть еще
 // аналог включения как в множестве
 public bool Включает(ЭлементПеречисления другойЭлемент)
 {
     if (Группа != другойЭлемент.Группа)
     {
         return(false);
     }
     for (int и = 0; и < флаги.Length; и++)
     {
         if (другойЭлемент.флаги[и] != 0 && флаги[и] != другойЭлемент.флаги[и])
         {
             return(false);
         }
     }
     return(true);
 }
Ejemplo n.º 5
0
        public ЭлементПеречисления ДайЭлементПоСпискуОписаний(Строка[] описания)
        {
            var элемент = new ЭлементПеречисления {
                флаги = new byte[СписокОписанийЭлементов.Count]
            };

            foreach (var описание in описания)
            {
                var номер = СписокОписанийЭлементов.FindIndex(оп => оп == описание);
                if (номер >= 0)
                {
                    элемент.флаги[номер] = 1;
                }
            }
            return(элемент);
        }
Ejemplo n.º 6
0
        public Строка Описание => Группа.ДайОписание(this); // для флагов это будет список Строк

        public bool Совпадает(ЭлементПеречисления другойЭлемент)
        {
            if (Группа != другойЭлемент.Группа)
            {
                return(false);
            }
            if (флаги.Length != другойЭлемент.флаги.Length)
            {
                return(false);
            }
            // длины могут не совпадать
            for (int и = 0; и < флаги.Length; и++)
            {
                if (флаги[и] != другойЭлемент.флаги[и])
                {
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 7
0
        internal Строка ДайОписание(ЭлементПеречисления элементПеречисления)
        {
            var номер = СписокЭлементов.IndexOf(элементПеречисления);

            return(СписокОписанийЭлементов[номер]);
        }