A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (2): [1] 2 »   

> Без описания
lit-uriy Супермодератор
Отправлено: 15 Ноября, 2008 - 21:28:34
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




Требуется ликбез. В файлах А2 имеются такие символы справой стороны от идентификаторов (переменные, процедуры ...) :
1) *
2) -
3) &
4) (стрелка в верх)

первый я знаю - означает экспортируемость идентификатора за пределы модуля, а вот остальные незнаю.

(Отредактировано автором: 15 Ноября, 2008 - 21:29:03)

 
 Top
BohdanT Администратор
Отправлено: 16 Ноября, 2008 - 11:38:34
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




1) "*" - экпорт для процедур переменных. В Объекте, кроме экспорта позволяет модифицировать переменную (в отличии от "-" )
2) "-" - экспорт только для чтения.
в случае если стоит перед имене процедуры обозначает, что это инлайн процедура.
Т.е. код процедуры будет вставлен в непосредственно в место вызова
Пример:
PROCEDURE -ANY2MYTYPE(CONST a:ANY):MYTYPE;
CODE{SYSTEM.i386}
POP EAX;
POP EAX;
END ANY2VKey;

3) "&" - конструктор объекта.
4) "^" - разименование переменной. Например если у нас есть переменная name типа String (PChar в Си), то при записи name^ у нас получается ARRAY OF CHAR

Еще одно применение: вызов предка. Если вы наследовали какой то объект и перекрыли например метод DrawBackground. То запись DrawBackground^; вызовет метод предка.
 
 Top
lit-uriy Супермодератор
Отправлено: 16 Ноября, 2008 - 13:08:02
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
4) "^" - разименование переменной


Вот крышечка она со времен паскаля, признак указателя (при обявлении, или его разименование)

А я напоролся именно на стрелку "->" только указывающую в верх. Даже не представляю как ее ввели.
 
 Top
BohdanT Администратор
Отправлено: 16 Ноября, 2008 - 13:34:14
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Цитата:
А я напоролся именно на стрелку "->" только указывающую в верх. Даже не представляю как ее ввели.



С шрифтом "Оберон" все как в другом измерении.... Я напиример был в шоку когда увидел, что символ "_" отображается, как "-" - это просто пипец.

Установи нормальный шрифт и все будет нормально...
Я говорил уже, что залог нормального программирования по Аос - шрифт "cour" Хорошо
 
 Top
lit-uriy Супермодератор
Отправлено: 22 Ноября, 2008 - 20:34:33
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
{SYSTEM.i386}
А это что за запись? В дельфях в фигурных скобках, если я ничего не путаю, писались коментарии.
 
 Top
BohdanT Администратор
Отправлено: 22 Ноября, 2008 - 21:47:31
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Да в делфе есть 2 вида коментариев, но не поддерживаются вложенные.
В обероне поддерживаются вложенные коменты.


{} - директивы компилятора.
{SYSTEM.i386} - Директива компилятору, здесь указывается под какой процессора ассемблер.
Есть еще:

{ACTIVE}
Определение объекта может включать StatBlock, названное телом объекта (object body). Тело — это активность объекта, которая исполняется после того, как экземпляр объекта размещен и инициализатор (если он есть) завершил свое исполнение; тело объекта помечается модификатором ACTIVE. Во время размещения объекта так же размещается новый процесс, который исполняет тело параллельно; такой объект называется активным объектом (active object).

{EXCLUSIVE}
Каждый экземпляр объекта защищен и единицей защиты является произвольный блок операторов от отдельного оператора до целого метода. Блок операторов может быть защищен от одновременного доступа при помощи модификатора EXLUSIVE. Активность остается на входе в эксклюзивный блок до тех пор, пока другая активность находится в эксклюзивном блоке того же экземпляра объекта.

Активность не может заблокировать объект более одного раза, повторный вход не допускается.

