public static ЦелоеЧисло Создать() { var этот = new ЦелоеЧисло(); var адрес = Хранилище.Добавить(этот); return(этот); }
public ЦелоеЧисло дайЗначение() { ЦелоеЧисло знач = new ЦелоеЧисло(); // в целомчисле надо разделить сохранние значения и сохранение всего объекта (свойства+значение) знач.Восстановить(поток); //плохо что читается и код типа каждый раз return(знач); }
public override ПримитивИлиАдрес Копировать() { var копия = new ЦелоеЧисло(); копия.Значение = Значение; копия.СобственныйАдресПримитива = СобственныйАдресПримитива; return(копия); }
public override АМОбъект Копировать() // надо указывать пространство куда { var копия = new ЦелоеЧисло { Значение = Значение, //СобственныйАдресПримитива = (Адрес) СобственныйАдресПримитива.Копировать() }; return(копия); }
public ЦелоеЧисло ДайЗначение() // это хранитель Значения , но не Получатель Значения , если хранения Суммы нет, то Чистый вычмслмитель { if (_Слогаемое[0] != null && _Слогаемое[1] != null) { var сумма = new ЦелоеЧисло(_Слогаемое[0].Значение + _Слогаемое[1].Значение); Сумма.Значение = _Слогаемое[0].Значение + _Слогаемое[1].Значение; return(сумма); // без хранения } return(Сумма); // с хранением без вычисления // можно еще вернуть частмчный вариант например Сумма= 2+ Значение по адресу }
public ПримитивИлиАдрес ДайОбъектПоИндексу(ЦелоеЧисло номер) { ЧитательИндекса.BaseStream.Position = номер.Значение * 4; var адресОбъекта = ЧитательИндекса.ReadInt32(); Читатель.BaseStream.Position = адресОбъекта; var прим = ПримитивИлиАдрес.Создать(Читатель.BaseStream); return(прим); }
public ПримитивИлиАдрес ПередайКоманду(Команда команда) { var номерКоманды = new ЦелоеЧисло(0); var ком2 = new Команда("Команда", номерКоманды, команда); Канал.ПередайИсходящееСообщение(ком2); //здесь должно быть ДайВходящееСПрерыванием var команда2 = (Команда)Канал.ДайВходящее(); var номерКоманды2 = команда2.Параметры[0]; // номер команды на которую дается ответ var ответ = команда.Параметры[1]; return(ответ); }
public override object Выполнить(План вызывающееДействие) { ЦелоеЧисло[] слогаемое = new ЦелоеЧисло[2]; //это внутренние переменные слогаемое[0] = ПреобразоватьСлогаемое(вызывающееДействие, слогаемое1); слогаемое[1] = ПреобразоватьСлогаемое(вызывающееДействие, слогаемое2); езультатДействия = new ЦелоеЧисло() { Значение = слогаемое[0].Значение + слогаемое[1].Значение }; return(езультатДействия); }
public void НаОбъектПоИндексу(ЦелоеЧисло индекс, ПримитивИлиАдрес объект) { ЧитательИндекса.BaseStream.Position = индекс.Значение * 4; var адресОбъекта = ЧитательИндекса.ReadInt32(); Читатель.BaseStream.Position = адресОбъекта; int длинаОбъекта; длинаОбъекта = ЧитательИндекса.ReadInt32(); // вариант с записью длины в индекс // узнать длину сохраненного объекта, его тип var номерТипа = Читатель.ReadByte(); var тип = Хранилище.Типы[номерТипа]; // для примитивов длинаОбъекта = (int)тип.InvokeMember("Длина", BindingFlags.InvokeMethod, null, null, null); //для групп и строк длинаОбъекта = Читатель.ReadUInt16(); // если тип объекта совпадает с типом сохраненного объекта и этот тип не группа = длины сохраненных объектов совпадают Записать(объект, адресОбъекта); // если ттип не совпадает // то сравнить длину , если длина совпадает, то ттоже записать // если длина не совпадает //то найти подходящее место // в файле с удалениями есть // запомниттьпустое место int новыйАдресОбъекта = 0; // запомнить новый адрес в индексе ЧитательИндекса.BaseStream.Position = индекс.Значение * 4; ПисательИндекса.Write(новыйАдресОбъекта); Записать(объект, новыйАдресОбъекта); // записать в удаленных пусттое место адрес начала, длина, было бы не плохо отсортировать этот файл по длинам // еще вариант использовать }
public static void Выполнить(ЦелоеЧисло слагаемое1, ЦелоеЧисло слагаемое2, ЦелоеЧисло результат) { результат.Значение = слагаемое1.Значение + слагаемое2.Значение; }
public ЦелоеЧисло Сложи(ЦелоеЧисло слогаемое1, ЦелоеЧисло слогаемое2) // услуга интерпритатор { return(слогаемое1 + слогаемое2); }