FUNCTION get_group_stack
(input : stratum_technology_occurrence_group_xim) : local_linear_stack_armx;
LOCAL group : Stratum_technology_occurrence_group_xim := input; root_group : Stratum_technology_occurrence_group_xim := ?; stack : Local_linear_stack_armx := ?; END_LOCAL; -- we find a root group, the group that has no parent groups REPEAT WHILE (root_group = ?); IF (SIZEOF(group.parent) = 1) THEN group := group.parent[1]; ELSE root_group := group; END_IF; END_REPEAT;
-- IF data is correct, THEN root group shall be OF TYPE Sequential_stratum_technology_occurrence_group_xim -- AND shall be referenced BY one AND only one Local_linear_stack_armx AS root_xim IF 'LKSOFT_EXTENSIONS_XIM.SEQUENTIAL_STRATUM_TECHNOLOGY_OCCURRENCE_GROUP_XIM' IN TYPEOF(root_group) THEN -- stack shall be ? IF USEDIN shall RETURN empty bag stack := USEDIN(root_group, 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_XIM.LOCAL_LINEAR_STACK_ARMX.' + 'ROOT_XIM')[1]; END_IF;
-- either we found a stack here, OR data is invalid RETURN (stack); END_FUNCTION; -- get_group_stack
|