OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:collection'; | 5 import 'dart:collection'; |
6 | 6 |
7 import 'package:collection/collection.dart'; | 7 import 'package:collection/collection.dart'; |
8 | 8 |
9 import 'yaml_node.dart'; | 9 import 'yaml_node.dart'; |
10 | 10 |
11 /// Returns a [Map] that compares its keys based on [deepEquals]. | 11 /// Returns a [Map] that compares its keys based on [deepEquals]. |
12 Map deepEqualsMap() => new HashMap(equals: deepEquals, hashCode: deepHashCode); | 12 Map/*<K, V>*/ deepEqualsMap/*<K, V>*/() => |
| 13 new HashMap(equals: deepEquals, hashCode: deepHashCode); |
13 | 14 |
14 /// Returns whether two objects are structurally equivalent. | 15 /// Returns whether two objects are structurally equivalent. |
15 /// | 16 /// |
16 /// This considers `NaN` values to be equivalent, handles self-referential | 17 /// This considers `NaN` values to be equivalent, handles self-referential |
17 /// structures, and considers [YamlScalar]s to be equal to their values. | 18 /// structures, and considers [YamlScalar]s to be equal to their values. |
18 bool deepEquals(obj1, obj2) => new _DeepEquals().equals(obj1, obj2); | 19 bool deepEquals(obj1, obj2) => new _DeepEquals().equals(obj1, obj2); |
19 | 20 |
20 /// A class that provides access to the list of parent objects used for loop | 21 /// A class that provides access to the list of parent objects used for loop |
21 /// detection. | 22 /// detection. |
22 class _DeepEquals { | 23 class _DeepEquals { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 } else { | 116 } else { |
116 return value.hashCode; | 117 return value.hashCode; |
117 } | 118 } |
118 } finally { | 119 } finally { |
119 parents.removeLast(); | 120 parents.removeLast(); |
120 } | 121 } |
121 } | 122 } |
122 | 123 |
123 return _deepHashCode(obj); | 124 return _deepHashCode(obj); |
124 } | 125 } |
OLD | NEW |