|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectptolemy.data.Token
ptolemy.data.ScalarToken
public abstract class ScalarToken
Abstract base class for tokens that contain a scalar. This base class extends the Token class to properly implement type conversion and the units portion of the standard operations for scalar tokens. It also adds methods for querying the natural ordering between scalars.
This class has a number of protected abstract methods that subclasses must implement. These methods need only implement the numerical portion of the operation between two tokens of the same type. This base class will handle the conversion of tokens from different types to the same type before calling the protected method, and the proper computation of the units of the returned token afterwards.
In general, any instance of a scalar token may be optionally associated with a set of units. In the arithmetic methods add(), modulo(), and subtract(), the two operands must have the same units. Otherwise, an exception will be thrown. In the methods multiply() and divide(), the units of the resulting token will be computed automatically. IMPORTANT: The protected methods implemented in derived classes are expected to return a new token in the case of multiply and divide. This new token will automatically have its units set correctly by this base class implementation. Certain cases, such as multiplication by one, cannot be optimized to simply return an the input token without performing the multiplication, since the units of the result may be different than the units of either input token.
Green (yuhong) |
Green (neuendor) |
Field Summary | |
---|---|
protected int[] |
_unitCategoryExponents
The unit category exponents. |
Fields inherited from class ptolemy.data.Token |
---|
NIL |
Constructor Summary | |
---|---|
ScalarToken()
|
Method Summary | |
---|---|
protected abstract ScalarToken |
_absolute()
Return a ScalarToken containing the absolute value of the value of this token. |
protected abstract ScalarToken |
_add(ScalarToken rightArgument)
Return a new token whose value is the value of the argument token added to the value of this token. |
protected int[] |
_addCategoryExponents(ScalarToken token)
Add the corresponding unit category exponents. |
protected boolean |
_areUnitsEqual(ScalarToken scalarToken)
Return true if the units of this token are the same as that of the argument token. |
protected abstract ScalarToken |
_bitwiseAnd(ScalarToken rightArgument)
Returns a token representing the bitwise AND of this token and the given token. |
protected abstract ScalarToken |
_bitwiseNot()
Returns a token representing the bitwise NOT of this token. |
protected abstract ScalarToken |
_bitwiseOr(ScalarToken rightArgument)
Returns a token representing the bitwise OR of this token and the given token. |
protected abstract ScalarToken |
_bitwiseXor(ScalarToken rightArgument)
Returns a token representing the bitwise XOR of this token and the given token. |
protected int[] |
_copyOfCategoryExponents()
Return a copy of the unit category exponents array. |
protected abstract ScalarToken |
_divide(ScalarToken rightArgument)
Return a new token whose value is the value of this token divided by the value of the argument token. |
private Token |
_doAdd(Token rightArgument)
Return a new token whose value is the value of the argument Token added to the value of this Token. |
private BitwiseOperationToken |
_doBitwiseAnd(Token rightArgument)
|
private BitwiseOperationToken |
_doBitwiseOr(Token rightArgument)
|
private BitwiseOperationToken |
_doBitwiseXor(Token rightArgument)
|
private Token |
_doDivide(Token rightArgument)
Return a new token whose value is the value of this token divided by the value of the argument token. |
private BooleanToken |
_doIsCloseTo(Token rightArgument,
double epsilon)
Test for closeness of the values of this Token and the argument Token. |
private BooleanToken |
_doIsEqualTo(Token rightArgument)
Test for equality of the values of this Token and the argument Token. |
private BooleanToken |
_doIsLessThan(Token rightArgument)
Test for ordering of the values of this Token and the argument Token. |
private Token |
_doModulo(Token rightArgument)
Return a new token whose value is the value of this token modulo the value of the argument token. |
private Token |
_doMultiply(Token rightArgument)
Return a new token whose value is the value of this token multiplied by the value of the argument token. |
private Token |
_doSubtract(Token rightArgument)
Return a new token whose value is the value of the argument token subtracted from the value of this token. |
protected abstract BooleanToken |
_isCloseTo(ScalarToken rightArgument,
double epsilon)
Test whether the value of this token is close to the first argument, where "close" means that the distance between them is less than or equal to the second argument. |
protected BooleanToken |
_isEqualTo(ScalarToken token)
Test for equality of the values of this token and the argument. |
protected abstract BooleanToken |
_isLessThan(ScalarToken rightArgument)
Test for ordering of the values of this Token and the argument Token. |
protected boolean |
_isUnitless()
Return true if this token does not have a unit. |
protected abstract ScalarToken |
_modulo(ScalarToken rightArgument)
Return a new token whose value is the value of this token modulo the value of the argument token. |
protected abstract ScalarToken |
_multiply(ScalarToken rightArgument)
Return a new token whose value is the value of this token multiplied by the value of the argument token. |
protected abstract ScalarToken |
_subtract(ScalarToken rightArgument)
Return a new token whose value is the value of the argument token subtracted from the value of this token. |
protected int[] |
_subtractCategoryExponents(ScalarToken token)
Subtract the corresponding unit category exponents of the argument token from that of this token. |
ScalarToken |
absolute()
Return a ScalarToken containing the absolute value of the value of this token. |
Token |
add(Token rightArgument)
Return a new token whose value is the sum of this token and the argument. |
Token |
addReverse(Token leftArgument)
Return a new token whose value is the sum of this token and the argument. |
BitwiseOperationToken |
bitwiseAnd(Token rightArgument)
Returns a token representing the bitwise AND of this token and the given token. |
BitwiseOperationToken |
bitwiseNot()
Returns a token representing the bitwise NOT of this token. |
BitwiseOperationToken |
bitwiseOr(Token rightArgument)
Returns a token representing the bitwise OR of this token and the given token. |
BitwiseOperationToken |
bitwiseXor(Token rightArgument)
Returns a token representing the bitwise XOR of this token and the given token. |
byte |
byteValue()
Return the value in the token as a byte. |
Complex |
complexValue()
Return the value of this token as a Complex. |
Token |
divide(Token rightArgument)
Return a new token whose value is the value of this token divided by the value of the argument token. |
Token |
divideReverse(Token leftArgument)
Return a new token whose value is the value of this token divided into the value of the argument token. |
double |
doubleValue()
Return the value of this token as a double. |
FixPoint |
fixValue()
Return the value of this token as a FixPoint. |
float |
floatValue()
Return the value of this token as a float In this base class, we just throw an exception. |
abstract Type |
getType()
Return the type of this token. |
int |
intValue()
Return the value of this token as an int. |
ScalarToken |
inUnitsOf(ScalarToken units)
Return a scalar token that contains the value of this token in the units of the argument token. |
BooleanToken |
isCloseTo(Token rightArgument,
double epsilon)
Test whether the value of this Token is close to the argument Token. |
BooleanToken |
isEqualTo(Token rightArgument)
Test for equality of the values of this Token and the argument Token. |
BooleanToken |
isGreaterThan(ScalarToken rightArgument)
Check whether the value of this token is strictly greater than that of the argument token. |
BooleanToken |
isLessThan(ScalarToken rightArgument)
Check whether the value of this token is strictly less than that of the argument token. |
ScalarToken |
leftShift(int bits)
Returns a token representing the result of shifting the bits of this token towards the most significant bit, filling the least significant bits with zeros. |
ScalarToken |
logicalRightShift(int bits)
Returns a token representing the result of shifting the bits of this token towards the least significant bit, filling the most significant bits with zeros. |
long |
longValue()
Return the value of this token as a long integer. |
Token |
modulo(Token rightArgument)
Return a new token whose value is the value of this token modulo the value of the argument token. |
Token |
moduloReverse(Token leftArgument)
Return a new token whose value is the value of this token modulo the value of the argument token. |
Token |
multiply(Token rightArgument)
Return a new token whose value is the value of this token multiplied by the value of the argument token. |
Token |
multiplyReverse(Token leftArgument)
Return a new token whose value is the value of this token multiplied by the value of the argument token. |
ScalarToken |
rightShift(int bits)
Returns a token representing the result of shifting the bits of this token towards the least significant bit, filling the most significant bits with the sign of the value. |
void |
setUnitCategory(int index)
Deprecated. We need a better way of manufacturing the tokens for base units, since this method violates the immutability of tokens. |
short |
shortValue()
Return the value of this token as a short. |
Token |
subtract(Token rightArgument)
Return a new token whose value is the value of the argument token subtracted from the value of this token. |
Token |
subtractReverse(Token leftArgument)
Return a new token whose value is the value of the argument token subtracted from the value of this token. |
java.lang.String |
unitsString()
Return the string representation of the units of this token. |
Methods inherited from class ptolemy.data.Token |
---|
isCloseTo, isNil, notSupportedConversionMessage, notSupportedIncomparableConversionMessage, notSupportedIncomparableMessage, notSupportedMessage, notSupportedNullNilStringMessage, one, pow, toString, zero, zeroReturnType |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected int[] _unitCategoryExponents
Constructor Detail |
---|
public ScalarToken()
Method Detail |
---|
public final ScalarToken absolute()
Token.NIL
is returned.public final Token add(Token rightArgument) throws IllegalActionException
add
in class Token
rightArgument
- The token to add to this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public final Token addReverse(Token leftArgument) throws IllegalActionException
addReverse
in class Token
leftArgument
- The token to add this token to.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public BitwiseOperationToken bitwiseAnd(Token rightArgument) throws IllegalActionException
bitwiseAnd
in interface BitwiseOperationToken
rightArgument
- The ScalarToken to bitwise AND with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public BitwiseOperationToken bitwiseNot() throws IllegalActionException
bitwiseNot
in interface BitwiseOperationToken
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public BitwiseOperationToken bitwiseOr(Token rightArgument) throws IllegalActionException
bitwiseOr
in interface BitwiseOperationToken
rightArgument
- The ScalarToken to bitwise OR with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public BitwiseOperationToken bitwiseXor(Token rightArgument) throws IllegalActionException
bitwiseXor
in interface BitwiseOperationToken
rightArgument
- The ScalarToken to bitwise XOR with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public byte byteValue() throws IllegalActionException
IllegalActionException
- Always thrown.public Complex complexValue() throws IllegalActionException
IllegalActionException
- Always thrown.public final Token divide(Token rightArgument) throws IllegalActionException
divide
in class Token
rightArgument
- The token to divide into this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or the operation does
not make sense for the given types.public final Token divideReverse(Token leftArgument) throws IllegalActionException
divideReverse
in class Token
leftArgument
- The token to be divided into the value of
this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or the operation does
not make sense for the given types.public double doubleValue() throws IllegalActionException
IllegalActionException
- Always thrownpublic FixPoint fixValue() throws IllegalActionException
IllegalActionException
- Always thrown.public float floatValue() throws IllegalActionException
IllegalActionException
- Always thrownpublic abstract Type getType()
getType
in class Token
public ScalarToken inUnitsOf(ScalarToken units) throws IllegalActionException
units
- A scalar token that represents a unit.
IllegalActionException
- If the unit category of the
argument token is not the same as that of this one.public int intValue() throws IllegalActionException
IllegalActionException
- Always thrown.public final BooleanToken isCloseTo(Token rightArgument, double epsilon) throws IllegalActionException
isCloseTo
in class Token
rightArgument
- The token to test closeness of this token with.epsilon
- The value that we use to determine whether two
tokens are close.
IllegalActionException
- If the argument token is not
of a type that can be compared with this token, or the units
are not the same.isEqualTo(ptolemy.data.Token)
public final BooleanToken isEqualTo(Token rightArgument) throws IllegalActionException
isEqualTo
in class Token
rightArgument
- The token with which to test equality.
IllegalActionException
- If this method is not
supported by the derived class.isCloseTo(ptolemy.data.Token, double)
public final BooleanToken isGreaterThan(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to compare against.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public final BooleanToken isLessThan(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to compare against.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public ScalarToken leftShift(int bits) throws IllegalActionException
bits
- The number of bits to shift.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public ScalarToken logicalRightShift(int bits) throws IllegalActionException
bits
- The number of bits to shift.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public long longValue() throws IllegalActionException
IllegalActionException
- Always thrown.public final Token modulo(Token rightArgument) throws IllegalActionException
modulo
in class Token
rightArgument
- The token to modulo with this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public final Token moduloReverse(Token leftArgument) throws IllegalActionException
moduloReverse
in class Token
leftArgument
- The token to apply modulo to by the value
of this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public final Token multiply(Token rightArgument) throws IllegalActionException
multiply
in class Token
rightArgument
- The token to multiply this token by.
IllegalActionException
- If the argument token and
this token are of incomparable types, or the operation does
not make sense for the given types.public final Token multiplyReverse(Token leftArgument) throws IllegalActionException
multiplyReverse
in class Token
leftArgument
- The token to be multiplied by the value of
this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or the operation does
not make sense for the given types.public ScalarToken rightShift(int bits) throws IllegalActionException
bits
- The number of bits to shift.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.public void setUnitCategory(int index)
index
- The unit category index.public short shortValue() throws IllegalActionException
IllegalActionException
- Always thrownpublic final Token subtract(Token rightArgument) throws IllegalActionException
subtract
in class Token
rightArgument
- The token to subtract from this token.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public final Token subtractReverse(Token leftArgument) throws IllegalActionException
subtractReverse
in class Token
leftArgument
- The token to subtract this token from.
IllegalActionException
- If the argument token and
this token are of incomparable types, or have different units,
or the operation does not make sense for the given types.public java.lang.String unitsString()
protected abstract ScalarToken _absolute()
protected abstract ScalarToken _add(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to add to this token.
IllegalActionException
- If this method is not
supported by the derived class.protected int[] _addCategoryExponents(ScalarToken token)
token
- A token whose exponent will be added with the
exponents of this token.
protected boolean _areUnitsEqual(ScalarToken scalarToken)
scalarToken
- A scalar token.
protected abstract ScalarToken _bitwiseAnd(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The ScalarToken to bitwise AND with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.protected abstract ScalarToken _bitwiseNot() throws IllegalActionException
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.protected abstract ScalarToken _bitwiseOr(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The ScalarToken to bitwise OR with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.protected abstract ScalarToken _bitwiseXor(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The ScalarToken to bitwise XOR with this one.
IllegalActionException
- If the given token is not
compatible for this operation, or the operation does not make
sense for this type.protected int[] _copyOfCategoryExponents()
protected abstract ScalarToken _divide(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to divide this token by.
IllegalActionException
- If this method is not
supported by the derived class.protected abstract BooleanToken _isCloseTo(ScalarToken rightArgument, double epsilon) throws IllegalActionException
rightArgument
- The token to compare to this token.epsilon
- The value that we use to determine whether two
tokens are close.
IllegalActionException
- If there is a problem processing
the rightArgument.protected BooleanToken _isEqualTo(ScalarToken token) throws IllegalActionException
token
- The token to compare to this token.
IllegalActionException
- Not thrown in this base class.protected abstract BooleanToken _isLessThan(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to add to this token.
IllegalActionException
- If this method is not
supported by the derived class.protected boolean _isUnitless()
protected abstract ScalarToken _modulo(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to modulo this token by.
IllegalActionException
- If this method is not
supported by the derived class.protected abstract ScalarToken _multiply(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to multiply this token by.
IllegalActionException
- If this method is not
supported by the derived class.protected abstract ScalarToken _subtract(ScalarToken rightArgument) throws IllegalActionException
rightArgument
- The token to subtract from this token.
IllegalActionException
- If this method is not
supported by the derived class.protected int[] _subtractCategoryExponents(ScalarToken token)
token
- A token whose exponent will be subtracted from
the exponents of this token.
private Token _doAdd(Token rightArgument) throws IllegalActionException
rightArgument
- The token to add to this token.
Token.NIL
is returned.
IllegalActionException
- If this operation is not
supported by the derived class.private BitwiseOperationToken _doBitwiseAnd(Token rightArgument) throws IllegalActionException
IllegalActionException
private BitwiseOperationToken _doBitwiseOr(Token rightArgument) throws IllegalActionException
IllegalActionException
private BitwiseOperationToken _doBitwiseXor(Token rightArgument) throws IllegalActionException
IllegalActionException
private Token _doDivide(Token rightArgument) throws IllegalActionException
rightArgument
- The token to divide this token by.
Token.NIL
is returned.
IllegalActionException
- If this operation is not
supported by the derived class.private BooleanToken _doIsCloseTo(Token rightArgument, double epsilon) throws IllegalActionException
rightArgument
- The token with which to test closeness.
IllegalActionException
- If the units of the argument
are not the same as the units of this token, or the method is
not supported by the derived class.private BooleanToken _doIsEqualTo(Token rightArgument) throws IllegalActionException
rightArgument
- The token with which to test equality.
IllegalActionException
- If this method is not
supported by the derived class.private BooleanToken _doIsLessThan(Token rightArgument) throws IllegalActionException
rightArgument
- The token with which to test ordering.
IllegalActionException
- If the units of the argument
are not the same as the units of this token, or the method is
not supported by the derived class or if either this token or
the argument token is a nil token.private Token _doModulo(Token rightArgument) throws IllegalActionException
rightArgument
- The token to modulo this token by.
Token.NIL
is returned.
IllegalActionException
- If the units are not
compatible, or this operation is not supported by the derived
class.private Token _doMultiply(Token rightArgument) throws IllegalActionException
rightArgument
- The token to multiply this token by.
Token.NIL
is returned.
IllegalActionException
- If this operation is not
supported by the derived class.private Token _doSubtract(Token rightArgument) throws IllegalActionException
rightArgument
- The token to subtract from this token.
Token.NIL
is returned.
IllegalActionException
- If the units are not
compatible, or this operation is not supported by the derived
class.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |