org.abora.gold.collection.tables
Class OffsetScruTable
java.lang.Object
|
+--org.abora.gold.java.AboraHeaper
|
+--org.abora.gold.xpp.basic.Heaper
|
+--org.abora.gold.collection.tables.ScruTable
|
+--org.abora.gold.collection.tables.OffsetScruTable
- public class OffsetScruTable
- extends ScruTable
| Fields inherited from class org.abora.gold.xpp.basic.Heaper |
AllBlasts, BecomeMap, GarbageCount, InGC, InitializedClasses, InitializingClasses, LastMemory, NextClientRequestNumber, NotOneElementSignal, PackageTable, PromiseNameTable, StringHashSBoxes |
| Fields inherited from class org.abora.gold.java.AboraHeaper |
ActiveClubs, CurrentAuthor, CurrentBertCanopyCache, CurrentBertCrum, CurrentChunk, CurrentGrandMap, CurrentKeyMaster, CurrentPacker, CurrentSensorCanopyCache, CurrentServer, CurrentSession, CurrentSessions, CurrentTrace, InitialEditClub, InitialOwner, InitialReadClub, InitialSponsor, InsideTransactionFlag |
|
Method Summary |
int |
actualHashForEqual()
See ScruTable::isEqual
|
ImmuTable |
asImmuTable()
Return a side-effect-free snapshot of my current contents.
See ScruSet::asImmuSet.
|
MuTable |
asMuTable()
Return a side-effectable version of the same table.
See ScruSet::asMuSet.
|
CoordinateSpace |
coordinateSpace()
The kind of elements used to index into the table are Positions of this
coordinate space. |
ScruTable |
copy()
A new one whose initial state is my current state, but that doesn't track
changes. |
IntegerVar |
count()
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'. |
XnRegion |
domain()
Return an XuRegion representing a snapshot of the current domain.
'table->domain()->hasMember(p)' iff 'table->fetch(p) !!= NULL'.
|
ScruTable |
emptySize(IntegerVar size)
Return an empty table just like the current one. |
Heaper |
fetch(Position anIndex)
Return the range element at the domain position key. |
boolean |
includesIntKey(IntegerVar aKey)
Unboxed version. |
boolean |
includesKey(Position aKey)
includesKey is used to test for the presence of a key->value pair in the
table. |
Dsp |
innerDsp()
|
ScruTable |
innerTable()
|
Heaper |
intFetch(IntegerVar idx)
Unboxed version. |
boolean |
isEmpty()
Is there anything in the table?
'table->isEmpty()' iff 'table->domain()->isEmpty()'.
|
boolean |
isEqual(Heaper other)
All MuTable subclasses have equality based on identity
(now and forever equal. |
void |
printOn(java.io.PrintWriter aStream)
|
XnRegion |
runAt(Position key)
Return the length of the run starting at position key. |
XnRegion |
runAtInt(IntegerVar anIdx)
Unboxed version. |
TableStepper |
stepper()
implement default argument of NULL
|
TableStepper |
stepper(OrderSpec order)
Return a TableStepper which will enumerate my key->value mappings. |
ScruTable |
subTable(XnRegion encl)
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. |
ScruTable |
transformedBy(Dsp dsp)
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. |
| Methods inherited from class org.abora.gold.collection.tables.ScruTable |
asOrderedCollection, backfollowFrom, contentsEqual, contentsHash, dox, get, intGet, printOnWithSimpleSyntax, printOnWithSyntax, problems, range, theOne |
| Methods inherited from class org.abora.gold.xpp.basic.Heaper |
abstractDeclarationFor, abstractTypeFor, addMethodAttributeToInOf, addPackage, addPackageCategory, allClientProtocolOn, argumentTypesFor, arrow, blast, blast, BLAST, cachePromiseNameTable, cachePromiseNameTableIn, canYouBecome, cast, cleanPromiseClasses, cleanupGarbage, clientClassesDo, clientFunctionsOn, clientMethodsOn, clientProtocol, clientProtocolDo, clientProtocolOn, clientProtocolOn, collectibleClasses, compare, compileClientSubclasses, compileConstantPromiseMethods, compileCreateFromRcvr, compileEQ, compileGeneratedClassMethod, compileGeneratedMethod, compileHook, compilePromise, compilePromiseDefaultMethods, compilePromiseFluidDeclarations, compilePromiseHandlers, compilePromiseMethods, compileRequestCreateMsgInArguments, compileRequestEvaluateMsgInReturningArguments, compileRPCSpecialistEvaluateMsgForReturningArguments, compileSendSelfTo, compileSendSelfToSendHook, compileStubbleMethods, compileSubclassStubbleMethods, computeMangle, computePreorder, constantTypeValue, convert, convertCopyDeclarations, convertDeferredDeclarations, convertProxyDeclarations, convertSubclassCopyDeclarations, convertSubclassDeferredDeclarations, convertSubclassProxyDeclarations, copyReferencesToType, create, create, create, create, create, create, create, create, create, create, createRequestClassArguments, definesProxyMethods, delete, deref, destroy, destruct, destructor, enum, enumFlags, equals, exportName, fetchAttribute, fetchPackage, fetchSuperCategory, fileOutClientProtocol, findCategory, findSenderAndReceiverMethods, findTailInto, flushPromiseNameTable, foo, freezeClientClasses, freezeClientProtocol, freezeStProtocol, frozenClasses, garbageCollect, garbageCollectFrom, gcOpportunity, gcOpportunity, generatedCategory, generatePromiseNames, getCategory, getOrMakePackage, getSuperCategory, handlerSignaturesFrom, hash, hashForEqual, hasProxyMethods, info_clientClasses, info_clientSideClasses, info_promiseClasses, info_stProtocol, inGC, initializedClasses, initializingClasses, initPackages, initStringHashSBoxes, inspectPieces, instanceSize, IntegerVar, isByProxy, isConstructed, isDestructed, isEqualOrSubclassOf, isGenerated, isIntType, isKindOf, isRawType, isUnlocked, linkTimeNonInherited, make, makeClassTable, makeFillTable, makeRequestTable, mangle, markChildren, markCount, markInstances, mayBecome, mayBecomeAnySubclassOf, new1, newX, nonCopyVariables, notWorking, pack, packageClasses, packagingCategory, parseExportName, passe, pointerToStaticMember, pointerToStaticMember, pointerToVirtualMember, preorderMax, preorderNumber, PROBLEM, promiseClass, promiseDefaultValue, promiseName, promiseNameTable, promiseToAbstract, registerPackageCategory, removeGeneratedCode, removeStubbleMethods, removeSubclassGeneratedCode, removeSubclassStubbleMethods, requestProcedure, requestProceduresFrom, returnTypeFor, rootName, scheduleTermination, sendProxyTo, sendSelfTo, serverNameFor, setGC, signal, signals, smalltalkSelector, stClientProtocol, stubbleSelectorTokenReturnsArguments, subclassNonCopyVariables, takeOop, togglePromiseName, togglePromiseOfParse, unimplemented, unmangle, verifyFreeze, wipeStubble |
| Methods inherited from class org.abora.gold.java.AboraHeaper |
asOop, basicInspect, displayString, error, hack, halt, inspect, knownBug, mightNotImplement, REQUIRES, shouldImplement, shouldNotImplement, stubbleForSubclassResponsibility, thingToDo, willNotImplement |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
myTable
protected ScruTable myTable
myDsp
protected Dsp myDsp
OffsetScruTable
public OffsetScruTable(ScruTable table,
Dsp dsp)
coordinateSpace
public CoordinateSpace coordinateSpace()
- Description copied from class:
ScruTable
- 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.
- Overrides:
coordinateSpace in class ScruTable
count
public IntegerVar count()
- Description copied from class:
ScruTable
- 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.
- Overrides:
count in class ScruTable
domain
public XnRegion domain()
- Description copied from class:
ScruTable
- Return an XuRegion representing a snapshot of the current domain.
'table->domain()->hasMember(p)' iff 'table->fetch(p) !!= NULL'.
- Overrides:
domain in class ScruTable
fetch
public Heaper fetch(Position anIndex)
- Description copied from class:
ScruTable
- Return the range element at the domain position key. The routine will return
NULL if the position is not in the table.
- Overrides:
fetch in class ScruTable
intFetch
public Heaper intFetch(IntegerVar idx)
- Description copied from class:
ScruTable
- Unboxed version. See class comment for XuInteger
- Overrides:
intFetch in class ScruTable
subTable
public ScruTable subTable(XnRegion encl)
- Description copied from class:
ScruTable
- 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.
- Overrides:
subTable in class ScruTable
transformedBy
public ScruTable transformedBy(Dsp dsp)
- Description copied from class:
ScruTable
- 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.
- Overrides:
transformedBy in class ScruTable
runAt
public XnRegion runAt(Position key)
- Description copied from class:
ScruTable
- 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.
- Overrides:
runAt in class ScruTable
runAtInt
public XnRegion runAtInt(IntegerVar anIdx)
- Description copied from class:
ScruTable
- Unboxed version. See class comment for XuInteger
- Overrides:
runAtInt in class ScruTable
actualHashForEqual
public int actualHashForEqual()
- Description copied from class:
ScruTable
- See ScruTable::isEqual
- Overrides:
actualHashForEqual in class ScruTable
includesIntKey
public boolean includesIntKey(IntegerVar aKey)
- Description copied from class:
ScruTable
- Unboxed version. See class comment for XuInteger
- Overrides:
includesIntKey in class ScruTable
includesKey
public boolean includesKey(Position aKey)
- Description copied from class:
ScruTable
- 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)'.
- Overrides:
includesKey in class ScruTable
isEmpty
public boolean isEmpty()
- Description copied from class:
ScruTable
- Is there anything in the table?
'table->isEmpty()' iff 'table->domain()->isEmpty()'.
- Overrides:
isEmpty in class ScruTable
isEqual
public boolean isEqual(Heaper other)
- Description copied from class:
ScruTable
- 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.
- Overrides:
isEqual in class ScruTable
printOn
public void printOn(java.io.PrintWriter aStream)
- Overrides:
printOn in class ScruTable
copy
public ScruTable copy()
- Description copied from class:
ScruTable
- 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:
copy in class ScruTable
emptySize
public ScruTable emptySize(IntegerVar size)
- Description copied from class:
ScruTable
- 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).
- Overrides:
emptySize in class ScruTable
asImmuTable
public ImmuTable asImmuTable()
- Description copied from class:
ScruTable
- Return a side-effect-free snapshot of my current contents.
See ScruSet::asImmuSet.
- Overrides:
asImmuTable in class ScruTable
asMuTable
public MuTable asMuTable()
- Description copied from class:
ScruTable
- Return a side-effectable version of the same table.
See ScruSet::asMuSet.
- Overrides:
asMuTable in class ScruTable
stepper
public TableStepper stepper()
- Description copied from class:
ScruTable
- implement default argument of NULL
- Overrides:
stepper in class ScruTable
stepper
public TableStepper stepper(OrderSpec order)
- Description copied from class:
ScruTable
- 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);
});
}
- Overrides:
stepper in class ScruTable
innerDsp
public Dsp innerDsp()
innerTable
public ScruTable innerTable()
Translation - Copyright © 2003 David G Jones. All Rights Reserved.
Original Udanax-Gold - Copyright © 1979-1999 Udanax.com. All rights reserved.