OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 17 Июнь, 2019 19:56

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Расширение LIMITED
СообщениеДобавлено: Четверг, 03 Ноябрь, 2016 23:18 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9122
Откуда: Россия, Орёл
Открыл для себя, что LIMITED-типы могут расширяться, в рамках одного модуля.
Это правильно.

В Сообщении о языке этого не вижу:

Цитата:
Переменные записевого типа, имеющего атрибут LIMITED, могут размещаться [allocated] только внутри того модуля, где описан данный тип. Ограничение применимо как к стати­ческому размещению посредством описания переменных (гл. 7), так и к динамическому размещению с помощью стандартной процедуры NEW (10.3).
Записевый тип, помеченный как ABSTRACT или EXTENSIBLE, допускает расширенное переопределение, т.е. можно определить новый записевый тип как расширение такого типа.


Это указано в документах "Что нового в Компонентном Паскале?" в табличке этих новых атрибутов, под сноской-звёздочккой.
И в "3 Приёмы проектирования в Блэкбоксе".

Цитата:
Компонентный Паскаль превосходит Java в нескольких других языковых конструктах. Один является ограниченными [limited] записями. Это записи, которые могут быть расширены и размещены только внутри описывающего их модуля.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расширение LIMITED
СообщениеДобавлено: Суббота, 05 Ноябрь, 2016 21:38 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1194
Я это применял в интерфейсах к GTK.
Код:
GtkRange* = POINTER TO LIMITED RECORD (GtkWidget) END;
GtkScrollbar* = POINTER TO LIMITED RECORD (GtkRange) END;
GtkHScrollbar* = POINTER TO LIMITED RECORD (GtkScrollbar) END;
GtkVScrollbar* = POINTER TO LIMITED RECORD (GtkScrollbar) END;


Еще интересная штука:
Код:
POINTER TO LIMITED RECORD [untagged] END

Можно, например, выстроить иерархию HANDLE -> HGDIOBJ -> HBITMAP.
Или сделать перечисления, почти как настоящие.


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

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


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

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


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

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