FUNCTION equal_maths_values
(* SCHEMA Ap242_managed_model_based_3d_engineering_mim_LF; *)
FUNCTION equal_maths_values(val1, val2 : maths_value) : LOGICAL;
FUNCTION mem_of_vs(val1, val2 : maths_value) : LOGICAL;
IF NOT has_values_space(val2) THEN RETURN (UNKNOWN); END_IF;
IF NOT member_of(val1,values_space_of(val2)) THEN RETURN (FALSE); END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- mem_of_vs
LOCAL
types1, types2 : SET OF STRING;
list1, list2 : LIST OF maths_value;
cum : LOGICAL := TRUE;
END_LOCAL;
IF NOT EXISTS (val1) OR NOT EXISTS (val2) THEN RETURN (FALSE); END_IF;
IF val1 = val2 THEN RETURN (TRUE); END_IF;
types1 := stripped_typeof (val1);
types2 := stripped_typeof (val2);
IF ('MATHS_ATOM' IN types1) OR ('COMPLEX_NUMBER_LITERAL' IN types1) THEN
IF 'MATHS_ATOM' IN types2 THEN RETURN (FALSE); END_IF;
IF 'COMPLEX_NUMBER_LITERAL' IN types2 THEN RETURN (FALSE); END_IF;
IF 'LIST' IN types2 THEN RETURN (FALSE); END_IF;
IF 'MATHS_SPACE' IN types2 THEN RETURN (FALSE); END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN RETURN (FALSE); END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN RETURN (mem_of_vs(val1,val2)); END_IF;
RETURN (UNKNOWN);
END_IF;
IF ('MATHS_ATOM' IN types2) OR ('COMPLEX_NUMBER_LITERAL' IN types2) THEN
RETURN (equal_maths_values(val2,val1));
END_IF;
IF 'LIST' IN types1 THEN
IF 'LIST' IN types2 THEN
list1 := val1;
list2 := val2;
IF SIZEOF (list1) <> SIZEOF (list2) THEN RETURN (FALSE); END_IF;
REPEAT i := 1 TO SIZEOF (list1);
cum := cum AND equal_maths_values (list1[i], list2[i]);
IF cum = FALSE THEN RETURN (FALSE); END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'MATHS_SPACE' IN types2 THEN RETURN (FALSE); END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN RETURN (FALSE); END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN RETURN (mem_of_vs(val1,val2)); END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'LIST' IN types2 THEN RETURN (equal_maths_values(val2,val1)); END_IF;
IF 'MATHS_SPACE' IN types1 THEN
IF 'MATHS_SPACE' IN types2 THEN
RETURN (equal_maths_spaces(val1,val2));
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN RETURN (FALSE); END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN RETURN (mem_of_vs(val1,val2)); END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'MATHS_SPACE' IN types2 THEN RETURN (equal_maths_values(val2,val1)); END_IF;
IF 'MATHS_FUNCTION' IN types1 THEN
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (equal_maths_functions(val1,val2));
END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN RETURN (mem_of_vs(val1,val2)); END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN RETURN (equal_maths_values(val2,val1)); END_IF;
IF ('GENERIC_EXPRESSION' IN types1) AND ('GENERIC_EXPRESSION' IN types2) THEN
IF NOT has_values_space(val1) OR NOT has_values_space(val2) THEN
RETURN (UNKNOWN);
END_IF;
IF NOT compatible_spaces(values_space_of(val1),values_space_of(val2)) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- equal_maths_values
Referenced By
Defintion equal_maths_values is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:20:10-04:00