gov.llnl.babel.symbols
Class Method

java.lang.Object
  extended by gov.llnl.babel.symbols.ASTNode
      extended by gov.llnl.babel.symbols.Method
All Implemented Interfaces:
Attributes, IMetadata, java.lang.Cloneable

public class Method
extends ASTNode
implements java.lang.Cloneable, Attributes, IMetadata

The Method class defines a SIDL method, including modifiers, return type, name, arguments, and exceptions. Methods may have one of three definition modifiers: final, static, or abstract. They may also have one of two communication modifiers: local or oneway. The return type is either a type or null (which indicates void). The method name is a simple identifier string. The optional arguments are an ordered collecton or arguments. The method may throw any number of exceptions.


Nested Class Summary
static class Method.RarrayInfo
           
 
Field Summary
static int ABSTRACT
           
static int FINAL
           
static int LOCAL
           
static int NONBLOCKING
           
static int NONBLOCKING_RECV
           
static int NONBLOCKING_SEND
           
static int NORMAL
           
static int ONEWAY
           
static java.lang.String[] s_comm_mod
           
static java.lang.String[] s_def_mod
           
static int STATIC
           
 
Fields inherited from class gov.llnl.babel.symbols.ASTNode
d_frozen
 
Constructor Summary
Method(Context context)
          Create an empty Method object that will be built by calls to other member functions.
 
