com.veromodo.tempo.sem.desc
Class Descriptor

java.lang.Object
  extended by com.veromodo.tempo.sem.desc.Descriptor
All Implemented Interfaces:
java.lang.Comparable
Direct Known Subclasses:
AnonymousDescriptor, AutomatonComponentDescriptor, AutomatonDescriptor, AutomatonFormalDescriptor, AutomatonInstanceDescriptor, ChooseLocalDescriptor, CompositeComponentFormal, EnumValueDescriptor, ForLoopDescriptor, FunctionDescriptor, FunctionFormalDescriptor, FunctionLetDescriptor, HiddenLocalDescriptor, InfixOperator, MixOperator, PlaceHolderDescriptor, PrefixOperator, ProofActionLocalDescriptor, QuantifiedDescriptor, ScheduleStateDescriptor, SigFormalDescriptor, SignatureDescriptor, StateDescriptor, SuffixOperator, SumTagDescriptor, TaskLocalDescriptor, TrajectoryDescriptor, TransitionDescriptor, TransLocalDescriptor, TupleFieldDescriptor, TypeDescriptor, UnQuantifiedActualDescriptor, VocabularyDescriptor

public abstract class Descriptor
extends java.lang.Object
implements java.lang.Comparable

The abstract class for the root of the descriptor hierarchy Descriptors are used by the semantic environment to describe, track, and tag semantic constructions, often referred to by an identifiers. Descriptors satisfy two invariants, For any semantic construction (ie Automaton, state variable, transition, ect.) 1) there is 1 descriptor describing that construction 2) every reference is to that construction is tags with that same descriptor Because the descriptors satisfy these invariants in the process of semantic checking descriptors fully disambiguate all name overloading. The primary descriptive information these classes track is the constructions type, but it is intended for these classes be subclassed to support additional information.(ie implementation details, translation flags)

Author:
L. Michel

Nested Class Summary
static class Descriptor.Kind
          The Kind enumeration is useful for defining sets of different types of descriptors These sets are used when collecting descriptors out of the environment's scope and when defining semantic rules The Kind enumeration is not required for distinguishing between different types of descriptors because there is always a 1-to-1 relationship between the instantiatable descriptor classes and the Kind enumeration
 
Constructor Summary
Descriptor(Type t, Descriptor.Kind k, Extent e, GenericizeType gen)
           
Descriptor(Type t, Descriptor src)
           
 
Method Summary
static java.util.EnumSet<Descriptor.Kind> actionFormalKinds()
           
static java.util.EnumSet<Descriptor.Kind> allKinds()
           
static java.util.EnumSet<Descriptor.Kind> AutomatonComponentKinds()
           
static java.util.EnumSet<Descriptor.Kind> AutomatonDerefKinds()
           
static java.util.EnumSet<Descriptor.Kind> AutomatonInstanceKinds()
           
static java.util.EnumSet<Descriptor.Kind> AutomatonKinds()
           
static java.util.EnumSet<Descriptor.Kind> AutomatonStateKinds()
           
 int compareTo(java.lang.Object o)
           
static java.util.EnumSet<Descriptor.Kind> componentKinds()
           
static java.util.EnumSet<Descriptor.Kind> correspKinds()
           
static java.util.EnumSet<Descriptor.Kind> effectKinds()
           
static java.util.EnumSet<Descriptor.Kind> functionKind()
           
 Extent getExtent()
           
 Descriptor.Kind getKind()
           
 Type getType()
           
 int hashCode()
           
static java.util.EnumSet<Descriptor.Kind> hiddenKinds()
           
static java.util.EnumSet<Descriptor.Kind> initiallyKinds()
           
static java.util.EnumSet<Descriptor.Kind> initValueKinds()
           
static java.util.EnumSet<Descriptor.Kind> invocationKinds()
           
 boolean isIn(java.util.EnumSet<Descriptor.Kind> bs)
           
 boolean isType()
           
static java.util.EnumSet<Descriptor.Kind> ndrStatesKinds()
           
static java.util.EnumSet<Descriptor.Kind> preconditionKinds()
           
static java.util.EnumSet<Descriptor.Kind> proofKinds()
           
abstract  Descriptor resolve()
          builds a new descriptor where the bound type parameters of the descriptor's type are assigned to their bound type.
static java.util.EnumSet<Descriptor.Kind> scheduleKinds()
           
 void setScope(IScope s)
           
static java.util.EnumSet<Descriptor.Kind> signatureExternalKinds()
           
static java.util.EnumSet<Descriptor.Kind> signatureInputKinds()
           
static java.util.EnumSet<Descriptor.Kind> signatureInternalKinds()
           
static java.util.EnumSet<Descriptor.Kind> signatureKinds()
           
static java.util.EnumSet<Descriptor.Kind> signatureOutputKinds()
           
static java.util.EnumSet<Descriptor.Kind> taskForKinds()
           
