39 #include <llvm/ADT/ArrayRef.h>
40 #include <llvm/ADT/OwningPtr.h>
41 #include <llvm/ADT/SmallPtrSet.h>
42 #include <llvm/Support/Casting.h>
49 class FieldAssignment;
123 bool Init,
bool Cleanup);
158 llvm::SmallVector<const Argument*,4>
NewArguments()
const;
179 virtual std::string
DotLabel()
const = 0;
181 virtual std::string
String()
const;
197 : From(From), To(To), Init(Init), Cleanup(Cleanup),
198 OutOfScope(OutOfScope)
201 assert(!Init || !OutOfScope);
227 return llvm::isa<NullTransition>(Other);
242 :
Transition(From, To, Init, Cleanup, false) {}
260 if (!T)
return false;
278 :
Transition(From, To, Init, Cleanup, false), Ev(Ev), Refs(Refs)
302 if (!T)
return false;
316 (Ev == llvm::cast<FnTransition>(&T)->FnEvent());
322 :
Transition(From, To, Init, Cleanup, OutOfScope), Ev(Ev) {}
324 const FunctionEvent& Ev;
343 if (!T)
return false;
345 return T->Assign == Assign;
357 (Assign == llvm::cast<FieldAssignTransition>(&T)->Assignment());
369 llvm::OwningArrayPtr<const Argument*> ReferencedVariables;
388 if (!T)
return false;
402 (ID == llvm::cast<SubAutomatonTransition>(&T)->ID);
408 :
Transition(From, To, false, false, false), ID(ID) {}
410 const Identifier& ID;
418 #endif // TRANSITION_H