OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 17 Декабрь, 2017 16:51

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Си-unions в КП
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 17:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8905
Откуда: Россия, Орёл
Выделено: viewtopic.php?p=55205#p55205

В КП можно IMPORT SYSTEM и RECORD [union].


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon & bitfields & unions
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 17:33 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Илья Ермаков писал(а):
В КП можно IMPORT SYSTEM и RECORD [union].

Но с битовыми полями придётся всё равно бороться в ручную?
Да, и в каком виде оно импортирует union?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon & bitfields & unions
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 17:34 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8905
Откуда: Россия, Орёл
Когда в импорте указан SYSTEM, то Вы можете объявлять типы RECORD [union].

Разумеется, как и [untagged], их нельзя выделить через КП-шный NEW, только у ОС.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon & bitfields & unions
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 17:47 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Когда в импорте указан SYSTEM, то Вы можете объявлять типы RECORD [union].

Разумеется, как и [untagged], их нельзя выделить через КП-шный NEW, только у ОС.

А можно подробней с примером как это будет выглядеть, и что с этим RECORD [union] можно делать? А то BB под рукой нет. (да, я правильно понимаю, что RECORD [untagged] это такой RECORD к которому не применим оператор WITH ?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon & bitfields & unions
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 18:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8905
Откуда: Россия, Орёл
Да.

[untagged] и [union] в точности соотвествуют структурам и union-ам Си.

Т.е. чисто распил памяти с обращением по имени поля.

Для взаимодействия из КП с внешними библиотеками.

Код:
TYPE
  MyType = RECORD [union]
    var1: RECORD [untagged]
       a, b: INTEGER
    END;
    var2: LONGINT
  END;


Компилируемость не проверял, может, тип var1 отдельно объявить, но, скорее всего, должно сработать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon & bitfields & unions
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 19:28 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Спасибо. Интересное и полезное расширение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Си-unions в КП
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 20:34 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Вирт же, когда убирал объединения, имел в виду, что их заменит наследование.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Си-unions в КП
СообщениеДобавлено: Вторник, 07 Декабрь, 2010 21:36 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Geniepro писал(а):
Вирт же, когда убирал объединения, имел в виду, что их заменит наследование.

Наследование менее универсально в плане низкоуровневой работы с данными. Не позволяет одни и те же данные трактовать так и эдак. См. пример в параллельной теме от Галкова.

Ну, а кроме того, внешний мир не в курсе про наследование, ибо внешний мир это Си. И с этим нужно считаться.


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

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


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

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


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

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