Skip to content

Commit 37cb7f6

Browse files
committed
Publish website
1 parent 0ae66c8 commit 37cb7f6

File tree

3 files changed

+176
-174
lines changed

3 files changed

+176
-174
lines changed

api/src-html/arez/component/internal/MemoizeCache.Function.html

Lines changed: 87 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -276,92 +276,93 @@
276276
<span class="source-line-no">263</span><span id="line-263"> private ComputableValue&lt;T&gt; createComputableValue( @Nonnull final Object... args )</span>
277277
<span class="source-line-no">264</span><span id="line-264"> {</span>
278278
<span class="source-line-no">265</span><span id="line-265"> final Component component = Arez.areNativeComponentsEnabled() ? _component : null;</span>
279-
<span class="source-line-no">266</span><span id="line-266"> final String name = Arez.areNamesEnabled() ? _name + "." + _nextIndex++ : null;</span>
280-
<span class="source-line-no">267</span><span id="line-267"> final SafeFunction&lt;T&gt; function = () -&gt; {</span>
281-
<span class="source-line-no">268</span><span id="line-268"> Arez.context().registerHook( "$MC$", null, () -&gt; disposeComputableValue( args ) );</span>
282-
<span class="source-line-no">269</span><span id="line-269"> return _function.call( args );</span>
283-
<span class="source-line-no">270</span><span id="line-270"> };</span>
284-
<span class="source-line-no">271</span><span id="line-271"> final ComputableValue&lt;T&gt; computable = getContext().computable( component, name, function, _flags );</span>
285-
<span class="source-line-no">272</span><span id="line-272"> for ( final Object arg : args )</span>
286-
<span class="source-line-no">273</span><span id="line-273"> {</span>
287-
<span class="source-line-no">274</span><span id="line-274"> if ( arg instanceof DisposeNotifier )</span>
288-
<span class="source-line-no">275</span><span id="line-275"> {</span>
289-
<span class="source-line-no">276</span><span id="line-276"> DisposeNotifier.asDisposeNotifier( arg ).addOnDisposeListener( "MemoizeCache", computable::dispose );</span>
290-
<span class="source-line-no">277</span><span id="line-277"> }</span>
291-
<span class="source-line-no">278</span><span id="line-278"> }</span>
292-
<span class="source-line-no">279</span><span id="line-279"> return computable;</span>
293-
<span class="source-line-no">280</span><span id="line-280"> }</span>
294-
<span class="source-line-no">281</span><span id="line-281"></span>
295-
<span class="source-line-no">282</span><span id="line-282"> /**</span>
296-
<span class="source-line-no">283</span><span id="line-283"> * Method invoked to dispose memoized value.</span>
297-
<span class="source-line-no">284</span><span id="line-284"> * This is called from deactivate hook so there should always by a cached value present</span>
298-
<span class="source-line-no">285</span><span id="line-285"> * and thus we never check for missing elements in chain.</span>
299-
<span class="source-line-no">286</span><span id="line-286"> *</span>
300-
<span class="source-line-no">287</span><span id="line-287"> * @param args the arguments originally passed to the memoized function.</span>
301-
<span class="source-line-no">288</span><span id="line-288"> */</span>
302-
<span class="source-line-no">289</span><span id="line-289"> @SuppressWarnings( "unchecked" )</span>
303-
<span class="source-line-no">290</span><span id="line-290"> void disposeComputableValue( @Nonnull final Object... args )</span>
304-
<span class="source-line-no">291</span><span id="line-291"> {</span>
305-
<span class="source-line-no">292</span><span id="line-292"> if ( Arez.shouldCheckInvariants() )</span>
306-
<span class="source-line-no">293</span><span id="line-293"> {</span>
307-
<span class="source-line-no">294</span><span id="line-294"> invariant( () -&gt; args.length == _argCount,</span>
308-
<span class="source-line-no">295</span><span id="line-295"> () -&gt; "Arez-0163: MemoizeCache.disposeComputableValue called with " + args.length +</span>
309-
<span class="source-line-no">296</span><span id="line-296"> " argument(s) but expected " + _argCount + " argument(s)." );</span>
310-
<span class="source-line-no">297</span><span id="line-297"> }</span>
311-
<span class="source-line-no">298</span><span id="line-298"> if ( _disposed )</span>
312-
<span class="source-line-no">299</span><span id="line-299"> {</span>
313-
<span class="source-line-no">300</span><span id="line-300"> return;</span>
314-
<span class="source-line-no">301</span><span id="line-301"> }</span>
315-
<span class="source-line-no">302</span><span id="line-302"> final Stack&lt;Map&lt;Object, ?&gt;&gt; stack = new Stack&lt;&gt;();</span>
316-
<span class="source-line-no">303</span><span id="line-303"> stack.push( _cache );</span>
317-
<span class="source-line-no">304</span><span id="line-304"> final int size = args.length - 1;</span>
318-
<span class="source-line-no">305</span><span id="line-305"> for ( int i = 0; i &lt; size; i++ )</span>
319-
<span class="source-line-no">306</span><span id="line-306"> {</span>
320-
<span class="source-line-no">307</span><span id="line-307"> stack.push( (Map&lt;Object, ?&gt;) stack.peek().get( args[ i ] ) );</span>
321-
<span class="source-line-no">308</span><span id="line-308"> }</span>
322-
<span class="source-line-no">309</span><span id="line-309"> final ComputableValue&lt;T&gt; computableValue = (ComputableValue&lt;T&gt;) stack.peek().remove( args[ size ] );</span>
323-
<span class="source-line-no">310</span><span id="line-310"> if ( Arez.shouldCheckInvariants() )</span>
324-
<span class="source-line-no">311</span><span id="line-311"> {</span>
325-
<span class="source-line-no">312</span><span id="line-312"> invariant( () -&gt; null != computableValue,</span>
326-
<span class="source-line-no">313</span><span id="line-313"> () -&gt; "Arez-0193: MemoizeCache.disposeComputableValue called with args " + Arrays.asList( args ) +</span>
327-
<span class="source-line-no">314</span><span id="line-314"> " but unable to locate corresponding ComputableValue." );</span>
328-
<span class="source-line-no">315</span><span id="line-315"> }</span>
329-
<span class="source-line-no">316</span><span id="line-316"> assert null != computableValue;</span>
330-
<span class="source-line-no">317</span><span id="line-317"> getContext().task( Arez.areNamesEnabled() ? computableValue.getName() + ".dispose" : null,</span>
331-
<span class="source-line-no">318</span><span id="line-318"> computableValue::dispose,</span>
332-
<span class="source-line-no">319</span><span id="line-319"> Task.Flags.PRIORITY_HIGHEST | Task.Flags.DISPOSE_ON_COMPLETE | Task.Flags.NO_WRAP_TASK );</span>
333-
<span class="source-line-no">320</span><span id="line-320"> while ( stack.size() &gt; 1 )</span>
334-
<span class="source-line-no">321</span><span id="line-321"> {</span>
335-
<span class="source-line-no">322</span><span id="line-322"> final Map&lt;Object, ?&gt; map = stack.pop();</span>
336-
<span class="source-line-no">323</span><span id="line-323"> if ( map.isEmpty() )</span>
337-
<span class="source-line-no">324</span><span id="line-324"> {</span>
338-
<span class="source-line-no">325</span><span id="line-325"> stack.peek().remove( args[ stack.size() - 1 ] );</span>
339-
<span class="source-line-no">326</span><span id="line-326"> }</span>
340-
<span class="source-line-no">327</span><span id="line-327"> else</span>
341-
<span class="source-line-no">328</span><span id="line-328"> {</span>
342-
<span class="source-line-no">329</span><span id="line-329"> return;</span>
343-
<span class="source-line-no">330</span><span id="line-330"> }</span>
344-
<span class="source-line-no">331</span><span id="line-331"> }</span>
345-
<span class="source-line-no">332</span><span id="line-332"> }</span>
346-
<span class="source-line-no">333</span><span id="line-333"></span>
347-
<span class="source-line-no">334</span><span id="line-334"> @OmitSymbol</span>
348-
<span class="source-line-no">335</span><span id="line-335"> Map&lt;Object, Object&gt; getCache()</span>
349-
<span class="source-line-no">336</span><span id="line-336"> {</span>
350-
<span class="source-line-no">337</span><span id="line-337"> return _cache;</span>
351-
<span class="source-line-no">338</span><span id="line-338"> }</span>
352-
<span class="source-line-no">339</span><span id="line-339"></span>
353-
<span class="source-line-no">340</span><span id="line-340"> @OmitSymbol</span>
354-
<span class="source-line-no">341</span><span id="line-341"> int getNextIndex()</span>
355-
<span class="source-line-no">342</span><span id="line-342"> {</span>
356-
<span class="source-line-no">343</span><span id="line-343"> return _nextIndex;</span>
357-
<span class="source-line-no">344</span><span id="line-344"> }</span>
358-
<span class="source-line-no">345</span><span id="line-345"></span>
359-
<span class="source-line-no">346</span><span id="line-346"> @OmitSymbol</span>
360-
<span class="source-line-no">347</span><span id="line-347"> int getFlags()</span>
361-
<span class="source-line-no">348</span><span id="line-348"> {</span>
362-
<span class="source-line-no">349</span><span id="line-349"> return _flags;</span>
363-
<span class="source-line-no">350</span><span id="line-350"> }</span>
364-
<span class="source-line-no">351</span><span id="line-351">}</span>
279+
<span class="source-line-no">266</span><span id="line-266"> final int id = _nextIndex++;</span>
280+
<span class="source-line-no">267</span><span id="line-267"> final String name = Arez.areNamesEnabled() ? _name + "." + id : null;</span>
281+
<span class="source-line-no">268</span><span id="line-268"> final SafeFunction&lt;T&gt; function = () -&gt; {</span>
282+
<span class="source-line-no">269</span><span id="line-269"> Arez.context().registerHook( "$MC$", null, () -&gt; disposeComputableValue( args ) );</span>
283+
<span class="source-line-no">270</span><span id="line-270"> return _function.call( args );</span>
284+
<span class="source-line-no">271</span><span id="line-271"> };</span>
285+
<span class="source-line-no">272</span><span id="line-272"> final ComputableValue&lt;T&gt; computable = getContext().computable( component, name, function, _flags );</span>
286+
<span class="source-line-no">273</span><span id="line-273"> for ( final Object arg : args )</span>
287+
<span class="source-line-no">274</span><span id="line-274"> {</span>
288+
<span class="source-line-no">275</span><span id="line-275"> if ( arg instanceof DisposeNotifier )</span>
289+
<span class="source-line-no">276</span><span id="line-276"> {</span>
290+
<span class="source-line-no">277</span><span id="line-277"> DisposeNotifier.asDisposeNotifier( arg ).addOnDisposeListener( "MemoizeCache" + id, computable::dispose );</span>
291+
<span class="source-line-no">278</span><span id="line-278"> }</span>
292+
<span class="source-line-no">279</span><span id="line-279"> }</span>
293+
<span class="source-line-no">280</span><span id="line-280"> return computable;</span>
294+
<span class="source-line-no">281</span><span id="line-281"> }</span>
295+
<span class="source-line-no">282</span><span id="line-282"></span>
296+
<span class="source-line-no">283</span><span id="line-283"> /**</span>
297+
<span class="source-line-no">284</span><span id="line-284"> * Method invoked to dispose memoized value.</span>
298+
<span class="source-line-no">285</span><span id="line-285"> * This is called from deactivate hook so there should always by a cached value present</span>
299+
<span class="source-line-no">286</span><span id="line-286"> * and thus we never check for missing elements in chain.</span>
300+
<span class="source-line-no">287</span><span id="line-287"> *</span>
301+
<span class="source-line-no">288</span><span id="line-288"> * @param args the arguments originally passed to the memoized function.</span>
302+
<span class="source-line-no">289</span><span id="line-289"> */</span>
303+
<span class="source-line-no">290</span><span id="line-290"> @SuppressWarnings( "unchecked" )</span>
304+
<span class="source-line-no">291</span><span id="line-291"> void disposeComputableValue( @Nonnull final Object... args )</span>
305+
<span class="source-line-no">292</span><span id="line-292"> {</span>
306+
<span class="source-line-no">293</span><span id="line-293"> if ( Arez.shouldCheckInvariants() )</span>
307+
<span class="source-line-no">294</span><span id="line-294"> {</span>
308+
<span class="source-line-no">295</span><span id="line-295"> invariant( () -&gt; args.length == _argCount,</span>
309+
<span class="source-line-no">296</span><span id="line-296"> () -&gt; "Arez-0163: MemoizeCache.disposeComputableValue called with " + args.length +</span>
310+
<span class="source-line-no">297</span><span id="line-297"> " argument(s) but expected " + _argCount + " argument(s)." );</span>
311+
<span class="source-line-no">298</span><span id="line-298"> }</span>
312+
<span class="source-line-no">299</span><span id="line-299"> if ( _disposed )</span>
313+
<span class="source-line-no">300</span><span id="line-300"> {</span>
314+
<span class="source-line-no">301</span><span id="line-301"> return;</span>
315+
<span class="source-line-no">302</span><span id="line-302"> }</span>
316+
<span class="source-line-no">303</span><span id="line-303"> final Stack&lt;Map&lt;Object, ?&gt;&gt; stack = new Stack&lt;&gt;();</span>
317+
<span class="source-line-no">304</span><span id="line-304"> stack.push( _cache );</span>
318+
<span class="source-line-no">305</span><span id="line-305"> final int size = args.length - 1;</span>
319+
<span class="source-line-no">306</span><span id="line-306"> for ( int i = 0; i &lt; size; i++ )</span>
320+
<span class="source-line-no">307</span><span id="line-307"> {</span>
321+
<span class="source-line-no">308</span><span id="line-308"> stack.push( (Map&lt;Object, ?&gt;) stack.peek().get( args[ i ] ) );</span>
322+
<span class="source-line-no">309</span><span id="line-309"> }</span>
323+
<span class="source-line-no">310</span><span id="line-310"> final ComputableValue&lt;T&gt; computableValue = (ComputableValue&lt;T&gt;) stack.peek().remove( args[ size ] );</span>
324+
<span class="source-line-no">311</span><span id="line-311"> if ( Arez.shouldCheckInvariants() )</span>
325+
<span class="source-line-no">312</span><span id="line-312"> {</span>
326+
<span class="source-line-no">313</span><span id="line-313"> invariant( () -&gt; null != computableValue,</span>
327+
<span class="source-line-no">314</span><span id="line-314"> () -&gt; "Arez-0193: MemoizeCache.disposeComputableValue called with args " + Arrays.asList( args ) +</span>
328+
<span class="source-line-no">315</span><span id="line-315"> " but unable to locate corresponding ComputableValue." );</span>
329+
<span class="source-line-no">316</span><span id="line-316"> }</span>
330+
<span class="source-line-no">317</span><span id="line-317"> assert null != computableValue;</span>
331+
<span class="source-line-no">318</span><span id="line-318"> getContext().task( Arez.areNamesEnabled() ? computableValue.getName() + ".dispose" : null,</span>
332+
<span class="source-line-no">319</span><span id="line-319"> computableValue::dispose,</span>
333+
<span class="source-line-no">320</span><span id="line-320"> Task.Flags.PRIORITY_HIGHEST | Task.Flags.DISPOSE_ON_COMPLETE | Task.Flags.NO_WRAP_TASK );</span>
334+
<span class="source-line-no">321</span><span id="line-321"> while ( stack.size() &gt; 1 )</span>
335+
<span class="source-line-no">322</span><span id="line-322"> {</span>
336+
<span class="source-line-no">323</span><span id="line-323"> final Map&lt;Object, ?&gt; map = stack.pop();</span>
337+
<span class="source-line-no">324</span><span id="line-324"> if ( map.isEmpty() )</span>
338+
<span class="source-line-no">325</span><span id="line-325"> {</span>
339+
<span class="source-line-no">326</span><span id="line-326"> stack.peek().remove( args[ stack.size() - 1 ] );</span>
340+
<span class="source-line-no">327</span><span id="line-327"> }</span>
341+
<span class="source-line-no">328</span><span id="line-328"> else</span>
342+
<span class="source-line-no">329</span><span id="line-329"> {</span>
343+
<span class="source-line-no">330</span><span id="line-330"> return;</span>
344+
<span class="source-line-no">331</span><span id="line-331"> }</span>
345+
<span class="source-line-no">332</span><span id="line-332"> }</span>
346+
<span class="source-line-no">333</span><span id="line-333"> }</span>
347+
<span class="source-line-no">334</span><span id="line-334"></span>
348+
<span class="source-line-no">335</span><span id="line-335"> @OmitSymbol</span>
349+
<span class="source-line-no">336</span><span id="line-336"> Map&lt;Object, Object&gt; getCache()</span>
350+
<span class="source-line-no">337</span><span id="line-337"> {</span>
351+
<span class="source-line-no">338</span><span id="line-338"> return _cache;</span>
352+
<span class="source-line-no">339</span><span id="line-339"> }</span>
353+
<span class="source-line-no">340</span><span id="line-340"></span>
354+
<span class="source-line-no">341</span><span id="line-341"> @OmitSymbol</span>
355+
<span class="source-line-no">342</span><span id="line-342"> int getNextIndex()</span>
356+
<span class="source-line-no">343</span><span id="line-343"> {</span>
357+
<span class="source-line-no">344</span><span id="line-344"> return _nextIndex;</span>
358+
<span class="source-line-no">345</span><span id="line-345"> }</span>
359+
<span class="source-line-no">346</span><span id="line-346"></span>
360+
<span class="source-line-no">347</span><span id="line-347"> @OmitSymbol</span>
361+
<span class="source-line-no">348</span><span id="line-348"> int getFlags()</span>
362+
<span class="source-line-no">349</span><span id="line-349"> {</span>
363+
<span class="source-line-no">350</span><span id="line-350"> return _flags;</span>
364+
<span class="source-line-no">351</span><span id="line-351"> }</span>
365+
<span class="source-line-no">352</span><span id="line-352">}</span>
365366

366367

367368

0 commit comments

Comments
 (0)