Computer Laboratory

Detailed Description

A sub-automaton.

Definition at line 377 of file Transition.h.

#include "Transition.h"

+ Inheritance diagram for tesla::SubAutomatonTransition:
+ Collaboration diagram for tesla::SubAutomatonTransition:

Public Member Functions

bool IsRealisable () const
 Can this transition be captured by real instrumentation code? More...
 
std::string ShortLabel () const
 A short, human-readable label. More...
 
std::string DotLabel () const
 A label that can go in a .dot file (can use newline, Greek HTML codes...). More...
 
const ReferenceVector Arguments () const
 Arguments referenced by this transition. More...
 
const IdentifierGetID () const
 
bool EquivalentExpression (const Transition *Other) const
 
virtual TransitionKind getKind () const
 
- Public Member Functions inherited from tesla::Transition
virtual ~Transition ()
 
const StateSource () const
 
const StateDestination () const
 
bool RequiresInit () const
 This transition triggers initialisation of its TESLA automata class. More...
 
bool RequiresCleanup () const
 This transition triggers cleanup of its TESLA automata class. More...
 
virtual bool IsStrict () const
 This transition can only occur as described in an automaton. More...
 
llvm::SmallVector< const
Argument *, 4 > 
NewArguments () const
 Arguments newly referenced by this transition (unknown to previous state). More...
 
int NewArgMask () const
 A bitmask representing the arguments newly referenced by this transition. More...
 
void ReferencesThusFar (llvm::OwningArrayPtr< const Argument * > &Args, ReferenceVector &Ref) const
 The references known at the point this transition occurs. More...
 
virtual std::string String () const
 
bool InScope () const
 

Static Public Member Functions

static bool classof (const Transition *T)
 
- Static Public Member Functions inherited from tesla::Transition
static void Create (State &From, State &To, TransitionVector &Transitions, bool Init=false, bool Cleanup=false)
 Create an unconditional transition. More...
 
static void Create (State &From, State &To, const FunctionEvent &Ev, TransitionVector &, bool Init, bool Cleanup, bool OutOfScope=false)
 Create a FunctionEvent transition. More...
 
static void Create (State &From, State &To, const FieldAssignment &A, TransitionVector &, bool Init, bool Cleanup, bool OutOfScope=false)
 Create a FieldAssignment transition. More...
 
static void Create (State &From, State &To, const NowEvent &, const AutomatonDescription &, TransitionVector &, bool Init, bool Cleanup)
 
static void CreateSubAutomaton (State &From, State &To, const Identifier &, TransitionVector &)
 
static void Copy (State &From, State &To, const Transition *Other, TransitionVector &, bool OutOfScope=false)
 Creates a transition between the specified states, with the same transition type as the copied transition. More...
 
static void GroupClasses (const TransitionVector &, TransitionSets &)
 Group transitions into equivalence classes. More...
 

Protected Member Functions

virtual bool EquivalentTo (const Transition &T) const
 Does this transition consume and produce the same symbols as another? More...
 
- Protected Member Functions inherited from tesla::Transition
 Transition (const State &From, const State &To, bool Init, bool Cleanup, bool OutOfScope)
 

Friends

class Transition
 

Additional Inherited Members

- Public Types inherited from tesla::Transition
enum  TransitionKind {
  Null, Now, Fn, FieldAssign,
  SubAutomaton
}
 Information for LLVM's RTTI (isa<>, cast<>, etc.). More...
 
- Static Protected Member Functions inherited from tesla::Transition
static void Register (llvm::OwningPtr< Transition > &, State &From, State &To, TransitionVector &)
 
static void Append (const llvm::OwningPtr< Transition > &, TransitionSets &)
 
- Protected Attributes inherited from tesla::Transition
const StateFrom
 
const StateTo
 
bool Init
 This transition triggers initialisation. More...
 
bool Cleanup
 This transition triggers cleanup. More...
 
const bool OutOfScope
 

Member Function Documentation

const ReferenceVector tesla::SubAutomatonTransition::Arguments ( ) const
virtual

Arguments referenced by this transition.

Implements tesla::Transition.

Definition at line 371 of file Transition.cpp.

371  {
372  // TODO: actually find sub-automaton!
373  return ReferenceVector();
374 }
static bool tesla::SubAutomatonTransition::classof ( const Transition T)
inlinestatic

Definition at line 393 of file Transition.h.

References tesla::Transition::getKind(), and tesla::Transition::SubAutomaton.

393  {
394  return T->getKind() == SubAutomaton;
395  }

+ Here is the call graph for this function:

std::string tesla::SubAutomatonTransition::DotLabel ( ) const
inlinevirtual

A label that can go in a .dot file (can use newline, Greek HTML codes...).

Implements tesla::Transition.

Definition at line 381 of file Transition.h.

References tesla::ShortName().

381 { return ShortName(ID); }

+ Here is the call graph for this function:

bool tesla::SubAutomatonTransition::EquivalentExpression ( const Transition Other) const
inline

Definition at line 386 of file Transition.h.

386  {
387  auto *T = llvm::dyn_cast<SubAutomatonTransition>(Other);
388  if (!T) return false;
389 
390  return T->ID == ID;
391  }
virtual bool tesla::SubAutomatonTransition::EquivalentTo ( const Transition T) const
inlineprotectedvirtual

Does this transition consume and produce the same symbols as another?

Implements tesla::Transition.

Definition at line 400 of file Transition.h.

References tesla::Transition::getKind(), and tesla::Transition::SubAutomaton.

400  {
401  return (T.getKind() == SubAutomaton) &&
402  (ID == llvm::cast<SubAutomatonTransition>(&T)->ID);
403  }

+ Here is the call graph for this function:

const Identifier& tesla::SubAutomatonTransition::GetID ( ) const
inline

Definition at line 384 of file Transition.h.

384 { return ID; }
virtual TransitionKind tesla::SubAutomatonTransition::getKind ( ) const
inlinevirtual

Implements tesla::Transition.

Definition at line 397 of file Transition.h.

References tesla::Transition::SubAutomaton.

397 { return SubAutomaton; };
bool tesla::SubAutomatonTransition::IsRealisable ( ) const
inlinevirtual

Can this transition be captured by real instrumentation code?

Implements tesla::Transition.

Definition at line 379 of file Transition.h.

379 { return false; }
std::string tesla::SubAutomatonTransition::ShortLabel ( ) const
inlinevirtual

A short, human-readable label.

Implements tesla::Transition.

Definition at line 380 of file Transition.h.

References tesla::ShortName().

380 { return ShortName(ID); }

+ Here is the call graph for this function:

Friends And Related Function Documentation

friend class Transition
friend

Definition at line 412 of file Transition.h.


The documentation for this class was generated from the following files: