Пример #1
0
        // ГруппаОбъектов похоже на папку только вместо имен номера
        public void ПереносПАвДругоеПростр(ГруппаОбъектов дрПространство, Псевдоактивности ПА)
        {
            var аПАновое = дрПространство.Добавить(ПА);    // здесь Адрес уже полный по нему можно найти адрес в Куче  СобствАдрес Па меняется

            foreach (var связь in ПА.СписокСвязей)
            {
                var старыйАдрес = связь.СобственныйАдресПримитива;

                var новыйАдресСвязь = дрПространство.Добавить(связь);
                связь.АдресСобПА = аПАновое;

                // если связь содержит Удаленную Связь ( в случае только Входящей связи, удаленные неизвестны)  Удаленные ПА потеряют эту ПА
                if (связь.Направление == ТиНапрвления.Входящая)
                {
                    // можно оставить переадресацию, вместо СпецСвязи, по старому адресу будет новый адрес или Прокси.
                    var прокси = new Переадресация()
                    {
                        НовыйАдрес = новыйАдресСвязь
                    };
                    ((ГруппаОбъектов)старыйАдрес.АдресРегистратора.АдресВКучеПамяти()).Заменить(старыйАдрес, прокси);
                }
                else
                {
                    if (связь.Направление != ТиНапрвления.Исходящая)
                    {
                        связь.УдаленнаяСвязь.АдресУдаленойСвязи = новыйАдресСвязь;
                        // сообщение удаленой связи о смене своего адреса
                        // адрес связи в Куче не меняется
                    }
                    // в противном случае УдаленнаяСвяь ничего незнает об этой связи
                }
            }
        }
Пример #2
0
        static Клавиатура()
        {
            //var КультураИнфо = InputLanguageManager.Current.CurrentInputLanguage;

            byte первый    = 0;
            byte последний = 172;

            var именаКлавиш = Enum.GetNames(typeof(Key));
            var номер       = Enum.ToObject(typeof(Key), 10);
            var h           = new Key();
            var Юникод      = (int)Key.A;

            foreach (var клавиша in  именаКлавиш)
            {
                Клавиши.Добавить(new Строка(клавиша));
            }



            ЮНИКОДСимволКодыРусскихБуквПрописные = new ГруппаТипизированная()
            {
                ТипХранящихсяОбъектов = typeof(Символ)
            };
            var ЮНИКОДСимволКодыРусскихБуквЗаглавные = new ГруппаТипизированная()
            {
                ТипХранящихсяОбъектов = typeof(Символ)
            };

            ЮНИКОДРусскихБукв = new ГруппаОбъектов();

            char большая;

            for (var с = 'а'; с <= 'е'; с++)
            {
                большая = с.ToString().ToUpper()[0];
                ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая));
                ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(с));
                ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с));
            }
            большая = 'ё'.ToString().ToUpper()[0];
            ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая));
            ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ('ё'));
            ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло('ё'));
            for (var с = 'ж'; с <= 'я'; с++)
            {
                большая = с.ToString().ToUpper()[0];
                ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая));
                ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(с));
                ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с));
            }

            var русскаяРаскладка = new Dictionary <Key, char>
            {
                [Key.F]         = 'а',
                [Key.OemComma]  = 'б',
                [Key.D]         = 'в',
                [Key.U]         = 'г',
                [Key.L]         = 'д',
                [Key.T]         = 'е',
                [Key.Oem3]      = 'ё',
                [Key.Oem1]      = 'ж',
                [Key.P]         = 'з',
                [Key.B]         = 'и',
                [Key.Q]         = 'й',
                [Key.R]         = 'к',
                [Key.K]         = 'л',
                [Key.V]         = 'м',
                [Key.Y]         = 'н',
                [Key.J]         = 'о',
                [Key.G]         = 'п',
                [Key.H]         = 'р',
                [Key.C]         = 'с',
                [Key.N]         = 'т',
                [Key.E]         = 'у',
                [Key.A]         = 'ф',
                [Key.Oem4]      = 'х',
                [Key.W]         = 'ц',
                [Key.I]         = 'ш',
                [Key.O]         = 'щ',
                [Key.M]         = 'ь',
                [Key.Oem6]      = 'ъ',
                [Key.Oem7]      = 'э',
                [Key.OemPeriod] = 'ю',
                [Key.Z]         = 'я'
            };

            усскаяРаскладка = new Dictionary <Key, Адрес>();
            // здесь должна быть пара key, modifiers

            //}; // или Инт это трансформация
            // слварь это описание типа связей между элементами (одностороней поиск по ключу)
            // клавишам можно сопаставить действия (удалить, Вставить,)
            //var словарьЮникода = new Dictionary<Адрес, Строка>(); // либо инт
            foreach (var key in русскаяРаскладка.Keys)
            {
                try
                {
                    var символ = русскаяРаскладка[key];
                    усскаяРаскладка[key] =
                        ЮНИКОДСимволКодыРусскихБуквПрописные.Список.Find(
                            c => ((Символ)c).Значение == символ).СобственныйАдресПримитива;
                }
                catch { }
            }
        }
