OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 12:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Ссылка на статическую запись
СообщениеДобавлено: Вторник, 07 Февраль, 2012 21:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Несколько раз приходилось делать обёрточные сканеры и форматтеры:
Код:
MyFormatter = RECORD
  fmt: TextMappers.Formatter;
  ... (* доп. параметры *)
END;
В процедурах-писалках вида PROCEDURE WriteXxx (VAR f: MyFormatter) постоянно приходится обращаться к полю f.fmt. --- возникает естественное желание завести ссылку. В КП это можно сделать при помощь ссылочного параметра, который по сути от локальной переменной ничем не отличается:
PROCEDURE WriteXxx (VAR f: MyFormatter; VAR fmt: TextMappers.Formatter);

Только указывать при каждом вызове: WriteXxx(f, f.fmt). По-моему, похоже на использование "методов" в классическом Обероне...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ссылка на статическую запись
СообщениеДобавлено: Вторник, 07 Февраль, 2012 21:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Да, еще Stores.Reader/Writer.

Всё это должны бы быть абстрактные типы со скрытой конкретной реализацией.

Непонятно, почему это сделано через обычные записевые типы.
Может, кто-то видит резон?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ссылка на статическую запись
СообщениеДобавлено: Вторник, 07 Февраль, 2012 21:42 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Info21 писал(а):
Непонятно, почему это сделано через обычные записевые типы.
Может, кто-то видит резон?
А чего там скрывать-то? Сколькими способами можно реализовать запись цепочки литер операцией записи одной литеры?

Абстракция со скрытой реализацией --- это TextModels.Reader/Writer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ссылка на статическую запись
СообщениеДобавлено: Среда, 08 Февраль, 2012 08:21 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Евгений Темиргалеев писал(а):
Несколько раз приходилось делать обёрточные сканеры и форматтеры:
(уточнение)
1) "Обёртка" только в смысле данных, не методов. WriteXxx "высокоуровневые" по отношению к процедурам форматтера. Смысл --- единые параметры ("контекст вызова") группы процедур пакуются в запись, выходит гораздо проще.
2) Эти "обёртки" локальны для модуля.

Делать обёрток методов форматтера в виде библиотечных модулей --- пока потребности не возникало (это к вопросу про абстракции).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ссылка на статическую запись
СообщениеДобавлено: Среда, 08 Февраль, 2012 09:22 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Info21 писал(а):
Непонятно, почему это сделано через обычные записевые типы.
Может, кто-то видит резон?
Я думаю, причина та же, что при введении сообщений для шины: избегаем нагрузки на динамическую память где это возможно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ссылка на статическую запись
СообщениеДобавлено: Среда, 08 Февраль, 2012 11:44 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Александр Ильин писал(а):
Info21 писал(а):
Непонятно, почему это сделано через обычные записевые типы.
Может, кто-то видит резон?
Я думаю, причина та же, что при введении сообщений для шины: избегаем нагрузки на динамическую память где это возможно.
Вопрос в том, почему именно здесь?
Почему в других местах этого нет?

Легко понять с Files, например.

Но сложность Stores.Writer (и прикладных задач, где он используется) достаточно велика, чтобы сделать невозможной одну-на-века реализацию.

Ведь Files.Reader тоже кешируется внутри Files.File -- ровно для того, чтобы не грузить память. Работа со Stores.Writer идёт по вполне аналогичным схемам, чтобы оправдать аналогичное решение.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB