@@ -785,97 +785,6 @@ function ignored_connections_equal(sys1::System, sys2::System)
785785 return _eq_unordered (ic1[1 ], ic2[1 ]) && _eq_unordered (ic1[2 ], ic2[2 ])
786786end
787787
788- function Base.:(== )(sys1:: System , sys2:: System )
789- sys1 === sys2 && return true
790- iv1 = get_iv (sys1)
791- iv2 = get_iv (sys2)
792- isequal (iv1, iv2) &&
793- isequal (nameof (sys1), nameof (sys2)) &&
794- _eq_unordered (get_eqs (sys1), get_eqs (sys2)) &&
795- noise_equations_equal (sys1, sys2) &&
796- _eq_unordered (get_jumps (sys1), get_jumps (sys2)) &&
797- _eq_unordered (get_constraints (sys1), get_constraints (sys2)) &&
798- _eq_unordered (get_costs (sys1), get_costs (sys2)) &&
799- isequal (get_consolidate (sys1), get_consolidate (sys2)) &&
800- _eq_unordered (get_unknowns (sys1), get_unknowns (sys2)) &&
801- _eq_unordered (get_ps (sys1), get_ps (sys2)) &&
802- _eq_unordered (get_brownians (sys1), get_brownians (sys2)) &&
803- _eq_unordered (get_observed (sys1), get_observed (sys2)) &&
804- _eq_unordered (get_parameter_dependencies (sys1), get_parameter_dependencies (sys2)) &&
805- isequal (get_description (sys1), get_description (sys2)) &&
806- isequal (get_defaults (sys1), get_defaults (sys2)) &&
807- isequal (get_guesses (sys1), get_guesses (sys2)) &&
808- _eq_unordered (get_initialization_eqs (sys1), get_initialization_eqs (sys2)) &&
809- _eq_unordered (get_continuous_events (sys1), get_continuous_events (sys2)) &&
810- _eq_unordered (get_discrete_events (sys1), get_discrete_events (sys2)) &&
811- isequal (get_connector_type (sys1), get_connector_type (sys2)) &&
812- isequal (get_assertions (sys1), get_assertions (sys2)) &&
813- isequal (get_metadata (sys1), get_metadata (sys2)) &&
814- isequal (get_gui_metadata (sys1), get_gui_metadata (sys2)) &&
815- get_is_dde (sys1) == get_is_dde (sys2) &&
816- _eq_unordered (get_tstops (sys1), get_tstops (sys2)) &&
817- # not comparing tearing states because checking if they're equal up to ordering
818- # is difficult
819- getfield (sys1, :namespacing ) == getfield (sys2, :namespacing ) &&
820- getfield (sys1, :complete ) == getfield (sys2, :complete ) &&
821- ignored_connections_equal (sys1, sys2) &&
822- get_parent (sys1) == get_parent (sys2) &&
823- get_isscheduled (sys1) == get_isscheduled (sys2) &&
824- all (s1 == s2 for (s1, s2) in zip (get_systems (sys1), get_systems (sys2)))
825- end
826-
827- function Base. hash (sys:: System , h:: UInt )
828- h = hash (nameof (sys), h)
829- h = hash (get_iv (sys), h)
830- # be considerate of things compared using `_eq_unordered` in `==`
831- eqs = get_eqs (sys)
832- eq_sortperm = sortperm (eqs; by = string)
833- h = hash (@view (eqs[eq_sortperm]), h)
834- neqs = get_noise_eqs (sys)
835- if neqs === nothing
836- h = hash (nothing , h)
837- elseif neqs isa Vector
838- h = hash (@view (neqs[eq_sortperm]), h)
839- else
840- h = hash (@view (neqs[eq_sortperm, :]), h)
841- end
842- h = hash (Set (get_jumps (sys)), h)
843- h = hash (Set (get_constraints (sys)), h)
844- h = hash (Set (get_costs (sys)), h)
845- h = hash (get_consolidate (sys), h)
846- h = hash (Set (get_unknowns (sys)), h)
847- h = hash (Set (get_ps (sys)), h)
848- h = hash (Set (get_brownians (sys)), h)
849- h = hash (Set (get_observed (sys)), h)
850- h = hash (Set (get_parameter_dependencies (sys)), h)
851- h = hash (get_description (sys), h)
852- h = hash (get_defaults (sys), h)
853- h = hash (get_guesses (sys), h)
854- h = hash (Set (get_initialization_eqs (sys)), h)
855- h = hash (Set (get_continuous_events (sys)), h)
856- h = hash (Set (get_discrete_events (sys)), h)
857- h = hash (get_connector_type (sys), h)
858- h = hash (get_assertions (sys), h)
859- h = hash (get_metadata (sys), h)
860- h = hash (get_gui_metadata (sys), h)
861- h = hash (get_is_dde (sys), h)
862- h = hash (Set (get_tstops (sys)), h)
863- h = hash (Set (getfield (sys, :namespacing )), h)
864- h = hash (Set (getfield (sys, :complete )), h)
865- ics = get_ignored_connections (sys)
866- if ics === nothing
867- h = hash (ics, h)
868- else
869- h = hash (Set (ics[1 ]), hash (Set (ics[2 ]), h), h)
870- end
871- h = hash (get_parent (sys), h)
872- h = hash (get_isscheduled (sys), h)
873- for s in get_systems (sys)
874- h = hash (s, h)
875- end
876- return h
877- end
878-
879788"""
880789 $(TYPEDSIGNATURES)
881790
0 commit comments