public class LockBasedStorageManager extends java.lang.Object implements StorageManager
StorageManager.ReferenceKind| Constructor and Description |
|---|
LockBasedStorageManager() |
| 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) |
public LockBasedStorageManager()
@NotNull public <K,V> MemoizedFunctionToNotNull<K,V> createMemoizedFunction(@NotNull com.intellij.util.Function<K,V> compute, @NotNull StorageManager.ReferenceKind valuesReferenceKind)
StorageManagercreateMemoizedFunction in interface StorageManagercompute - 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 public <K,V> MemoizedFunctionToNullable<K,V> createMemoizedFunctionWithNullableValues(@NotNull com.intellij.util.Function<K,V> compute, @NotNull StorageManager.ReferenceKind valuesReferenceKind)
createMemoizedFunctionWithNullableValues in interface StorageManager@NotNull public <T> NotNullLazyValue<T> createLazyValue(@NotNull com.intellij.openapi.util.Computable<T> computable)
createLazyValue in interface StorageManager@NotNull public <T> NotNullLazyValue<T> createLazyValueWithPostCompute(@NotNull com.intellij.openapi.util.Computable<T> computable, @NotNull com.intellij.util.Consumer<T> postCompute)
StorageManagerpostCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between)createLazyValueWithPostCompute in interface StorageManager@NotNull public <T> NullableLazyValue<T> createNullableLazyValue(@NotNull com.intellij.openapi.util.Computable<T> computable)
createNullableLazyValue in interface StorageManager@NotNull public <T> NullableLazyValue<T> createNullableLazyValueWithPostCompute(@NotNull com.intellij.openapi.util.Computable<T> computable, @NotNull com.intellij.util.Consumer<T> postCompute)
StorageManagerpostCompute is called after the value is computed, but before any other thread sees it (the current thread may
see it in between)createNullableLazyValueWithPostCompute in interface StorageManager@NotNull public BindingTrace createSafeTrace(@NotNull BindingTrace originalTrace)
createSafeTrace in interface StorageManager