Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/byte_store.dart

Issue 2443013002: Update the API documentations with Paul review comments. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /** 7 /**
8 * Store of bytes associated with string keys. 8 * Store of bytes associated with string keys.
9 * 9 *
10 * Each key must be not longer than 100 characters and consist of only `[a-z]`,
11 * `[0-9]`, `.` and `_` characters. It cannot have the sequence `..` in it.
Paul Berry 2016/10/23 21:10:18 Two other constraints: - the key can't be the lite
12 *
10 * Note that associations are not guaranteed to be persistent. The value 13 * Note that associations are not guaranteed to be persistent. The value
11 * associated with a key can change or become `null` at any point of time. 14 * associated with a key can change or become `null` at any point in time.
12 */ 15 */
13 abstract class ByteStore { 16 abstract class ByteStore {
14 /** 17 /**
15 * Return the bytes associated with the given [key]. 18 * Return the bytes associated with the given [key].
16 * Return `null` if the association does not exist. 19 * Return `null` if the association does not exist.
17 */ 20 */
18 List<int> get(String key); 21 List<int> get(String key);
19 22
20 /** 23 /**
21 * Associate the given [bytes] with the [key]. 24 * Associate the given [bytes] with the [key].
22 */ 25 */
23 void put(String key, List<int> bytes); 26 void put(String key, List<int> bytes);
24 } 27 }
25 28
26 /** 29 /**
27 * [ByteStore] with LRU cache. 30 * A wrapper around [ByteStore] which adds an in-memory LRU cache to it.
31 *
32 * TODO(scheglov) Consider implementing size and/or time eviction policies.
28 */ 33 */
29 class MemoryCachingByteStore implements ByteStore { 34 class MemoryCachingByteStore implements ByteStore {
30 final ByteStore store; 35 final ByteStore store;
31 final int maxEntries; 36 final int maxEntries;
32 37
33 final _map = <String, List<int>>{}; 38 final _map = <String, List<int>>{};
34 final _keys = new LinkedHashSet<String>(); 39 final _keys = new LinkedHashSet<String>();
35 40
36 MemoryCachingByteStore(this.store, this.maxEntries); 41 MemoryCachingByteStore(this.store, this.maxEntries);
37 42
(...skipping 14 matching lines...) Expand all
52 } 57 }
53 58
54 void _evict() { 59 void _evict() {
55 if (_keys.length > maxEntries) { 60 if (_keys.length > maxEntries) {
56 String key = _keys.first; 61 String key = _keys.first;
57 _keys.remove(key); 62 _keys.remove(key);
58 _map.remove(key); 63 _map.remove(key);
59 } 64 }
60 } 65 }
61 } 66 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/analysis/driver.dart » ('j') | pkg/analyzer/lib/src/dart/analysis/driver.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698