org.abora.white.cross
Class CrossOrderSpec

java.lang.Object
  |
  +--org.abora.white.xpp.basic.Heaper
        |
        +--org.abora.white.spaces.basic.OrderSpec
              |
              +--org.abora.white.cross.CrossOrderSpec

public class CrossOrderSpec
extends OrderSpec

myLexOrder lists the lexicographic order in which each dimension should be processed. Every dimension should be listed exactly one, from most significant (at index 0) to least significant.

mySubOrders are indexed by *dimension*, not by lexicographic order. In order to index by lex order, look up the dimension in myLexOrder, and then look up the resulting dimension number in mySubOrders.


Field Summary
protected  PrimIntArray myLexOrder
           
protected  CrossSpace mySpace
           
protected  PtrArray mySubOrders
           
 
Constructor Summary
protected CrossOrderSpec(CrossSpace space, PtrArray subOrders, PrimIntArray lexOrder)
           
protected CrossOrderSpec(Rcvr receiver)
           
 
Method Summary
 int actualHashForEqual()
          Defined by subclasses to produce the value returned by hashForEqual.
 CoordinateSpace coordinateSpace()
          Essential.
static CrossOrderSpec fetchAscending(GenericCrossSpace space, PtrArray subSpaces)
          Only used during construction; must pass the array in explicitly since the space isnt initialized yet
static CrossOrderSpec fetchDescending(GenericCrossSpace space, PtrArray subSpaces)
          Only used during construction; must pass the array in explicitly since the space isnt initialized yet
 boolean follows(Position x, Position y)
          Essential.
 boolean isEqual(Heaper other)
          Return true if the two objects are equal.
 boolean isFullOrder(XnRegion keys)
          Essential.
 PrimIntArray lexOrder()
          Lists the lexicographic order in which each dimension should be processed.
static CrossOrderSpec make(CrossSpace space, PtrArray subOrderings, PrimIntArray lexOrder)
           
 boolean preceeds(XnRegion before, XnRegion after)
          Return true if some position in before is less than or equal to all positions in after.
 void sendSelfTo(Xmtr xmtr)
           
 OrderSpec subOrder(int i)
          The sub OrderSpec used for the given axis.
 PtrArray subOrders()
          The sub OrderSpec used for each axis in the space.
 
Methods inherited from class org.abora.white.spaces.basic.OrderSpec
arrange, compare, followsInt, isFullOrder, reversed
 
Methods inherited from class org.abora.white.xpp.basic.Heaper
destroy, destruct, equals, hashForEqual, printContentsOn, printOn, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

mySpace

protected CrossSpace mySpace

mySubOrders

protected PtrArray mySubOrders

myLexOrder

protected PrimIntArray myLexOrder
Constructor Detail

CrossOrderSpec

protected CrossOrderSpec(CrossSpace space,
                         PtrArray subOrders,
                         PrimIntArray lexOrder)

CrossOrderSpec

protected CrossOrderSpec(Rcvr receiver)
Method Detail

make

public static CrossOrderSpec make(CrossSpace space,
                                  PtrArray subOrderings,
                                  PrimIntArray lexOrder)

fetchAscending

public static CrossOrderSpec fetchAscending(GenericCrossSpace space,
                                            PtrArray subSpaces)
Only used during construction; must pass the array in explicitly since the space isnt initialized yet


fetchDescending

public static CrossOrderSpec fetchDescending(GenericCrossSpace space,
                                             PtrArray subSpaces)
Only used during construction; must pass the array in explicitly since the space isnt initialized yet


coordinateSpace

public CoordinateSpace coordinateSpace()
Description copied from class: OrderSpec
Essential. Like Positions, Dsps, and XuRegions, an OrderSpec is specific to one coordinate space. It is an error to use the generic protocol on objects from different coordinate spaces.

Specified by:
coordinateSpace in class OrderSpec

lexOrder

public PrimIntArray lexOrder()
Lists the lexicographic order in which each dimension should be processed. Every dimension is listed exactly once, from most significant (at index 0) to least significant.


subOrder

public OrderSpec subOrder(int i)
The sub OrderSpec used for the given axis. Note that this is *not* in lex order.


subOrders

public PtrArray subOrders()
The sub OrderSpec used for each axis in the space. Note that this is *not* in lex order, but rather indexed by axis number.


actualHashForEqual

public int actualHashForEqual()
Description copied from class: Heaper
Defined by subclasses to produce the value returned by hashForEqual.

Overrides:
actualHashForEqual in class OrderSpec

follows

public boolean follows(Position x,
                       Position y)
Description copied from class: OrderSpec
Essential. Compare the two and return true if x is known to follow y in the ordering. This message is the 'greater than or equal to' equivalent for this ordering. It must have those properties a mathematician would demand of a '>=' on a partial order: os->follows(a, a) (reflexivity) os->follows(a, b) && os->follows(b, c) implies os->follows(a, c) (transitivity) os->follows(a, b) && os->follows(b, a) implies a->isEqual(b) (what's the name for this?)

Specified by:
follows in class OrderSpec

isEqual

public boolean isEqual(Heaper other)
Description copied from class: Heaper
Return true if the two objects are equal.

Specified by:
isEqual in class OrderSpec

isFullOrder

public boolean isFullOrder(XnRegion keys)
Essential. If this returns TRUE, then I define a full order over all positions in 'keys' (or all positions in the space if 'keys' is NULL). However, if I return FALSE, that doesn't guarantee that I don't define a full ordering. I may happen to define a full ordering without knowing it. A full ordering is one in which for each a, b in keys; either this->follows(a, b) or this->follows(b, a).

Specified by:
isFullOrder in class OrderSpec

preceeds

public boolean preceeds(XnRegion before,
                        XnRegion after)
Return true if some position in before is less than or equal to all positions in after.

Specified by:
preceeds in class OrderSpec

sendSelfTo

public void sendSelfTo(Xmtr xmtr)
Overrides:
sendSelfTo in class OrderSpec


Copyright © 2003 David G Jones. All Rights Reserved.
Original Udanax-Gold - Copyright © 1979-1999 Udanax.com. All rights reserved.