Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 1d042b6

Browse files
vicbmhevery
authored andcommitted
refactor(collection items): Collection items indexes are int
1 parent 6de4f81 commit 1d042b6

File tree

3 files changed

+56
-56
lines changed

3 files changed

+56
-56
lines changed

lib/change_detection/change_detection.dart

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -174,34 +174,34 @@ abstract class ChangedKeyValue<K, V> extends MapKeyValue<K, V> {
174174
* as a list of [CollectionChangeItem]s which contain the item as well as its
175175
* current and previous position in the list.
176176
*/
177-
abstract class CollectionChangeRecord<K, V> {
177+
abstract class CollectionChangeRecord<V> {
178178
/** The underlying iterable object */
179179
Iterable get iterable;
180180

181181
/** A list of [CollectionItem]s which are in the iteration order. */
182-
CollectionItem<K, V> get collectionHead;
182+
CollectionItem<V> get collectionHead;
183183
/** A list of new [AddedItem]s. */
184-
AddedItem<K, V> get additionsHead;
184+
AddedItem<V> get additionsHead;
185185
/** A list of [MovedItem]s. */
186-
MovedItem<K, V> get movesHead;
186+
MovedItem<V> get movesHead;
187187
/** A list of [RemovedItem]s. */
188-
RemovedItem<K, V> get removalsHead;
188+
RemovedItem<V> get removalsHead;
189189

190-
void forEachAddition(void f(AddedItem<K, V> addition));
191-
void forEachMove(void f(MovedItem<K, V> move));
192-
void forEachRemoval(void f(RemovedItem<K, V> removal));
190+
void forEachAddition(void f(AddedItem<V> addition));
191+
void forEachMove(void f(MovedItem<V> move));
192+
void forEachRemoval(void f(RemovedItem<V> removal));
193193
}
194194

195195
/**
196196
* Each changed item in the collection is wrapped in a [CollectionChangeItem],
197197
* which tracks the [item]s [currentKey] and [previousKey] location.
198198
*/
199-
abstract class CollectionChangeItem<K, V> { // TODO(misko): change <K,V> to <V> since K is int.
199+
abstract class CollectionChangeItem<V> {
200200
/** Previous item location in the list or [null] if addition. */
201-
K get previousKey; // TODO(misko): rename to previousIndex
201+
int get previousIndex;
202202

203203
/** Current item location in the list or [null] if removal. */
204-
K get currentKey; // TODO(misko): rename to CurrentIndex
204+
int get currentIndex;
205205

206206
/** The item. */
207207
V get item;
@@ -211,30 +211,30 @@ abstract class CollectionChangeItem<K, V> { // TODO(misko): change <K,V> to <V>
211211
* Used to create a linked list of collection items. These items are always in
212212
* the iteration order of the collection.
213213
*/
214-
abstract class CollectionItem<K, V> extends CollectionChangeItem<K, V> {
215-
CollectionItem<K, V> get nextCollectionItem;
214+
abstract class CollectionItem<V> extends CollectionChangeItem<V> {
215+
CollectionItem<V> get nextCollectionItem;
216216
}
217217

218218
/**
219219
* A linked list of new items added to the collection. These items are always in
220220
* the iteration order of the collection.
221221
*/
222-
abstract class AddedItem<K, V> extends CollectionChangeItem<K, V> {
223-
AddedItem<K, V> get nextAddedItem;
222+
abstract class AddedItem<V> extends CollectionChangeItem<V> {
223+
AddedItem<V> get nextAddedItem;
224224
}
225225

226226
/**
227227
* A linked list of items moved in the collection. These items are always in
228228
* the iteration order of the collection.
229229
*/
230-
abstract class MovedItem<K, V> extends CollectionChangeItem<K, V> {
231-
MovedItem<K, V> get nextMovedItem;
230+
abstract class MovedItem<V> extends CollectionChangeItem<V> {
231+
MovedItem<V> get nextMovedItem;
232232
}
233233

234234
/**
235235
* A linked list of items removed from the collection. These items are always
236236
* in the iteration order of the collection.
237237
*/
238-
abstract class RemovedItem<K, V> extends CollectionChangeItem<K, V> {
239-
RemovedItem<K, V> get nextRemovedItem;
238+
abstract class RemovedItem<V> extends CollectionChangeItem<V> {
239+
RemovedItem<V> get nextRemovedItem;
240240
}

lib/change_detection/dirty_checking_change_detector.dart

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -663,41 +663,41 @@ class KeyValueRecord<K, V> implements KeyValue<K, V>, AddedKeyValue<K, V>,
663663
}
664664

665665

666-
class _CollectionChangeRecord<K, V> implements CollectionChangeRecord<K, V> {
666+
class _CollectionChangeRecord<V> implements CollectionChangeRecord<V> {
667667
Iterable _iterable;
668668
/** Used to keep track of items during moves. */
669669
DuplicateMap _items = new DuplicateMap();
670670

671671
/** Used to keep track of removed items. */
672672
DuplicateMap _removedItems = new DuplicateMap();
673673

674-
ItemRecord<K, V> _collectionHead, _collectionTail;
675-
ItemRecord<K, V> _additionsHead, _additionsTail;
676-
ItemRecord<K, V> _movesHead, _movesTail;
677-
ItemRecord<K, V> _removalsHead, _removalsTail;
674+
ItemRecord<V> _collectionHead, _collectionTail;
675+
ItemRecord<V> _additionsHead, _additionsTail;
676+
ItemRecord<V> _movesHead, _movesTail;
677+
ItemRecord<V> _removalsHead, _removalsTail;
678678

679-
CollectionChangeItem<K, V> get collectionHead => _collectionHead;
680-
CollectionChangeItem<K, V> get additionsHead => _additionsHead;
681-
CollectionChangeItem<K, V> get movesHead => _movesHead;
682-
CollectionChangeItem<K, V> get removalsHead => _removalsHead;
679+
CollectionChangeItem<V> get collectionHead => _collectionHead;
680+
CollectionChangeItem<V> get additionsHead => _additionsHead;
681+
CollectionChangeItem<V> get movesHead => _movesHead;
682+
CollectionChangeItem<V> get removalsHead => _removalsHead;
683683

684-
void forEachAddition(void f(AddedItem<K, V> addition)){
684+
void forEachAddition(void f(AddedItem<V> addition)){
685685
ItemRecord record = _additionsHead;
686686
while(record != null) {
687687
f(record);
688688
record = record._nextAddedRec;
689689
}
690690
}
691691

692-
void forEachMove(void f(MovedItem<K, V> change)) {
692+
void forEachMove(void f(MovedItem<V> change)) {
693693
ItemRecord record = _movesHead;
694694
while(record != null) {
695695
f(record);
696696
record = record._nextMovedRec;
697697
}
698698
}
699699

700-
void forEachRemoval(void f(RemovedItem<K, V> removal)){
700+
void forEachRemoval(void f(RemovedItem<V> removal)){
701701
ItemRecord record = _removalsHead;
702702
while(record != null) {
703703
f(record);
@@ -758,14 +758,14 @@ class _CollectionChangeRecord<K, V> implements CollectionChangeRecord<K, V> {
758758

759759
record = _additionsHead;
760760
while(record != null) {
761-
record.previousKey = record.currentKey;
761+
record.previousIndex = record.currentIndex;
762762
record = record._nextAddedRec;
763763
}
764764
_additionsHead = _additionsTail = null;
765765

766766
record = _movesHead;
767767
while(record != null) {
768-
record.previousKey = record.currentKey;
768+
record.previousIndex = record.currentIndex;
769769
var nextRecord = record._nextMovedRec;
770770
assert((record._nextMovedRec = null) == null);
771771
record = nextRecord;
@@ -857,8 +857,8 @@ class _CollectionChangeRecord<K, V> implements CollectionChangeRecord<K, V> {
857857
ItemRecord reinsertRecord = _removedItems.get(item);
858858
if (reinsertRecord != null) {
859859
record = _collection_reinsertAfter(reinsertRecord, record._prevRec, index);
860-
} else if (record.currentKey != index) {
861-
record.currentKey = index;
860+
} else if (record.currentIndex != index) {
861+
record.currentIndex = index;
862862
_moves_add(record);
863863
}
864864
return record;
@@ -950,7 +950,7 @@ class _CollectionChangeRecord<K, V> implements CollectionChangeRecord<K, V> {
950950
}
951951

952952
_items.put(record);
953-
record.currentKey = index;
953+
record.currentIndex = index;
954954
return record;
955955
}
956956

@@ -994,7 +994,7 @@ class _CollectionChangeRecord<K, V> implements CollectionChangeRecord<K, V> {
994994
}
995995

996996
ItemRecord _removals_add(ItemRecord record) {
997-
record.currentKey = null;
997+
record.currentIndex = null;
998998
_removedItems.put(record);
999999

10001000
if (_removalsTail == null) {
@@ -1049,27 +1049,27 @@ removals: ${removals.join(", ")}'
10491049
}
10501050
}
10511051

1052-
class ItemRecord<K, V> implements CollectionItem<K, V>, AddedItem<K, V>,
1053-
MovedItem<K, V>, RemovedItem<K, V> {
1054-
K previousKey = null;
1055-
K currentKey = null;
1052+
class ItemRecord<V> implements CollectionItem<V>, AddedItem<V>, MovedItem<V>,
1053+
RemovedItem<V> {
1054+
int previousIndex = null;
1055+
int currentIndex = null;
10561056
V item = _INITIAL_;
10571057

1058-
ItemRecord<K, V> _prevRec, _nextRec;
1059-
ItemRecord<K, V> _prevDupRec, _nextDupRec;
1060-
ItemRecord<K, V> _prevRemovedRec, _nextRemovedRec;
1061-
ItemRecord<K, V> _nextAddedRec, _nextMovedRec;
1058+
ItemRecord<V> _prevRec, _nextRec;
1059+
ItemRecord<V> _prevDupRec, _nextDupRec;
1060+
ItemRecord<V> _prevRemovedRec, _nextRemovedRec;
1061+
ItemRecord<V> _nextAddedRec, _nextMovedRec;
10621062

1063-
CollectionItem<K, V> get nextCollectionItem => _nextRec;
1064-
RemovedItem<K, V> get nextRemovedItem => _nextRemovedRec;
1065-
AddedItem<K, V> get nextAddedItem => _nextAddedRec;
1066-
MovedItem<K, V> get nextMovedItem => _nextMovedRec;
1063+
CollectionItem<V> get nextCollectionItem => _nextRec;
1064+
RemovedItem<V> get nextRemovedItem => _nextRemovedRec;
1065+
AddedItem<V> get nextAddedItem => _nextAddedRec;
1066+
MovedItem<V> get nextMovedItem => _nextMovedRec;
10671067

10681068
ItemRecord(this.item);
10691069

1070-
toString() => previousKey == currentKey ?
1071-
'$item' :
1072-
'$item[$previousKey -> $currentKey]';
1070+
String toString() => previousIndex == currentIndex
1071+
? '$item'
1072+
: '$item[$previousIndex -> $currentIndex]';
10731073
}
10741074

10751075
class _DuplicateItemRecordList {
@@ -1107,7 +1107,7 @@ class _DuplicateItemRecordList {
11071107
ItemRecord record = head;
11081108
while(record != null) {
11091109
if (hideIndex == null ||
1110-
hideIndex < record.currentKey && identical(record.item, key)) {
1110+
hideIndex < record.currentIndex && identical(record.item, key)) {
11111111
return record;
11121112
}
11131113
record = record._nextDupRec;

test/change_detection/dirty_checking_change_detector_spec.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ main() => describe('DirtyCheckingChangeDetector', () {
398398

399399
it('should do basic operations', () {
400400
var k1 = 'a';
401-
var r1 = new ItemRecord(k1)..currentKey = 1;
401+
var r1 = new ItemRecord(k1)..currentIndex = 1;
402402
map.put(r1);
403403
expect(map.get(k1, 2)).toEqual(null);
404404
expect(map.get(k1, 1)).toEqual(null);
@@ -409,8 +409,8 @@ main() => describe('DirtyCheckingChangeDetector', () {
409409

410410
it('should do basic operations on duplicate keys', () {
411411
var k1 = 'a';
412-
var r1 = new ItemRecord(k1)..currentKey = 1;
413-
var r2 = new ItemRecord(k1)..currentKey = 2;
412+
var r1 = new ItemRecord(k1)..currentIndex = 1;
413+
var r2 = new ItemRecord(k1)..currentIndex = 2;
414414
map..put(r1)..put(r2);
415415
expect(map.get(k1, 0)).toEqual(r1);
416416
expect(map.get(k1, 1)).toEqual(r2);

0 commit comments

Comments
 (0)