ptolemy.domains.ptera.kernel
Class VariableScope

java.lang.Object
  extended by ptolemy.data.expr.ModelScope
      extended by ptolemy.domains.ptera.kernel.VariableScope
All Implemented Interfaces:
ParserScope

public class VariableScope
extends ModelScope

The parser scope that resolves names as attributes of a given container and those of a superscope. To resolve a name, it first tries to find an attribute belonging to the container given to its constructor. If not found, it passes the name resolution request to the superscope, if given.

Since:
Ptolemy II 8.0
Version:
$Id: VariableScope.java 57044 2010-01-27 22:41:05Z cxh $
Author:
Thomas Huining Feng
Accepted Rating:
Red (tfeng)
Proposed Rating:
Yellow (tfeng)

Field Summary
private  NamedObj _container
          The container in which attributes are looked up.
private  ParserScope _superScope
          The superscope.
 
Constructor Summary
VariableScope(NamedObj container)
          Construct a scope for the given container without a superscope.
VariableScope(NamedObj container, ParserScope superScope)
          Construct a scope for the given container with a superscope.
 
Method Summary
 Token get(java.lang.String name)
          Look up and return the value with the specified name in the scope.
 Type getType(java.lang.String name)
          Look up and return the type of the value with the specified name in the scope.
 InequalityTerm getTypeTerm(java.lang.String name)
          Look up and return the type term for the specified name in the scope.
 java.util.Set<?> identifierSet()
          Return a list of names corresponding to the identifiers defined by this scope.
 
Methods inherited from class ptolemy.data.expr.ModelScope
getAllScopedObjectNames, getAllScopedVariableNames, getScopedAttribute, getScopedObject, getScopedVariable, preferenceValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_container

private NamedObj _container
The container in which attributes are looked up.


_superScope

private ParserScope _superScope
The superscope.

Constructor Detail

VariableScope

public VariableScope(NamedObj container)
Construct a scope for the given container without a superscope.

Parameters:
container - The container in which attributes are looked up.

VariableScope

public VariableScope(NamedObj container,
                     ParserScope superScope)
Construct a scope for the given container with a superscope.

Parameters:
container - The container in which attributes are looked up.
superScope - If not null, the scope to search if no attribute of a given name can be found in the container.
Method Detail

get

public Token get(java.lang.String name)
          throws IllegalActionException
Look up and return the value with the specified name in the scope. Return null if the name is not defined in this scope.

Parameters:
name - The name of the variable to be looked up.
Returns:
The token associated with the given name in the scope.
Throws:
IllegalActionException - If a value in the scope exists with the given name, but cannot be evaluated.

getType

public Type getType(java.lang.String name)
             throws IllegalActionException
Look up and return the type of the value with the specified name in the scope. Return null if the name is not defined in this scope.

Parameters:
name - The name of the variable to be looked up.
Returns:
The token associated with the given name in the scope.
Throws:
IllegalActionException - If a value in the scope exists with the given name, but cannot be evaluated.

getTypeTerm

public InequalityTerm getTypeTerm(java.lang.String name)
                           throws IllegalActionException
Look up and return the type term for the specified name in the scope. Return null if the name is not defined in this scope, or is a constant type.

Parameters:
name - The name of the variable to be looked up.
Returns:
The InequalityTerm associated with the given name in the scope.
Throws:
IllegalActionException - If a value in the scope exists with the given name, but cannot be evaluated.

identifierSet

public java.util.Set<?> identifierSet()
                               throws IllegalActionException
Return a list of names corresponding to the identifiers defined by this scope. If an identifier is returned in this list, then get() and getType() will return a value for the identifier. Note that generally speaking, this list is extremely expensive to compute, and users should avoid calling it. It is primarily used for debugging purposes.

Returns:
A list of names corresponding to the identifiers defined by this scope.
Throws:
IllegalActionException - If constructing the list causes it.