|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
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.MuTable
|
+--org.abora.gold.collection.tables.IntegerTable
|
+--org.abora.gold.collection.tables.MuArray
The class XuArray is intended to model zero-based arrays with integer keys (indices).
This makes them like the array primitive in C and C++. There is an additional constraint,
which is they are to have simple domains. Therefore they should not be constructed with
non-contiguous sections. This is not currently enforced. Given that it is enforced, an
XuArray with count N would have as its domain exactly the integers from 0 to N-1.
There is some controversy over whether XuArray should be a type and enforce this contraint
(by BLASTing if an attempt is made to violate the constraint), or whether XuArray is just
a specialized implementation for when an IntegerTable happens to meet this constraint; in
which case it should "become" a more general implementation when an attempt is made to
violate the constraint (see "Type Safe Become"). In the latter case, XuArray will
probably be made a private class as well. Please give us your opinion.
XuArray provides no additional protocol.
| Field Summary | |
protected static Signal |
MustBeContiguousDomainSignal
|
| Fields inherited from class org.abora.gold.collection.tables.MuTable |
AlreadyInTableSignal, NotInDomainSignal, NullInsertionSignal |
| Fields inherited from class org.abora.gold.collection.tables.ScruTable |
NotInTableSignal, WrongCoordSpaceSignal |
| 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 |
| Constructor Summary | |
MuArray()
|
|
| Method Summary | |
static MuArray |
array()
A new empty XnArray |
static MuArray |
array(Heaper obj0)
A new XnArray initialized with a single element, 'obj0', stored at index 0. |
static MuArray |
array(Heaper obj0,
Heaper obj1)
A new XnArray initialized with a two elements stored at indicies 0 and 1. |
static MuArray |
array(Heaper obj0,
Heaper obj1,
Heaper obj2)
A new XuArray initialized with a three elements stored at indicies 0, 1, and 2. |
static MuArray |
array(Heaper obj0,
Heaper obj1,
Heaper obj2,
Heaper obj3)
A new XuArray initialized with a four elements stored at indicies 0 through 3. |
static TableAccumulator |
arrayAccumulator()
Returns an Accumulator which will produce an XuArray of the elements accumulated into it in order of accumulation. |
static TableAccumulator |
arrayAccumulator(MuArray onArray)
An accumulator which will accumulate by appending elements onto the end of 'onArray'. |
Heaper |
atIntStore(IntegerVar key,
Heaper value)
Unboxed version. |
Heaper |
atStore(Position key,
Heaper value)
Associate value with key, whether or not there is a previous association. Return the old range element if the position was previously occupied, NULL otherwise |
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 key)
Return the range element at the domain position key. |
IntegerVar |
highestIndex()
Given that the table is non-empty, 'intTab->highestIndex()' is equivalent to 'CAST(IntegerRegion,intTab->domain())->upperBound() -1'. |
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. |
Heaper |
intFetch(IntegerVar key)
Unboxed version. |
boolean |
intWipe(IntegerVar anIdx)
Unboxed version. |
boolean |
isEmpty()
Is there anything in the table? 'table->isEmpty()' iff 'table->domain()->isEmpty()'. |
IntegerVar |
lowestIndex()
Given that the table is non-empty, 'intTab->lowestIndex()' is equivalent to 'CAST(IntegerRegion,intTab->domain())->lowerBound()'. |
static Heaper |
make(IntegerVar someSize)
'someSize' is a hint about how big we should expect the array to need to grow. |
static ScruTable |
offsetScruArray(MuArray array,
Dsp dsp)
The resulting ScruTable is a view onto 'array'. |
ScruTable |
offsetSubTableBetween(IntegerVar startIndex,
IntegerVar stopIndex,
IntegerVar firstIndex)
Return a table which contains the elements from start to stop, starting at firstIndex. Zero-based subclasses will blast if firstIndex is non-zero |
XnRegion |
runAt(Position key)
Return the length of the run starting at position key. |
XnRegion |
runAtInt(IntegerVar key)
Unboxed version. |
TableStepper |
stepper(OrderSpec order)
Return a stepper on this table. |
ScruTable |
subTable(XnRegion region)
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 |
subTableBetween(IntegerVar startLoc,
IntegerVar endLoc)
Hack for C++ overloading problem |
Heaper |
theOne()
Iff I contain exactly one range element, return it. |
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. |
boolean |
wipe(Position key)
Remove a key->value association from the table. Do not blast (or do anything else) if the key is not in my current domain. Return TRUE if the association was present and removed, Return FALSE if the association was not there |
void |
wipeAll(XnRegion region)
I 'wipe' from myself all associations whose key is in 'region'. |
| Methods inherited from class org.abora.gold.collection.tables.IntegerTable |
atIntIntroduce, atIntReplace, atIntroduce, atReplace, intRemove, make, make, make, make, make, make, remove |
| Methods inherited from class org.abora.gold.collection.tables.MuTable |
actualHashForEqual, asImmuTable, asMuTable, initTimeNonInherited, introduceAll, introduceAll, introduceAll, isEqual, make, make, problems, removeAll, replaceAll, replaceAll, replaceAll, sendSelfTo, storeAll, storeAll, storeAll, test |
| Methods inherited from class org.abora.gold.collection.tables.ScruTable |
asOrderedCollection, backfollowFrom, contentsEqual, contentsHash, dox, get, intGet, isEqual, printOn, printOnWithSimpleSyntax, printOnWithSyntax, range, stepper |
| 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 |
| Field Detail |
protected static Signal MustBeContiguousDomainSignal
| Constructor Detail |
public MuArray()
| Method Detail |
public Heaper atIntStore(IntegerVar key,
Heaper value)
MuTable
atIntStore in class IntegerTablepublic CoordinateSpace coordinateSpace()
ScruTable
coordinateSpace in class IntegerTablepublic IntegerVar count()
ScruTable
count in class IntegerTablepublic XnRegion domain()
ScruTable
domain in class IntegerTablepublic IntegerVar highestIndex()
IntegerTable
highestIndex in class IntegerTablepublic Heaper intFetch(IntegerVar key)
ScruTable
intFetch in class IntegerTablepublic boolean intWipe(IntegerVar anIdx)
MuTable
intWipe in class IntegerTablepublic IntegerVar lowestIndex()
IntegerTable
lowestIndex in class IntegerTable
public ScruTable offsetSubTableBetween(IntegerVar startIndex,
IntegerVar stopIndex,
IntegerVar firstIndex)
offsetSubTableBetween in class IntegerTablepublic ScruTable subTable(XnRegion region)
ScruTable
subTable in class IntegerTable
public ScruTable subTableBetween(IntegerVar startLoc,
IntegerVar endLoc)
IntegerTable
subTableBetween in class IntegerTablepublic ScruTable transformedBy(Dsp dsp)
ScruTable
transformedBy in class ScruTablepublic ScruTable copy()
ScruTable
copy in class IntegerTablepublic ScruTable emptySize(IntegerVar size)
ScruTable
emptySize in class IntegerTablepublic boolean includesIntKey(IntegerVar aKey)
ScruTable
includesIntKey in class IntegerTablepublic boolean isEmpty()
ScruTable
isEmpty in class IntegerTablepublic XnRegion runAtInt(IntegerVar key)
ScruTable
runAtInt in class IntegerTablepublic TableStepper stepper(OrderSpec order)
stepper in class IntegerTablepublic Heaper theOne()
ScruTable
theOne in class ScruTablepublic void wipeAll(XnRegion region)
wipeAll in class MuTable
public Heaper atStore(Position key,
Heaper value)
MuTable
atStore in class IntegerTablepublic Heaper fetch(Position key)
ScruTable
fetch in class IntegerTablepublic boolean includesKey(Position aKey)
ScruTable
includesKey in class IntegerTablepublic XnRegion runAt(Position key)
ScruTable
runAt in class IntegerTablepublic boolean wipe(Position key)
MuTable
wipe in class IntegerTablepublic static MuArray array()
public static MuArray array(Heaper obj0)
public static MuArray array(Heaper obj0,
Heaper obj1)
public static MuArray array(Heaper obj0,
Heaper obj1,
Heaper obj2)
public static MuArray array(Heaper obj0,
Heaper obj1,
Heaper obj2,
Heaper obj3)
public static TableAccumulator arrayAccumulator()
public static TableAccumulator arrayAccumulator(MuArray onArray)
public static Heaper make(IntegerVar someSize)
public static ScruTable offsetScruArray(MuArray array,
Dsp dsp)
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||