Каждый модуль считается объектным типом с единственным экземпляром (singleton instance), таким образом его процедуры тоже могут быть защищены. Областью видимости защиты является модуль целиком как и вслучае мониторов
{DELEGATE}
Делегаты подобны процедурным типам; они совместимы как с процедурами так и с методами, в то время как процедурные типы совместимы только с процедурами.

Делегаты процедурных типов помечаются модификатором DELEGATE. Делегатам могут быть назначены процедуры и методы. Пусть даны переменная с процедурным типом t, экземпляр объекта o и метод M связанный с o, тогда можно записать o.M в t, если конечно метод и t обладают совместимыми сигнатурами. Ссылка на сам объект исключается из сигнатуры процедурного типа. Всякий раз при вызове t назначенный объект o явно передается в self-ссылку (self-reference). Присваивания и вызовы процедур остаются совместимыми с описанием Oberon.
Нетрассируемые указатели — это указатели, которые не отслеживаются сборщиком мусора. Структура или объект, на которые ссылаются только нетрассируемые указатели, могут быть в любой момент утилизированы сборщиком мусора.
{UNTRACED}
Нетрассируемые указатели — это указатели, которые не отслеживаются сборщиком мусора. Структура или объект, на которые ссылаются только нетрассируемые указатели, могут быть в любой момент утилизированы сборщиком мусора.
Нетрассируемые указатели определяются при помощи модификатора UNTRACED.
TYPE Untraced = POINTER {UNTRACED} TO T;
 
 Top
lit-uriy Супермодератор
Отправлено: 30 Ноября, 2008 - 06:35:53
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




Опять про значки, имеется такой код:

PROCEDURE &Init*(w, h : LONGINT; alpha : BOOLEAN);
BEGIN
Init^(w, h, alpha);
NEW(img);
IF alpha THEN Raster.Create(img, w, h, Raster.BGRA8888) ELSE Raster.Create(img, w, h, Raster.BGR565) END;
NEW(canvas, img);
END Init;

в теле процедуры вызывается другая процедура Init с крышечкой, какой смысл имеет эта крышечка здесь?
(Добавление)
хех этож вызов метода предка Улыбка
(Добавление)
А вот такая запись:
canvas.SetClipRect(r); canvas.SetClipMode({WMGraphics.ClipRect});

где аргумент WMGraphics.ClipRect взят в фигурные скобки, это что такое?
 
 Top
BohdanT Администратор
Отправлено: 30 Ноября, 2008 - 11:19:02
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




lit-uriy
Я уже писал Улыбка
BohdanT пишет:
Еще одно применение: вызов предка. Если вы наследовали какой то объект и перекрыли например метод DrawBackground. То запись DrawBackground^; вызовет метод предка.

(Добавление)
lit-uriy пишет:
{WMGraphics.ClipRect}

Это конструктор множества (SET).
Т.е. в качестве параметра передается множество, в данном случае состоящее из одного элемента.
 
 Top
lit-uriy Супермодератор
Отправлено: 30 Ноября, 2008 - 11:29:41
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
Это конструктор множества (SET).
чем множество отличается от масива?
 
 Top
BohdanT Администратор
Отправлено: 30 Ноября, 2008 - 12:17:29
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Хм.. в таком сравнении даже никогда не думал Улыбка

Я отвечу как я множества понимаю, не так как в книгах пишут.
Если я не прав то поправьте:

Множество - в моем понимании это скорее работа с битами.
Т.е. можно без них обойтись, но есть нюансы. Например у нас есть какие то флаги
fl1 = 1;
fl2 = 2;
fl3 = 4;
fl4 = 8;
fl5 = 16;
и т.д.
Такое встречается в винде сплошь и рядом, для описания стилей и т.п.

можно было бы писать(да и пишут) без множеств:
state = fl1 OR fl3 OR fl4;

естественно и проверку на зажженый бит сделать не сложно.

Вот и все, а зачем множества я не знаю....
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« Общеe »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0132]     [ Gzipped ]