| Application module: Physical connectivity layout topology requirement | ISO/TS 10303-1826:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9698 - ISO/TS 10303-1826 Physical connectivity layout topology requirement - EXPRESS ARM
*)
SCHEMA Physical_connectivity_layout_topology_requirement_arm;
USE FROM
Requirement_decomposition_arm;
-- ISO/TS 10303-1740
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
ENTITY Physical_connectivity_layout_topology_link;
subsequent_node : Physical_connectivity_layout_topology_node;
precedent_node : Physical_connectivity_layout_topology_node;
WHERE
WR1: acyclic_physical_connectivity_layout_topology_link(SELF, [subsequent_node],
'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.PHYSICAL_CONNECTIVITY_LAYOUT_TOPOLOGY_LINK');
END_ENTITY;
ENTITY Physical_connectivity_layout_topology_node;
terminal_type : STRING;
END_ENTITY;
ENTITY Physical_connectivity_layout_topology_requirement
SUBTYPE OF (Predefined_requirement_view_definition);
elements : SET[1:?] OF Physical_connectivity_layout_topology_link;
DERIVE
nodes : SET[1:?] OF Physical_connectivity_layout_topology_node := pcd_get_pcltn(elements);
tree_structure : LOGICAL := (SIZEOF(nodes) = (SIZEOF(elements) + 1));
WHERE
WR1: (tree_structure = TRUE);
END_ENTITY;
FUNCTION acyclic_physical_connectivity_layout_topology_link
(relation : Physical_connectivity_layout_topology_link; relatives : SET[1:?] OF Physical_connectivity_layout_topology_node; specific_relation : STRING) : BOOLEAN;
LOCAL
x : SET OF Physical_connectivity_layout_topology_link := [];
END_LOCAL;
IF relation.precedent_node IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(pd <* bag_to_set(USEDIN(relation.precedent_node,
'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.' +
'PHYSICAL_CONNECTIVITY_LAYOUT_TOPOLOGY_LINK.' +
'SUBSEQUENT_NODE')) | specific_relation IN TYPEOF(pd));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_physical_connectivity_layout_topology_link(x[i], relatives +
relation.precedent_node, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
FUNCTION pcd_get_pcltn
(input : SET[0:?] OF Physical_connectivity_layout_topology_link) : SET[0:?] OF Physical_connectivity_layout_topology_node;
LOCAL
pcltn : SET OF Physical_connectivity_layout_topology_node := [];
i : INTEGER := 0;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(input) BY 1;
pcltn := pcltn + input[i].precedent_node + input[i].subsequent_node;
END_REPEAT;
RETURN(pcltn);
END_FUNCTION;
END_SCHEMA; -- Physical_connectivity_layout_topology_requirement_arm
© ISO 2018 — All rights reserved