\ Aggregate of BtSet's vandys
only extensions definitions
AgView -> subclass: AgBtSet
\ AgBtSet fetching aggregate result vandys
AgBtSet -> :method @ ( key agbtset -- agset ) ag>list AgSet -> new
{ key list agset } list -> size 0 ?do i list -> @ { btset }
key btset -> @ if agset -> agadd then loop
agset method;
AgBtSet -> :method in? ( key agbtset -- ? ) ag>list { key list }
list -> size 0 ?do i list -> @ { btset }
key btset -> in? if unloop true exit then
loop false method;
\ Aggregate of btlist's... testing vandys
false [if] \ Testing
BtSet -> new constant btl1 BtSet -> new constant btl2
100 1 btl1 -> ! 101 1 btl1 -> ! 200 2 btl1 -> ! 201 2 btl1 -> !
100 1 btl2 -> ! 101 1 btl2 -> ! 200 2 btl2 -> ! 201 2 btl2 -> !
300 3 btl2 -> ! 301 3 btl2 -> !
AgBtSet -> new constant agbt btl1 agbt -> agadd btl2 agbt -> agadd
\ agbt -> free
[then] \ Testing
Class AgBtSet; holds list of BtSet's whose contents we present in aggregate
:method AgBtSet:@ Return an AgSet of the sets matching in all BtSet's
:method AgBtSet:in? Tell if the given key lives anywhere in the aggregate
set of BtSet's