See ScruTable::isEqual
Overridden by: ImmuTable OffsetImmuTable IntegerScruTable MuTable OffsetScruArray OffsetScruTable
Return a side-effect-free snapshot of my current contents.
See ScruSet::asImmuSet.
Overridden by: ImmuTable IntegerScruTable MuTable GrandHashTable OffsetScruArray OffsetScruTable
Return a side-effectable version of the same table.
See ScruSet::asMuSet.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable OffsetScruArray OffsetScruTable
convert for use with Smalltalk MVC stuff
Return the subTable with the domain of all positions whose values are equal to
value. Defined by analogy with corresponding Waldo-level operation.
Returns whether the two ScruTables have exactly the same mapping from
keys to values at the moment. 'a->contentsEqual(b)' is equivalent to
'a->asImmuTable()->isEqual(b->asImmuTable())'. See ScruTable::contentsEqual
Has the same relationship to contentsEqual that hashForEqual has to isEqual.
Ie., if 'a->contentsEqual (b)', then 'a->contentsHash() == b->contentsHash()'.
The same complex caveats apply as to the stability and portability of the
hash values as apply for hashForEqual. See ScruSet contentsHash.
The kind of elements used to index into the table are Positions of this
coordinate space. Therefore, the domain of this table is an XuRegion in this
coordinate space.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
A new one whose initial state is my current state, but that doesn't track
changes. Note that there is no implication that these can be 'destroy'ed
separately, because (for example) an ImmuTable just returns itself
Overrides: Object
Overridden by: ImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Return the number of domain elements, which is to say, the number of associations.
'table->count()' should be equivalent to 'table->domain()->count()'.
Used to say: 'Return the number of range elements'. This seems clearly wrong.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Overrides: Heaper
Overridden by: MuTable HashTable IntegerTable ActualArray OberIntegerTable ActualIntegerTable
Return an XuRegion representing a snapshot of the current domain.
'table->domain()->hasMember(p)' iff 'table->fetch(p) != nil'.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Return an empty table just like the current one. The 'size' argument is a hint
about how big the count of the table will probably become (so that the new
table can be prepared to grow to that size efficiently).
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Return the range element at the domain position key. The routine will return
nil if the position is not in the table.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Return the range element at the domain position key. BLAST if the position is
not in the table.
Unboxed version. See class comment for XuInteger
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable IntegerTable MuArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
includesKey is used to test for the presence of a key->value pair in the
table. This routine returns true if there is a value present at the specified
key, and false otherwise.
'table->includesKey(p)' iff 'table->domain()->hasMember(p)'.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Unboxed version. See class comment for XuInteger
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Unboxed version. See class comment for XuInteger
Is there anything in the table?
'table->isEmpty()' iff 'table->domain()->isEmpty()'.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
All MuTable subclasses have equality based on identity
(now and forever equal. Many ScruTable subclasses will
represent an aspect of another table. Therefore they have
hashForEqual and isEqual: based on both their contained
table, and the aspect that they represent. Thus, two similar
views onto the same MuTable are now (and forever) equal.
The hashForEqual: must use exactly the same aspects for
the hash as get used for isEqual:. ImmuTables all use
contentBased comparison operations.
Overridden by: ImmuTable IntegerScruTable MuTable OffsetScruArray OffsetScruTable
Overrides: Object
Overridden by: ImmuTableOnMu OffsetImmuTable GrandHashTable ActualHashTable ActualArray ActualIntegerTable OffsetScruArray OffsetScruTable
A snapshot of the current range elements of the table collected together into
an ImmuSet.
Return the length of the run starting at position key. A run is defined as a
contiguous (charming) sequence of domain positions mapping to equal (isEqual)
objects. Charming is defined as: Given a charming region R, for all a,c which
are elements of R and a >= b >= c, b is an element of R. Where '>=' is
according to the 'isGE' message.
NOTE: We may retire the above definition of charming. The possible changes
will only effect spaces which aren't fully ordered. OrderedRegions,
TreeRegions, and IntegerRegions will be unaffected, as any future definition of
'runAt' will be equivalent for them.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Unboxed version. See class comment for XuInteger
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
implement default argument of nil
Overridden by: OffsetImmuTable OffsetScruArray OffsetScruTable
Return a TableStepper which will enumerate my key->value mappings. The
Stepper component of the TableStepper protocol will just enumerate my values
(as that is what I'm a container *of*--the keys are simply how I organize my
contents). TableStepper provides additional protocol to ascetain the current
key. See TableStepper and XuRegion::stepper. The TableStepper I produce given
an order must enumerate keys according to the same rules which specify how
XuRegion::stepper must enumerate positions. I am not asserting that the actual
orders are the same, only that the correctness criteria on the allowable orders
are the same.
Keeping in mind that we are talking about equivalence of specification
and not equivalence of particular behavior, the following two statements
are equivalent:
{
SPTR(TableStepper) stomp = table->stepper(o);
SPTR(Position) key;
FOR_EACH(Heaper,val,stomp, {
key = stomp->key();
doSomethingWith(key, val);
});
}
and
{
SPTR(Heaper) val;
SPTR(ImmuTable) snapShot = table->asImmuTable();
FOR_EACH(Position,key,(snapShot->domain()->stepper(o)), {
val = snapShot->get (key);
doSomethingWith(key, val);
});
}
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Return a table which contains only the intersection of this table's domain and
the domain specified by 'region'.
table->subTable(r)->domain()->isEqual( table->domain()->intersect(r) ).
It is unspecified whether the resulting table starts as a snapshot of a subset of
me, after which we go our own ways; or whether the resulting table is a view
onto a subset of me, such that changes to me are also visible to him. Of
course, subclasses may specify more. If you want to ensure snapshot behavior,
do 'table->subTable(r)->asImmuTable()'.
NOTE: In the future we may specify snapshot behavior or we may specify view
behavior. As a client this shouldn't effect you. However, if you implement a
new kind of ScruTable, please let us know. Also, if you have an opinion as to
which way you'd like the specification tightened up, please tell us.
Overridden by: ImmuTable ImmuTableOnMu OffsetImmuTable IntegerScruTable MuTable GrandHashTable HashTable ActualHashTable IntegerTable MuArray ActualArray OberIntegerTable ActualIntegerTable COWIntegerTable OffsetScruArray OffsetScruTable
Iff I contain exactly one range element, return it. Otherwise BLAST.
The idea for this message is taken from the THE function of ONTIC
(reference McAllester)
Overridden by: ImmuTableOnMu HashTable ActualHashTable MuArray ActualIntegerTable
Return a ScruTable with the domain of the receiver transformed by the Dsp.
'table->transformedBy(d)->fetch(p)' is equivalent to
'table->fetch(d->of(p))'.
See ScruTable::subTable for caveats regarding whether we return a snapshot
or a view. All the same caveats apply.
Overridden by: ImmuTable OffsetImmuTable MuArray OffsetScruArray OffsetScruTable