Пример #3
0
        public static void Main(string[] имяФайла)
        {
            var conv = new KeyConverter();
            var cult = CultureInfo.GetCultureInfo("ru");
            var s    = conv.ConvertToString(null, CultureInfo.GetCultureInfo("ru"), Key.A);

            //var sru =
            //var k = conv.ConvertFromString("ф");

            Хранилище.Типы.Add(typeof(Выходное_устройство));
            Хранилище.Типы.Add(typeof(Входное_устройство));
            Хранилище.Типы.Add(typeof(АПереадресация));
            Хранилище.Типы.Add(typeof(АссинхроннаяПереадресация));
            Хранилище.Типы.Add(typeof(ДобавитьВХранилище));
            Хранилище.ПересчитатьКодыТипов();

            //ДисковоеХранилище.Тест();

            if (имяФайла.Length != 0)
            {
                try
                {
                    Хранилище.Восстановить(имяФайла[0]);
                }
                catch
                {
                    MessageBox.Show(" Не удалось восстановить диспетчер");
                }
            }
            else
            {
                //var сервер = new Сервер_хранилища();


                var адресРегистратра = Хранилище.Добавить(new  егистраторАдресов());// регистратор по  0 адресу
                СтрокаЮникода.Создать("место хранения");
                СтрокаЮникода.Создать("Имя");
                Хранилище.Добавить(new АдресВХранилище());

                var словарь = new СловарьПлохой();
                словарь.Добавить(new СтрокаЮникода()
                {
                    Значение = "ключ"
                }, new СтрокаЮникода()
                {
                    Значение = "значение"
                });
                словарь.Добавить(new СтрокаЮникода()
                {
                    Значение = "ключ2"
                }, new СтрокаЮникода()
                {
                    Значение = "значение2"
                });
                Хранилище.Добавить(словарь);

                var группа = new ГруппаОбъектов();
                Хранилище.Добавить(группа);

                группа.Добавить(new АдресВХранилище()
                {
                    НомерВХранилище = 1
                });
                группа.Добавить(new АдресВХранилище()
                {
                    НомерВХранилище = 2
                });
                группа.Добавить(new СтрокаЮникода()
                {
                    Значение = "строка добавленая в группу"
                });

                //var тспсервер = new ТСПСвязьВходящая();
                //тспсервер.Старт();



                var гр = new ГруппаОбъектов();
                Хранилище.Добавить(гр);

                var Группа2 = new ГруппаАдресовИзСловаря();
                Группа2.Перечисление = Клавиатура.ЮНИКОДСимволКодыРусскихБуквПрописные;
                гр.Добавить(Группа2);

                гр.Добавить(new АдресВХранилище()
                {
                    НомерВХранилище = 1
                });
                гр.Добавить(new АдресВГруппе()
                {
                    НомерВГруппе = 12
                });
                гр.Добавить(new СтрокаЮникода()
                {
                    Значение = "строка из группы"
                });
                гр.Добавить(new Пустота());
                var гр2 = new ГруппаОбъектов();
                гр.Добавить(гр2);
                гр2.Добавить(new СтрокаЮникода()
                {
                    Значение = "строка из группы"
                });
                гр2.Добавить(new Пустота());
                гр2.Добавить(new СтрокаЮникода()
                {
                    Значение = "строка из группы"
                });


                Dictionary <Type, Type> видыОбъектов = new Dictionary <Type, Type>()
                {
                    [typeof(ГруппаОбъектов)]         = typeof(ВидГруппаОбъектов),
                    [typeof(СтрокаЮникода)]          = typeof(ВидСтрока),
                    [typeof(Символ)]                 = typeof(ВидСимвола),
                    [typeof(ГруппаАдресовИзСловаря)] = typeof(ВидГруппаГоризонтальная),
                    [typeof(ПроксиОбъекта)]          = typeof(ВидЗначениеАдреса)
                };

                var окноГруппы = new ВидОкно();
                окноГруппы.ВыборВидов = видыОбъектов; // объекты должны иметь свободные слоты, которые добавляются из справочника по мере надобности, ненужные не создаются похоже на список переменных в блоке кода
                окноГруппы.ДобавьСодержание(гр);

                окноГруппы.Показать();



                var вывод = new Выходное_устройство()
                {
                    Имя = new СтрокаЮникода("Окно Вывода полученого текста")
                };
                var адресВывод      = Хранилище.Добавить(вывод);
                var адресСвязиВывод = вывод.ДобавьСвязь(new Связь()
                {
                    ольУдаленного = "поставщик", ТипСвязи = "входящая", ИмяСвязи = "Связь входящая выводного окна"
                });
                вывод.Запуск();

                var переадресация  = new АссинхроннаяПереадресация();
                var адреспере      = Хранилище.Добавить(переадресация);
                var адресСвязиПере = переадресация.ДобавьСвязь(new Связь()
                {
                    ольУдаленного = "поставщик", ТипСвязи = "входящая"
                });
                переадресация.ДобавьСвязь(new Связь()
                {
                    ольУдаленного = "получатель", ТипСвязи = "исходящая",
                });


                var адресдВХ = Хранилище.Добавить(new ДобавитьВХранилище());


                var ввод = new Входное_устройство();

                var адресввода = Хранилище.Добавить(ввод);

                ввод.Запуск();



                var удалЦелое1 = new Активность();
            }



            var a = new Application();

            w = new ОкноХранилища();

            var ff = new DependencyObject();

            ff.SetValue(Control.BackgroundProperty, Brushes.LightBlue);
            var ht = ff.GetValue(Control.BackgroundProperty);

            a.Run(w);

            // после завершение приложеня
        }
