org.rubato.math.yoneda
Class LimitDenotator

java.lang.Object
  extended by org.rubato.math.yoneda.AbstractConnectableYoneda
      extended by org.rubato.math.yoneda.Denotator
          extended by org.rubato.math.yoneda.LimitDenotator
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<Denotator>, java.lang.Iterable<Denotator>, Connectable, FactorDenotator, Yoneda

public final class LimitDenotator
extends Denotator
implements FactorDenotator

Limit denotator class.

Author:
Gérard Milmeister, Stefan Müller, Stefan Göller
See Also:
Serialized Form

Field Summary
 
Fields inherited from interface org.rubato.math.yoneda.Yoneda
COLIMIT, LIMIT, LIST, POWER, SIMPLE
 
Constructor Summary
LimitDenotator(NameDenotator name, LimitForm form, java.util.List<Denotator> coordinates)
          Creates a limit denotator.
LimitDenotator(NameDenotator name, Module address, LimitForm form, java.util.List<Denotator> coordinates)
          Creates a limit denotator.
 
Method Summary
 boolean _is_valid()
          Returns true iff this denotator is correctly built.
static LimitDenotator _make_unsafe(NameDenotator name, Module address, LimitForm form, java.util.List<Denotator> denoList)
          Creates a new limit denotator without checking whatsoever.
 boolean appendFactor(Denotator d)
          Appends, if possible, the factor d.
 Denotator at(ModuleElement element)
          If not null-addressed returns a new denotator evaluated at address element.
 Denotator changeAddress(Module newAddress)
          Makes an address change.
 Denotator changeAddress(ModuleMorphism morphism)
          Makes an address change using a module morphism.
 boolean check()
          Returns true iff this denotator is consistent.
 int compareTo(Denotator object)
           
 int compareTo(LimitDenotator other)
          Compares two limit denotators.
 LimitDenotator copy()
          Returns a deep copy of this denotator.
 boolean equals(LimitDenotator other)
          Checks denotators of the same type for equality.
 boolean equals(java.lang.Object object)
          Checks for equality.
static LimitDenotator fromXML(XMLReader reader, org.w3c.dom.Element element)
          Reads XML representation from reader starting with element.
 Denotator getFactor(int i)
          Returns the factor in position i.
 Denotator getFactor(java.lang.String label)
          Returns the factor with the given label.
 int getFactorCount()
          Returns the number of coordinates of the denotator.
 java.util.List<Denotator> getFactors()
          Returns a list of the coordinates of the denotator.
 ListMorphismMap getFrameListMorphismMap()
           
 LimitForm getLimitForm()
          Returns the limit form of this denotator.
 ListMorphismMap getListMorphismMap()
           
 int getType()
          Returns the type of the denotator.
 boolean isConstant()
          Returns true iff this is ultimately a constant denotator, regardless of its address.
 java.util.Iterator<Denotator> iterator()
          Returns an iterator over the coordinates.
 Denotator namedCopy(NameDenotator name)
          Makes a shallow copy this denotator and gives it the specified name.
 void setFactor(int i, Denotator d)
          Sets the factor d in position i.
 void toXML(XMLWriter writer)
           
 
Methods inherited from class org.rubato.math.yoneda.Denotator
atNull, clone, display, display, formEquals, get, getAddress, getCoordinate, getDependencies, getElement, getForm, getFrameCoordinate, getModuleMorphism, getName, getNameString, hasForm, hashCode, map, nameCompareTo, nameEquals, nullAddressed, replace, resolveReferences, setName, setNameString, toString
 
Methods inherited from class org.rubato.math.yoneda.AbstractConnectableYoneda
getConnector, setConnector
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LimitDenotator

public LimitDenotator(NameDenotator name,
                      Module address,
                      LimitForm form,
                      java.util.List<Denotator> coordinates)
               throws RubatoException
Creates a limit denotator.

Parameters:
name - the name of the denotator
address - the address this denotator must have
form - the form of this denotator
coordinates - the factors of this limit denotator
Throws:
RubatoException

LimitDenotator

public LimitDenotator(NameDenotator name,
                      LimitForm form,
                      java.util.List<Denotator> coordinates)
               throws RubatoException
Creates a limit denotator. The address is inferred from the addresses of the factors.

Parameters:
name - the name of the denotator
form - the form of this denotator
coordinates - the factors of this limit denotator
Throws:
RubatoException
Method Detail

getType

public int getType()
Returns the type of the denotator.

Specified by:
getType in class Denotator
Returns:
type as an integer