Method Summary
 void addArgument(Argument arg)
          Add another argument to the end of the list of method arguments.
 void addClauseAssertion(Assertion assertion)
          Add the specified assertion to the proper contract clause for this method.
 void addImplicitThrows(SymbolID id)
          Add a symbol identifier to the list of exceptions thrown, but do not treat it as an explicit throw.
 void addMetadata(java.lang.String keyword, java.lang.String value)
          Add a (keyword, value) pair to the metadata for this object.
 void addRarrayIndex(java.util.Collection new_indices)
          add a set of required rarray indices to the set of indices
 void addRarrayIndex(java.lang.String s)
          add a required rarray index to the set of indices
 void addSplicerContents(java.lang.String location, java.lang.String name, java.lang.String impl)
          Add the specified contents to the splicer block identified by the location and name.
 void addThrows(SymbolID id)
          Add a symbol identifier to the list of explicit supported exceptions for this method.
 Method cloneMethod()
          Return a shallow copy of this method object.
 boolean contractHasBuiltinMethod(int type)
          Returns TRUE if the a built-in assertion method call of the specified type is included in either contract clause; returns FALSE otherwise.
 boolean contractHasUserDefinedMethod(boolean any)
          Returns TRUE if the contract calls any user-defined methods (when any is TRUE) or has a user-defined method with a throws clause (if any is FALSE) in either of its contract clauses; otherwise, returns FALSE.
 boolean equals(java.lang.Object o)
           
 void freeze()
           
 Argument getArgumentByName(java.lang.String s)
          Return an the argument whose formal name matches the passed in string.
 java.util.List getArgumentList()
          Return the array of arguments in an List, where each element is an Argument.
 java.util.List getArgumentListWithIndices()
          Return the array of arguments in an List container.
 java.util.List getArgumentListWithOutIndices()
          Return the array of arguments in an List container.
 int getArgumentMode(java.lang.String name)
          Return the mode of the argument with the specified formal name, if any; otherwise, return -1.
 Type getArgumentType(java.lang.String name)
          Return the Type of the argument with the specified formal name, if any; otherwise, return null.
 java.lang.String getAttribute(java.lang.String key)
           
 java.util.Set getAttributes()
           
 java.util.Set getBasicArrays()
          Return the Set of basic array references including arrays of fundamental types such as double, int, etc.
 java.lang.String getBlockingMethodName()
          Return the nonblocking method name (if NONBLOCKING), else return long name
 Comment getComment()
          Return the comment for the method.
 int getCommunicationModifier()
          Return the communication modifier for this method.
 java.lang.String getCommunicationModifierString()
          Return the communication modifier string for this method.
 java.lang.String getCorrectMethodName()
          This method is used for language bindings that support overloading.
 int getDefinitionModifier()
          Return the definition modifier for the method.
 java.lang.String getDefinitionModifier(boolean is_interface)
          Return the explicit definition modifier string for the method based on the type of extendable in which it belongs.
 java.util.Set getExplicitThrows()
          Return the Set of explicit exceptions that may be thrown by this method.
 java.util.Set getImplicitThrows()
          Return the Set of implicit exceptions that may be thrown by this method.
 java.lang.String getLongMethodName()
          Return the long method name (a standard SIDL identifier).
 int getMaxArrayIterMacros(char type)
          Return the number of array iteration macros --- contained in the contract --- that return the specified type.
 Metadata getMetadata()
          Return the metadata associated with this object.
 java.lang.String getNameExtension()
          Return the method name extension (a standard SIDL identifier).
 java.util.List getPostClause()
          Return an List of Assertions that make up the postcondition clause.
 int getPostDefaultComplexity()
          Returns the default complexity of the postcondition clause; returns 0 (for constant-time) if none.
 java.util.List getPreClause()
          Return an List of Assertions that make up the precondition clause.
 int getPreDefaultComplexity()
          Returns the default complexity of the precondition clause; returns 0 (for constant-time) if none.
 java.util.Set getRarrayIndices()
          Return the set of rarray indices required in the arg list.
 java.util.Map getRarrayInfo()
          This returns an array list of RarrayInfo objects that contains the info for every rarray index used in this method.
 Type getReturnType()
          Return the return type for the method or throw NullPointerException
 java.lang.String getReturnType(java.lang.String parent_pkg)
          Return the string corresponding to the return type for this method.
 java.lang.String getShortMethodName()
          Return the short method name (a standard SIDL identifier).
 java.lang.String getSignature()
          Return the signature of the method.
 java.lang.String getSignature(boolean is_interface, java.lang.String parent_pkg)
          Return the signature of the method, including the definition modifier based on the extendable type.
 java.lang.String getSignaturePreface(boolean is_interface, java.lang.String parent_pkg)
          Return the concatenation of the explicit definition modifier, copy, return type, name and extension.
 java.util.ArrayList getSplicerBlocks(java.lang.String location)
          Return splicer blocks for the specified location.
 java.util.ArrayList getSplicerContents(java.lang.String location, java.lang.String name)
          Return splicer contents for the specified location and splicer name.
 java.util.Set getSymbolReferences()
          Return the Set of symbols referred to by this method.
 java.util.Set getSymbolReferencesWithoutExceptions()
          Return the Set of symbols referred to by this method, except for the exceptions it throws.
 java.util.Set getThrows()
          Return the Set of exceptions that may be thrown by this method.
 boolean hasArrayOrderSpec()
          Return TRUE if and only if at least one argument of this method is an array with an ordering specification.
 boolean hasAttribute(java.lang.String key)
           
 boolean hasExplicitExceptions()
           
 int hashCode()
           
 boolean hasPostClause()
          Returns TRUE if the method has assertions within its postcondition clause; otherwise, returns FALSE.
 boolean hasPreClause()
          Returns TRUE if the method has assertions within its precondition clause; otherwise, returns FALSE.
 boolean hasPureAssertion()
          Return TRUE if PURE clause appears in the assertions associated with this method; otherwise, return FALSE.
 boolean hasRarray()
          Returns true if this method has an rarray in it's signature
 boolean isAbstract()
          Return TRUE if the method is abstract; otherwise, return FALSE.
 boolean isBuiltIn()
          Return the built-in attribute for the method.
 boolean isFinal()
          Return TRUE if the method is final; otherwise, return FALSE.
 boolean isImplicitException(SymbolID id)
           
 boolean isReturnCopy()
          Return the copy mode for the return type.
 boolean isStatic()
          Return TRUE if the method is static; otherwise, return FALSE.
 int numRarray()
          Returns the number of rarray arguments in the method's argument list.
 boolean overloadCollision(Method m)
           
 boolean postHasMethodCall()
          Returns TRUE if the postcondition clause includes at least one method call; returns FALSE otherwise.
 boolean postHasResult()
          Returns TRUE if the postcondition clause includes a result argument; returns FALSE otherwise.
 boolean postHasResultOrOutArg()
          Returns TRUE if the postcondition clause includes at least one result or output argument; returns FALSE otherwise.
 boolean preHasMethodCall()
          Returns TRUE if the precondition clause includes at least one method call; returns FALSE otherwise.
 boolean preHasResultOrOutArg()
          /** Returns TRUE if the precondition clause includes at least one result or output argument; returns FALSE otherwise.
 void removeAttribute(java.lang.String key)
           
 boolean sameBaseSignature(Method m)
          Return TRUE if the base signature of the specified method matches that of this method; otherwise, return FALSE.
 boolean sameSignature(Method m)
          Return TRUE if the signature of the specified method matches that of this method; otherwise, return FALSE.
 boolean sameSignature(Method m, boolean compExt)
          Return TRUE if the signature of the specified method matches that of this method; otherwise, return FALSE.
 void setAttribute(java.lang.String key)
           
 void setAttribute(java.lang.String key, java.lang.String value)
           
 void setBuiltIn(boolean is_builtin)
          Set the built-in attribute.
 void setComment(Comment comment)
          Set the comment for the method.
 void setCommunicationModifier(int modifier)
          Set the communication modifier for the method.
 void setDefinitionModifier(int modifier)
          Set the definition modifier for the method.
 void setMethodName(java.lang.String shortName)
          Set the names of the method (a standard SIDL identifier).
 void setMethodName(java.lang.String shortName, java.lang.String extension)
          Set the names of the method (a standard SIDL identifier).
 void setReturnCopy(boolean copy)
          Set the copy mode for the return type.
 void setReturnType(Type type)
          Set the return type for the method.
 Method spawnNonblockingRecv()
          Create the non-blocking recv variant iff method is nonblocking
 Method spawnNonblockingSend()
          Create the non-blocking send variant iff method is nonblocking
 Method spawnPostHook()
           
 Method spawnPostHook(boolean useCReturn, boolean without)
          Create the post hook variant iff hooks are turned on.
 Method spawnPreHook()
           
 Method spawnPreHook(boolean withinout)
          Create the pre hook variant iff hooks are turned on.
 
Methods inherited from class gov.llnl.babel.symbols.ASTNode
checkFrozen, clone, protectCollection, protectList, protectMap, protectSet
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NORMAL

public static final int NORMAL
See Also:
Constant Field Values

ABSTRACT

public static final int ABSTRACT
See Also:
Constant Field Values

FINAL

public static final int FINAL
See Also:
Constant Field Values

STATIC

public static final int STATIC
See Also:
Constant Field Values

LOCAL

public static final int LOCAL
See Also:
Constant Field Values

ONEWAY

public static final int ONEWAY
See Also:
Constant Field Values

NONBLOCKING

public static final int NONBLOCKING
See Also:
Constant Field Values

NONBLOCKING_SEND

public static final int NONBLOCKING_SEND
See Also:
Constant Field Values

NONBLOCKING_RECV

public static final int NONBLOCKING_RECV
See Also:
Constant Field Values

s_def_mod

public static final java.lang.String[] s_def_mod

s_comm_mod

public static final java.lang.String[] s_comm_mod
Constructor Detail

Method

public Method(Context context)
Create an empty Method object that will be built by calls to other member functions.

Method Detail

cloneMethod

public Method cloneMethod()
Return a shallow copy of this method object. This method should never fail since this method is cloneable. Send in the clones.


spawnPreHook

public Method spawnPreHook(boolean withinout)
                    throws CodeGenerationException
Create the pre hook variant iff hooks are turned on. Always filters out the return value and the out args

Parameters:
withinout - If false, all in and inout args are converted to in args only. If true, inouts remain inout. out args are always removed.
Returns:
new Method or null;
Throws:
CodeGenerationException
See Also:
spawnNonblockingRecv()

spawnPreHook

public Method spawnPreHook()
                    throws CodeGenerationException
Throws:
CodeGenerationException

spawnPostHook

public Method spawnPostHook(boolean useCReturn,
                            boolean without)
                     throws CodeGenerationException
Create the post hook variant iff hooks are turned on. The return argument is always converted to an in argument

Parameters:
useCReturn - if true, uses the return name given in C.java. If false, uses the Fortran variant name
without - If false, all out and inout args are converted to in args only. If true, inouts and outs remain such.
Returns:
new Method or null;
Throws:
CodeGenerationException
See Also:
spawnNonblockingRecv()

spawnPostHook

public Method spawnPostHook()
                     throws CodeGenerationException
Throws:
CodeGenerationException

spawnNonblockingSend

public Method spawnNonblockingSend()
                            throws CodeGenerationException
Create the non-blocking send variant iff method is nonblocking

Returns:
new Method or null;
Throws:
CodeGenerationException
See Also:
spawnNonblockingRecv()

spawnNonblockingRecv

public Method spawnNonblockingRecv()
                            throws CodeGenerationException
Create the non-blocking recv variant iff method is nonblocking

Returns:
new Method or null;
Throws:
CodeGenerationException
See Also:
spawnNonblockingSend()

addArgument

public void addArgument(Argument arg)
Add another argument to the end of the list of method arguments.

Parameters:
arg - The argument to be appended to the object's argument list

getArgumentList

public java.util.List getArgumentList()
Return the array of arguments in an List, where each element is an Argument.


getArgumentListWithOutIndices

public java.util.List getArgumentListWithOutIndices()
Return the array of arguments in an List container. This method returns only arguments that are not used as indices to an Rarray


getArgumentListWithIndices

public java.util.List getArgumentListWithIndices()
Return the array of arguments in an List container. This returns all the arguments in the argument list, including those that are indices to an Rarray.


addRarrayIndex

public void addRarrayIndex(java.lang.String s)
add a required rarray index to the set of indices


addRarrayIndex

public void addRarrayIndex(java.util.Collection new_indices)
add a set of required rarray indices to the set of indices


getRarrayIndices

public java.util.Set getRarrayIndices()
Return the set of rarray indices required in the arg list. (Returns null if there are no indices required)


hasRarray

public boolean hasRarray()
Returns true if this method has an rarray in it's signature


numRarray

public int numRarray()
Returns the number of rarray arguments in the method's argument list.


getArgumentType

public Type getArgumentType(java.lang.String name)
Return the Type of the argument with the specified formal name, if any; otherwise, return null.

Parameters:
name - The formal argument name whose type is to be returned.

getArgumentMode

public int getArgumentMode(java.lang.String name)
Return the mode of the argument with the specified formal name, if any; otherwise, return -1.

Parameters:
name - The formal argument name whose type is to be returned.

setBuiltIn

public void setBuiltIn(boolean is_builtin)
Set the built-in attribute.

Parameters:
is_builtin - TRUE if the method is/should be built-in; otherwise, false.

isBuiltIn

public boolean isBuiltIn()
Return the built-in attribute for the method.


setComment

public void setComment(Comment comment)
Set the comment for the method.

Parameters:
comment - The comment associated with the method. May be null.

getComment

public Comment getComment()
Return the comment for the method. This may be null if there is no comment.


setCommunicationModifier

public void setCommunicationModifier(int modifier)
Set the communication modifier for the method.

Parameters:
modifier - The method's communication modifier. Valid values are NORMAL, LOCAL, and ONEWAY.

getCommunicationModifier

public int getCommunicationModifier()
Return the communication modifier for this method.


getCommunicationModifierString

public java.lang.String getCommunicationModifierString()
Return the communication modifier string for this method.


setDefinitionModifier

public void setDefinitionModifier(int modifier)
Set the definition modifier for the method.

Parameters:
modifier - The method's definnition modifier. Valid values are NORMAL, ABSTRACT, FINAL, and STATIC.

getDefinitionModifier

public int getDefinitionModifier()
Return the definition modifier for the method.


getDefinitionModifier

public java.lang.String getDefinitionModifier(boolean is_interface)
Return the explicit definition modifier string for the method based on the type of extendable in which it belongs.

Parameters:
is_interface - If TRUE, then the extendable is an interface so do NOT include ABSTRACT since it is implicit.
Returns:
the string associated with the explicit definition modifier

isAbstract

public boolean isAbstract()
Return TRUE if the method is abstract; otherwise, return FALSE.


isFinal

public boolean isFinal()
Return TRUE if the method is final; otherwise, return FALSE.


isStatic

public boolean isStatic()
Return TRUE if the method is static; otherwise, return FALSE.


hasArrayOrderSpec

public boolean hasArrayOrderSpec()
Return TRUE if and only if at least one argument of this method is an array with an ordering specification. For example, calling this on methods without array arguments will return FALSE while calling it on something like void doIt(in array<int, 2, row-major> x); will return TRUE.


setMethodName

public void setMethodName(java.lang.String shortName,
                          java.lang.String extension)
Set the names of the method (a standard SIDL identifier).

Parameters:
shortName - The short name of the method
extension - The method name extension used in combination with the short name to uniquely identify this method

setMethodName

public void setMethodName(java.lang.String shortName)
Set the names of the method (a standard SIDL identifier). Use of this method will result in the long and short name being identical.

Parameters:
shortName - The short name of the method

getCorrectMethodName

public java.lang.String getCorrectMethodName()
This method is used for language bindings that support overloading. For most methods it will return the short name, but if the method requires the long name for some reason determinable inside the method class, the long name is returned. For example, nonblocking send and receive always use the long method name.


getShortMethodName

public java.lang.String getShortMethodName()
Return the short method name (a standard SIDL identifier).


getNameExtension

public java.lang.String getNameExtension()
Return the method name extension (a standard SIDL identifier).


getLongMethodName

public java.lang.String getLongMethodName()
Return the long method name (a standard SIDL identifier).


getBlockingMethodName

public java.lang.String getBlockingMethodName()
Return the nonblocking method name (if NONBLOCKING), else return long name


setReturnCopy

public void setReturnCopy(boolean copy)
Set the copy mode for the return type.

Parameters:
copy - If TRUE then the return interface/class is to be copied to the caller; otherwise, it is not.

isReturnCopy

public boolean isReturnCopy()
Return the copy mode for the return type.


setReturnType

public void setReturnType(Type type)
Set the return type for the method.

Parameters:
type - The return type to be used. Note that a void return type must be represented by a Type.VOID NOT a null Type reference.

getReturnType

public Type getReturnType()
Return the return type for the method or throw NullPointerException


addThrows

public void addThrows(SymbolID id)
Add a symbol identifier to the list of explicit supported exceptions for this method. No error checking is performed to ensure that the specified symbol is valid in the throws clause; such checking must be performed by the parser. An explicit exception is one that is listed in the SIDL file rather than the implicit runtime exception.

Parameters:
id - The symbol identifier to be added

addImplicitThrows

public void addImplicitThrows(SymbolID id)
Add a symbol identifier to the list of exceptions thrown, but do not treat it as an explicit throw.


isImplicitException

public boolean isImplicitException(SymbolID id)

hasExplicitExceptions

public boolean hasExplicitExceptions()

getThrows

public java.util.Set getThrows()
Return the Set of exceptions that may be thrown by this method. Each element of the set is a SymbolID.


getExplicitThrows

public java.util.Set getExplicitThrows()
Return the Set of explicit exceptions that may be thrown by this method. Each element of the set is a SymbolID.


getImplicitThrows

public java.util.Set getImplicitThrows()
Return the Set of implicit exceptions that may be thrown by this method. Each element of the set is a SymbolID.


getSymbolReferences

public java.util.Set getSymbolReferences()
Return the Set of symbols referred to by this method. Each element of the set is a SymbolID.


getSymbolReferencesWithoutExceptions

public java.util.Set getSymbolReferencesWithoutExceptions()
Return the Set of symbols referred to by this method, except for the exceptions it throws. Each element of the set is a SymbolID.


getBasicArrays

public java.util.Set getBasicArrays()
Return the Set of basic array references including arrays of fundamental types such as double, int, etc. Each element of the set is a SymbolID.


getReturnType

public java.lang.String getReturnType(java.lang.String parent_pkg)
Return the string corresponding to the return type for this method. Note the string may represent an abbreviated return type (i.e., a type stripped of its package information).

Parameters:
parent_pkg - The string containing the parent package. When not null, it is used to strip the package from the return string if it is in the specified package.
Returns:
the string containing the possibly abbreviated return type.

getSignaturePreface

public java.lang.String getSignaturePreface(boolean is_interface,
                                            java.lang.String parent_pkg)
Return the concatenation of the explicit definition modifier, copy, return type, name and extension.

Parameters:
is_interface - TRUE if an interface and want the implicit definition modifier excluded from the result; otherwise, FALSE.
parent_pkg - The string containing the parent package. When not null, it is used to strip the package from the return string if it is in the specified package.
Returns:
the string containing the preface

getSignature

public java.lang.String getSignature(boolean is_interface,
                                     java.lang.String parent_pkg)
Return the signature of the method, including the definition modifier based on the extendable type. Also, optionally abbreviate type if in specified package.

Parameters:
is_interface - TRUE if interface and want the implicit definition modifier excluded from the result; otherwise, FALSE
parent_pkg - The string containing the parent package. When not null, it is used to strip the package from the return string if it is in the specified package.
Returns:
The string containing the full signature.

getSignature

public java.lang.String getSignature()
Return the signature of the method. The signature does not include the attributes abstract, final, or static. It also does not abbreviate package names.


sameSignature

public boolean sameSignature(Method m)
Return TRUE if the signature of the specified method matches that of this method; otherwise, return FALSE. For signatures to match, the methods must have the same return types and mode, the same names, the same arguments, and the same throws clauses. They must also have the same communication modifiers. The signature does not include modifiers static, abstract, or final.

Parameters:
m - The method whose signature is being compared with.

sameSignature

public boolean sameSignature(Method m,
                             boolean compExt)
Return TRUE if the signature of the specified method matches that of this method; otherwise, return FALSE. For signatures to match, the methods must have the same return types and mode, the same names, the same arguments, and the same throws clauses. They must also have the same communication modifiers. The signature does not include modifiers static, abstract, or final.

Parameters:
m - The method whose signature is being compared with.
compExt - True if the comparision should compare method extensions. (False for from clauses)

sameBaseSignature

public boolean sameBaseSignature(Method m)
Return TRUE if the base signature of the specified method matches that of this method; otherwise, return FALSE. For them to match, the methods must have the same short and the same arguments.

Parameters:
m - The method whose base signature is being compared.

overloadCollision

public boolean overloadCollision(Method m)

getArgumentByName

public Argument getArgumentByName(java.lang.String s)
Return an the argument whose formal name matches the passed in string. Return null if the string does not match anything.


addClauseAssertion

public void addClauseAssertion(Assertion assertion)
                        throws AssertionException
Add the specified assertion to the proper contract clause for this method.

Parameters:
assertion - The assertion to be added.
Throws:
AssertionException - The exception thrown if the assertion is not valid.

getPreClause

public java.util.List getPreClause()
Return an List of Assertions that make up the precondition clause.


hasPreClause

public boolean hasPreClause()
Returns TRUE if the method has assertions within its precondition clause; otherwise, returns FALSE.


getPostClause

public java.util.List getPostClause()
Return an List of Assertions that make up the postcondition clause.


hasPostClause

public boolean hasPostClause()
Returns TRUE if the method has assertions within its postcondition clause; otherwise, returns FALSE.


preHasMethodCall

public boolean preHasMethodCall()
Returns TRUE if the precondition clause includes at least one method call; returns FALSE otherwise.


postHasMethodCall

public boolean postHasMethodCall()
Returns TRUE if the postcondition clause includes at least one method call; returns FALSE otherwise.


preHasResultOrOutArg

public boolean preHasResultOrOutArg()
/** Returns TRUE if the precondition clause includes at least one result or output argument; returns FALSE otherwise. Note: Preconditions should _not_ have such arguments (unless the out is inout).


postHasResultOrOutArg

public boolean postHasResultOrOutArg()
Returns TRUE if the postcondition clause includes at least one result or output argument; returns FALSE otherwise.


postHasResult

public boolean postHasResult()
Returns TRUE if the postcondition clause includes a result argument; returns FALSE otherwise.


hasPureAssertion

public boolean hasPureAssertion()
Return TRUE if PURE clause appears in the assertions associated with this method; otherwise, return FALSE.


getPreDefaultComplexity

public int getPreDefaultComplexity()
Returns the default complexity of the precondition clause; returns 0 (for constant-time) if none.


getPostDefaultComplexity

public int getPostDefaultComplexity()
Returns the default complexity of the postcondition clause; returns 0 (for constant-time) if none.


contractHasBuiltinMethod

public boolean contractHasBuiltinMethod(int type)
Returns TRUE if the a built-in assertion method call of the specified type is included in either contract clause; returns FALSE otherwise.


contractHasUserDefinedMethod

public boolean contractHasUserDefinedMethod(boolean any)
Returns TRUE if the contract calls any user-defined methods (when any is TRUE) or has a user-defined method with a throws clause (if any is FALSE) in either of its contract clauses; otherwise, returns FALSE.


getMaxArrayIterMacros

public int getMaxArrayIterMacros(char type)
Return the number of array iteration macros --- contained in the contract --- that return the specified type. Valid types are given in MethodCall.java as MACRO_RETURNS_* values.


getRarrayInfo

public java.util.Map getRarrayInfo()
This returns an array list of RarrayInfo objects that contains the info for every rarray index used in this method.


hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hasAttribute

public boolean hasAttribute(java.lang.String key)
Specified by:
hasAttribute in interface Attributes

getAttribute

public java.lang.String getAttribute(java.lang.String key)
Specified by:
getAttribute in interface Attributes

setAttribute

public void setAttribute(java.lang.String key)
Specified by:
setAttribute in interface Attributes

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.String value)
Specified by:
setAttribute in interface Attributes

removeAttribute

public void removeAttribute(java.lang.String key)
                     throws UnknownAttributeException
Specified by:
removeAttribute in interface Attributes
Throws:
UnknownAttributeException

getAttributes

public java.util.Set getAttributes()
Specified by:
getAttributes in interface Attributes

getMetadata

public Metadata getMetadata()
Description copied from interface: IMetadata
Return the metadata associated with this object.

Specified by:
getMetadata in interface IMetadata

addMetadata

public void addMetadata(java.lang.String keyword,
                        java.lang.String value)
Description copied from interface: IMetadata
Add a (keyword, value) pair to the metadata for this object.

Specified by:
addMetadata in interface IMetadata

addSplicerContents

public void addSplicerContents(java.lang.String location,
                               java.lang.String name,
                               java.lang.String impl)
Add the specified contents to the splicer block identified by the location and name.


getSplicerBlocks

public java.util.ArrayList getSplicerBlocks(java.lang.String location)
Return splicer blocks for the specified location.


getSplicerContents

public java.util.ArrayList getSplicerContents(java.lang.String location,
                                              java.lang.String name)
Return splicer contents for the specified location and splicer name.


freeze

public void freeze()
Overrides:
freeze in class ASTNode