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