Статус документа
Статус документа

ГОСТ Р ИСО 10303-11-2009 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS

     15.20 Универсальная функция ROLESOF


FUNCTION ROLESOF ( V : GENERIC_ENTITY ) : SET OF STRING;

Функция ROLESOF возвращает набор строк, содержащих полные уточненные имена ролей, исполняемых указанным экземпляром объекта. Полное уточненное имя определяется как имя атрибута, уточненное именем схемы и объекта, в которых объявлен данный атрибут (то есть 'SCHEMA.ENTITY.ATTRIBUTE').

Параметр: V - любой экземпляр объектного типа данных.

Результат: набор строковых значений (на верхнем регистре), содержащих полные уточненные имена атрибутов экземпляров объектов, использующих экземпляр V.

Если именованный тип данных импортирован посредством операторов USE или REFERENCE, то возвращаются также имя исходной схемы и имя именованного типа данных в этой схеме, если имело место переименование. Поскольку операторы USE могут быть связаны в цепочку, то возвращаются имена всех связанных схем и имена именованного типа данных во всех схемах.

Пример - Данный пример демонстрирует возможность использования точки в качестве центра окружности. Функция ROLESOF определяет, какие роли экземпляр объекта исполняет фактически.

SCHEMA that_schema;
ENTITY point;

x, у, z : REAL;

END_ENTITY;
ENTITY line;

start,
end : point;

END_ENTITY;
END SCHEMA;
SCHEMA this_schema;
USE FROM that_schema (point, line);
CONSTANT

origin : point := point(0.0, 0.0, 0.0);

END_CONSTANT;
ENTITY circle;

center

: point;

axis

: vector;

radius

: REAL;

END_ENTITY;

...

LOCAL

p : point := point(1.0, 0.0, 0.0);
с : circle := circle(p, vector(1, 1, 1), 1.0);
I : line := line(p, origin);

END_LOCAL;

...

IF 'THIS_SCHEMA.CIRCLE.CENTRE' IN ROLESOF(p) THEN

-- true

...

IF 'THIS_SCHEMA.LINE.START' IN ROLESOF(p) THEN

-- true

...

IF 'THAT_SCHEMA.LINE.START' IN ROLESOF(p) THEN

-- true

...

IF 'THIS SCHEMA.LINE.END' IN ROLESOF(p) THEN

-- false