ГОСТ Р И С 010303-11— 2009
необходимости данная информация может быть получена при применении функции TYPEOF к
допустимым элементам агрегированного значения.
Примеры
1 В контексте следующей схемы:
SCHEMA this_schema;
TYPE
mylist = LIST (1 :20] OF REAL;
END_TYPE;
LOCAL
1st : mylist:
END_LOCAL;
END.SCHEMA:
следующие условия имеют значение TRUE:
TYPEOF(1st)= [ ’THIS_SCHEMA.MYLIST\ ’LIST’ ]
TYPEOF (1st[17]) = [’REAL’,’NUMBER’]
2 Действие операторов USE или REFERENCE показано на основе предыдущего примера:
SCHEMA another_schema;
REFERENCE FROM this_schema (mylist AS hislist);
1st; hislist;
END_SCHEMA:
В данном контексте следующее выражение имеет значение TRUE:
TYPEOF (1st) = [’ANOTHER_SCHEMA.HISLIST\ ’THIS_SCHEMA.MYLIST\ ’LIST’]
15.26 Универсальная функция USEDIN
FUNCTION USEDIN (T: GENERIC ; R: STRING) : BAG OF GENERIC_ENTITY;
Функция
USEDIN
возвращает всеэкземпляры объекта, в которых используется указанный экземпляр
объекта вуказанной роли.
Параметры.
a) Т — любой экземпляр любого объектного типа данных.
b) R — строка, содержащая полностью уточненное имя атрибута (роли), в соответствии с 15.20.
Результат; все экземпляры объекта, в которых используется указанный экземпляр объекта в указан
ной роли, возвращаются вформе пакета (типа данных BAG).
Если экземпляр
Т
не исполняет никаких ролей или роль
R
не указана, то возвращается пустой пакет.
Если
R
представлен пустой строкой, то документируется каждое использование
Т.
Проверяют все
взаимосвязи, направленные к
Т.
Если взаимосвязь исходит от атрибута с именем
R.
то экземпляр объекта,
содержащий данный атрибут, добавляется к возвращаемому пакету. Отметим, что. если
Т
не использует
ся. то возвращается пустой пакет.
Пример — Данный пример показывает, как может быть использовано правило для проверки
того, что должна существовать точка (объект point) в начале координат, используемая как центр
окружности. Заметим, что в данном примере выражение QUERY (см. 12.6.7) используется в качестве
параметра функции SIZEOF.
ENTITY point;
х. у. z ; REAL:
END_ENTITY:
ENTITY circle;
centre ; point:
axis: vector:
radius : REAL
END_ENTITY; ...
(“Правило "example" находит каждую точку, используемую в качестве центра окружности, изатем
проверяет, что. по крайней мере, одна из этих точек расположена в начале координат *)
RULE example FOR (point);
LOCAL
circles : SET OF circle := []; — пустой набор окружностей
ENDLOCAL:
110