public interface StorageManager
| Modifier and Type | Interface and Description |
|---|---|
static class |
StorageManager.ReferenceKind |
| Modifier and Type | Method and Description |
|---|---|
<T> NotNullLazyValue<T> |
createLazyValue(com.intellij.openapi.util.Computable<T> computable) |
<T> NotNullLazyValue<T> |
createLazyValueWithPostCompute(com.intellij.openapi.util.Computable<T> computable,
com.intellij.util.Consumer<T> postCompute)
postCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between) |
<K,V> MemoizedFunctionToNotNull<K,V> |
createMemoizedFunction(com.intellij.util.Function<K,V> compute,
StorageManager.ReferenceKind valuesReferenceKind)
Given a function compute: K -> V create a memoized version of it that computes a value only once for each key
|
<K,V> MemoizedFunctionToNullable<K,V> |
createMemoizedFunctionWithNullableValues(com.intellij.util.Function<K,V> compute,
StorageManager.ReferenceKind valuesReferenceKind) |
<T> NullableLazyValue<T> |
createNullableLazyValue(com.intellij.openapi.util.Computable<T> computable) |
<T> NullableLazyValue<T> |
createNullableLazyValueWithPostCompute(com.intellij.openapi.util.Computable<T> computable,
com.intellij.util.Consumer<T> postCompute)
postCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between) |
BindingTrace |
createSafeTrace(BindingTrace originalTrace) |
@NotNull <K,V> MemoizedFunctionToNotNull<K,V> createMemoizedFunction(@NotNull com.intellij.util.Function<K,V> compute, @NotNull StorageManager.ReferenceKind valuesReferenceKind)
compute - the function to be memoizedvaluesReferenceKind - how to store the memoized values
NOTE: if compute() has side-effects the WEAK reference kind is dangerous: the side-effects will be repeated if
the value gets collected and then re-computed@NotNull <K,V> MemoizedFunctionToNullable<K,V> createMemoizedFunctionWithNullableValues(@NotNull com.intellij.util.Function<K,V> compute, @NotNull StorageManager.ReferenceKind valuesReferenceKind)
@NotNull <T> NotNullLazyValue<T> createLazyValue(@NotNull com.intellij.openapi.util.Computable<T> computable)
@NotNull <T> NotNullLazyValue<T> createLazyValueWithPostCompute(@NotNull com.intellij.openapi.util.Computable<T> computable, @NotNull com.intellij.util.Consumer<T> postCompute)
postCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between)@NotNull <T> NullableLazyValue<T> createNullableLazyValue(@NotNull com.intellij.openapi.util.Computable<T> computable)
@NotNull <T> NullableLazyValue<T> createNullableLazyValueWithPostCompute(@NotNull com.intellij.openapi.util.Computable<T> computable, @NotNull com.intellij.util.Consumer<T> postCompute)
postCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between)@NotNull BindingTrace createSafeTrace(@NotNull BindingTrace originalTrace)