namedCopy

public Denotator namedCopy(NameDenotator name)
Description copied from class: Denotator
Makes a shallow copy this denotator and gives it the specified name.

Specified by:
namedCopy in class Denotator

at

public Denotator at(ModuleElement element)
             throws MappingException
If not null-addressed returns a new denotator evaluated at address element. If null-addressed, returns self.

Specified by:
at in class Denotator
Parameters:
element - address
Returns:
evaluated denotator
Throws:
MappingException - if evaluation fails

changeAddress

public Denotator changeAddress(Module newAddress)
Description copied from class: Denotator
Makes an address change.

Specified by:
changeAddress in class Denotator
Parameters:
newAddress - the new address of the denotator
Returns:
a copy of this denotator with the new address or null if address change fails

changeAddress

public Denotator changeAddress(ModuleMorphism morphism)
Description copied from class: Denotator
Makes an address change using a module morphism.

Specified by:
changeAddress in class Denotator
Parameters:
morphism - the address changing morphism
Returns:
a copy of this denotator with the new address or null if address change fails

getLimitForm

public LimitForm getLimitForm()
Returns the limit form of this denotator.


getFactorCount

public int getFactorCount()
Returns the number of coordinates of the denotator.

Specified by:
getFactorCount in interface FactorDenotator
Returns:
number of coordinates

getFactor

public Denotator getFactor(int i)
Returns the factor in position i.

Specified by:
getFactor in interface FactorDenotator
Parameters:
i - factor i denotator

getFactor

public Denotator getFactor(java.lang.String label)
                    throws RubatoException
Returns the factor with the given label.

Throws:
RubatoException

setFactor

public void setFactor(int i,
                      Denotator d)
               throws RubatoException
Sets the factor d in position i. This is a destructive operation; beware of aliasing.

Specified by:
setFactor in interface FactorDenotator
Throws:
RubatoException - if d is not of the required form, or i is not in range

getFactors

public java.util.List<Denotator> getFactors()
Returns a list of the coordinates of the denotator.

Specified by:
getFactors in interface FactorDenotator

appendFactor

public boolean appendFactor(Denotator d)
Description copied from interface: FactorDenotator
Appends, if possible, the factor d. This is a destructive operation; beware of aliasing.

Specified by:
appendFactor in interface FactorDenotator
Returns:
true iff the append is successful

iterator

public java.util.Iterator<Denotator> iterator()
Returns an iterator over the coordinates.

Specified by:
iterator in interface java.lang.Iterable<Denotator>
Specified by:
iterator in interface FactorDenotator
Specified by:
iterator in class Denotator

getListMorphismMap

public ListMorphismMap getListMorphismMap()

getFrameListMorphismMap

public ListMorphismMap getFrameListMorphismMap()

isConstant

public boolean isConstant()
Description copied from class: Denotator
Returns true iff this is ultimately a constant denotator, regardless of its address.

Specified by:
isConstant in class Denotator

compareTo

public int compareTo(Denotator object)
Specified by:
compareTo in interface java.lang.Comparable<Denotator>
Specified by:
compareTo in class Denotator

compareTo

public int compareTo(LimitDenotator other)
Compares two limit denotators.


equals

public boolean equals(java.lang.Object object)
Checks for equality.

Specified by:
equals in class Denotator

equals

public boolean equals(LimitDenotator other)
Checks denotators of the same type for equality.


copy

public LimitDenotator copy()
Description copied from class: Denotator
Returns a deep copy of this denotator. The copy is given the same name as the original.

Specified by:
copy in class Denotator

check

public boolean check()
Description copied from class: Denotator
Returns true iff this denotator is consistent. This can be used in assertions to validate a denotator, for example if its constructed using unsafe methods or changed inplace.

Specified by:
check in class Denotator

toXML

public void toXML(XMLWriter writer)
Specified by:
toXML in class Denotator

fromXML

public static LimitDenotator fromXML(XMLReader reader,
                                     org.w3c.dom.Element element)
Reads XML representation from reader starting with element.

Returns:
a limit denotator or null if parsing failed

_make_unsafe

@Unsafe
@Internal
public static LimitDenotator _make_unsafe(NameDenotator name,
                                                          Module address,
                                                          LimitForm form,
                                                          java.util.List<Denotator> denoList)
Creates a new limit denotator without checking whatsoever. The arguments must result in a correct denotator, otherwise there may be nasty consequences.


_is_valid

@Internal
public boolean _is_valid()
Returns true iff this denotator is correctly built.