Computer Laboratory

Detailed Description

A field assignment transition.

Definition at line 331 of file Transition.h.

#include "Transition.h"

+ Inheritance diagram for tesla::FieldAssignTransition:
+ Collaboration diagram for tesla::FieldAssignTransition:

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 FieldAssignmentAssignment () const
 
bool IsStrict () const
 This transition can only occur as described in an automaton. More...
 
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...
 
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::FieldAssignTransition::Arguments ( ) const
inlinevirtual

Arguments referenced by this transition.

Implements tesla::Transition.

Definition at line 337 of file Transition.h.

337 { return Refs; }
const FieldAssignment& tesla::FieldAssignTransition::Assignment ( ) const
inline

Definition at line 338 of file Transition.h.

338 { return Assign; }
static bool tesla::FieldAssignTransition::classof ( const Transition T)
inlinestatic

Definition at line 348 of file Transition.h.

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

348  {
349  return T->getKind() == FieldAssign;
350  }

+ Here is the call graph for this function:

string tesla::FieldAssignTransition::DotLabel ( ) const
virtual

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

Implements tesla::Transition.

Definition at line 349 of file Transition.cpp.

References tesla::StructField::base, tesla::FieldAssignment::field, tesla::StructField::name, tesla::FieldAssignment::operation, tesla::ShortName(), tesla::StructField::type, and tesla::FieldAssignment::value.

349  {
350  return (Twine()
351  + "struct " + Assign.field().type() + ":\\l"
352  + ShortName(&Assign.field().base())
353  + "."
354  + Assign.field().name()
355  + " "
356  + OpString(Assign.operation())
357  + " "
358  + ShortName(&Assign.value())
359  ).str();
360 }

+ Here is the call graph for this function:

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

Definition at line 341 of file Transition.h.

341  {
342  auto *T = llvm::dyn_cast<FieldAssignTransition>(Other);
343  if (!T) return false;
344 
345  return T->Assign == Assign;
346  }
virtual bool tesla::FieldAssignTransition::EquivalentTo ( const Transition T) const
inlineprotectedvirtual

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

Implements tesla::Transition.

Definition at line 355 of file Transition.h.

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

355  {
356  return (T.getKind() == FieldAssign) &&
357  (Assign == llvm::cast<FieldAssignTransition>(&T)->Assignment());
358  }

+ Here is the call graph for this function:

virtual TransitionKind tesla::FieldAssignTransition::getKind ( ) const
inlinevirtual

Implements tesla::Transition.

Definition at line 352 of file Transition.h.

References tesla::Transition::FieldAssign.

352 { return FieldAssign; };
bool tesla::FieldAssignTransition::IsRealisable ( ) const
inlinevirtual

Can this transition be captured by real instrumentation code?

Implements tesla::Transition.

Definition at line 333 of file Transition.h.

333 { return true; }
bool tesla::FieldAssignTransition::IsStrict ( ) const
inlinevirtual

This transition can only occur as described in an automaton.

Reimplemented from tesla::Transition.

Definition at line 339 of file Transition.h.

References tesla::FieldAssignment::strict.

339 { return Assign.strict(); }
string tesla::FieldAssignTransition::ShortLabel ( ) const
virtual

A short, human-readable label.

Implements tesla::Transition.

Definition at line 337 of file Transition.cpp.

References tesla::StructField::base, tesla::FieldAssignment::field, tesla::StructField::name, tesla::FieldAssignment::operation, tesla::ShortName(), and tesla::FieldAssignment::value.

337  {
338  return (Twine()
339  + ShortName(&Assign.field().base())
340  + "."
341  + Assign.field().name()
342  + " "
343  + OpString(Assign.operation())
344  + " "
345  + ShortName(&Assign.value())
346  ).str();
347 }

+ Here is the call graph for this function:

Friends And Related Function Documentation

friend class Transition
friend

Definition at line 372 of file Transition.h.


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