Пример #4
0
        public static void ИнициализацияСловарейЯзыков()
        {
            // это безымянные группы
            var ЮНИКОДСимволКодыРусскихБукв = new ГруппаТипизированная()
            {
                ТипХранящихсяОбъектов = typeof(Символ)
            };

            Хранилище.Добавить(ЮНИКОДСимволКодыРусскихБукв);
            //Клавиатура.ЮНИКОДСимволКодыРусскихБукв = ЮНИКОДСимволКодыРусскихБукв;

            var ЮНИКОДРусскихБукв = new ГруппаОбъектов();

            Хранилище.Добавить(ЮНИКОДРусскихБукв);
            //Клавиатура.ЮНИКОДРусскихБукв = ЮНИКОДРусскихБукв;

            for (var с = 'а'; с <= 'я'; с++)
            {
                ЮНИКОДСимволКодыРусскихБукв.Добавить(new Символ(с));
                ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с));
            }


            //------------------------------------
            var актБуквы = new Активность()
            {
                Имя = "русские буквы"
            };                                                         // группа всех букв русских например
            var адресАктБуквы = Хранилище.Добавить(актБуквы);
            var связь0        = new СвязьПамять
            {
                ИмяСвязи = "1, а",// номер в алфавите, изображение
                ТипСвязи = "имеет члена"
            };

            актБуквы.ДобавьСвязь(связь0);

            // активность представляет конкретную букву
            // имеет код юникода, изображения возможно прямые, возможно через код Юникода
            // является членом группы Русские буквы  это Группа словосочетания
            // Активности могут быть не активными, ничего не делать только указывать пути
            // Активности группы
            var актБуква = new Активность()
            {
                Имя = "буква а"
            };
            var адресАктБуква = Хранилище.Добавить(актБуква);


            var связь11 = new СвязьПамять
            {
                ИмяСвязи            = "член группы",
                ТипСвязи            = "это", //или является членом группы
                АдресУдаленнойСвязи = связь0.АдресСобственный
            };

            актБуква.ДобавьСвязь(связь11);

            var связь10 = new СвязьПамять
            {
                ИмяСвязи = "Код Юникода",
                ТипСвязи = "имеет" // соответсвует
            };
            var адрессвязи1 = актБуква.ДобавьСвязь(связь10);

            // имеет связь с конкретной буквой, связь с группой "Коды Юникода"
            var актКод = new АктивностьЗначение()
            {
                Значение = new Символ('а')
            };

            актКод.Имя = "Код ЮНИКОДА а"; // это ответ на вопрос Что это? совпадает с связью с группой

            var связь2 = new СвязьПамять();

            связь2.ИмяСвязи = "Буква";
            связь2.ТипСвязи = "чей"; //чей это код
            var адрессвязи2 = актКод.ДобавьСвязь(связь2);

            связь2.АдресУдаленнойСвязи = адрессвязи1;
        }
Пример #5
0
 public ГруппаНумератор(ГруппаОбъектов группа)
 {
     Группа = группа;
 }
Пример #6
0
 public НумераторГруппы(ГруппаОбъектов группа)
 {
     Группа = группа;
 }