MCPcopy Create free account
hub / github.com/LFYSec/MScan / AbstractResultHolder

Class AbstractResultHolder

src/main/java/pascal/taie/util/AbstractResultHolder.java:34–80  ·  view source on GitHub ↗

Map-based implementation for ResultHolder.

Source from the content-addressed store, hash-verified

32 * Map-based implementation for {@link ResultHolder}.
33 */
34public abstract class AbstractResultHolder implements ResultHolder {
35
36 /**
37 * Map from analysis ID to the corresponding analysis result.
38 */
39 private final transient Map<String, Object> results = Maps.newHybridMap();
40
41 @Override
42 public <R> void storeResult(String key, R result) {
43 results.put(key, result);
44 }
45
46 @Override
47 public boolean hasResult(String key) {
48 return results.containsKey(key);
49 }
50
51 @Override
52 public <R> R getResult(String key) {
53 return (R) results.get(key);
54 }
55
56 @Override
57 public <R> R getResult(String key, R defaultResult) {
58 return (R) results.getOrDefault(key, defaultResult);
59 }
60
61 @Override
62 public <R> R getResult(String key, Supplier<R> supplier) {
63 return (R) results.computeIfAbsent(key, __ -> supplier.get());
64 }
65
66 @Override
67 public Collection<String> getKeys() {
68 return results.keySet();
69 }
70
71 @Override
72 public void clearResult(String key) {
73 results.remove(key);
74 }
75
76 @Override
77 public void clearAll() {
78 results.clear();
79 }
80}

Callers

nothing calls this directly

Calls 1

newHybridMapMethod · 0.95

Tested by

no test coverage detected