static java.util.EnumSet<Descriptor.Kind> taskKinds()
           
static java.util.EnumSet<Descriptor.Kind> trajectoryKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionActualKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionInputKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionInternalKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionOutputKinds()
           
static java.util.EnumSet<Descriptor.Kind> transitionWhereKinds()
           
static java.util.EnumSet<Descriptor.Kind> VocabOpKinds()
           
static java.util.EnumSet<Descriptor.Kind> VocabularyKinds()
           
 
Methods inherited from class java.lang.Object
equals, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Descriptor

public Descriptor(Type t,
                  Descriptor.Kind k,
                  Extent e,
                  GenericizeType gen)

Descriptor

public Descriptor(Type t,
                  Descriptor src)
Method Detail

getType

public Type getType()

getKind

public Descriptor.Kind getKind()

getExtent

public Extent getExtent()

setScope

public void setScope(IScope s)

isType

public boolean isType()

isIn

public boolean isIn(java.util.EnumSet<Descriptor.Kind> bs)

resolve

public abstract Descriptor resolve()
builds a new descriptor where the bound type parameters of the descriptor's type are assigned to their bound type. If the type does not change is returned This method is helpful for instantiation

Returns:
a descriptor with all bound type parameters resolved to their bound type

allKinds

public static java.util.EnumSet<Descriptor.Kind> allKinds()

functionKind

public static java.util.EnumSet<Descriptor.Kind> functionKind()

initValueKinds

public static java.util.EnumSet<Descriptor.Kind> initValueKinds()

initiallyKinds

public static java.util.EnumSet<Descriptor.Kind> initiallyKinds()

actionFormalKinds

public static java.util.EnumSet<Descriptor.Kind> actionFormalKinds()

trajectoryKinds

public static java.util.EnumSet<Descriptor.Kind> trajectoryKinds()

signatureKinds

public static java.util.EnumSet<Descriptor.Kind> signatureKinds()

signatureInputKinds

public static java.util.EnumSet<Descriptor.Kind> signatureInputKinds()

signatureOutputKinds

public static java.util.EnumSet<Descriptor.Kind> signatureOutputKinds()

signatureInternalKinds

public static java.util.EnumSet<Descriptor.Kind> signatureInternalKinds()

signatureExternalKinds

public static java.util.EnumSet<Descriptor.Kind> signatureExternalKinds()

transitionKinds

public static java.util.EnumSet<Descriptor.Kind> transitionKinds()

transitionInputKinds

public static java.util.EnumSet<Descriptor.Kind> transitionInputKinds()

transitionOutputKinds

public static java.util.EnumSet<Descriptor.Kind> transitionOutputKinds()

transitionInternalKinds

public static java.util.EnumSet<Descriptor.Kind> transitionInternalKinds()

transitionActualKinds

public static java.util.EnumSet<Descriptor.Kind> transitionActualKinds()

transitionWhereKinds

public static java.util.EnumSet<Descriptor.Kind> transitionWhereKinds()

preconditionKinds

public static java.util.EnumSet<Descriptor.Kind> preconditionKinds()

effectKinds

public static java.util.EnumSet<Descriptor.Kind> effectKinds()

taskKinds

public static java.util.EnumSet<Descriptor.Kind> taskKinds()

taskForKinds

public static java.util.EnumSet<Descriptor.Kind> taskForKinds()

scheduleKinds

public static java.util.EnumSet<Descriptor.Kind> scheduleKinds()

ndrStatesKinds

public static java.util.EnumSet<Descriptor.Kind> ndrStatesKinds()

invocationKinds

public static java.util.EnumSet<Descriptor.Kind> invocationKinds()

proofKinds

public static java.util.EnumSet<Descriptor.Kind> proofKinds()

correspKinds

public static java.util.EnumSet<Descriptor.Kind> correspKinds()

componentKinds

public static java.util.EnumSet<Descriptor.Kind> componentKinds()

hiddenKinds

public static java.util.EnumSet<Descriptor.Kind> hiddenKinds()

AutomatonKinds

public static java.util.EnumSet<Descriptor.Kind> AutomatonKinds()

AutomatonInstanceKinds

public static java.util.EnumSet<Descriptor.Kind> AutomatonInstanceKinds()

AutomatonComponentKinds

public static java.util.EnumSet<Descriptor.Kind> AutomatonComponentKinds()

VocabularyKinds

public static java.util.EnumSet<Descriptor.Kind> VocabularyKinds()

AutomatonStateKinds

public static java.util.EnumSet<Descriptor.Kind> AutomatonStateKinds()

AutomatonDerefKinds

public static java.util.EnumSet<Descriptor.Kind> AutomatonDerefKinds()

VocabOpKinds

public static java.util.EnumSet<Descriptor.Kind> VocabOpKinds()

hashCode

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

compareTo

public int compareTo(java.lang.Object o)
Specified by:
compareTo in interface java.lang.Comparable