Lines Matching refs:Emitter

26 template <class Emitter> class LabelScope {
31 LabelScope(ByteCodeStmtGen<Emitter> *Ctx) : Ctx(Ctx) {} in LabelScope()
33 ByteCodeStmtGen<Emitter> *Ctx;
37 template <class Emitter> class LoopScope final : public LabelScope<Emitter> {
39 using LabelTy = typename ByteCodeStmtGen<Emitter>::LabelTy;
40 using OptLabelTy = typename ByteCodeStmtGen<Emitter>::OptLabelTy;
42 LoopScope(ByteCodeStmtGen<Emitter> *Ctx, LabelTy BreakLabel, in LoopScope()
44 : LabelScope<Emitter>(Ctx), OldBreakLabel(Ctx->BreakLabel), in LoopScope()
61 template <class Emitter> class SwitchScope final : public LabelScope<Emitter> {
63 using LabelTy = typename ByteCodeStmtGen<Emitter>::LabelTy;
64 using OptLabelTy = typename ByteCodeStmtGen<Emitter>::OptLabelTy;
65 using CaseMap = typename ByteCodeStmtGen<Emitter>::CaseMap;
67 SwitchScope(ByteCodeStmtGen<Emitter> *Ctx, CaseMap &&CaseLabels, in SwitchScope()
69 : LabelScope<Emitter>(Ctx), OldBreakLabel(Ctx->BreakLabel), in SwitchScope()
92 template <class Emitter>
93 bool ByteCodeStmtGen<Emitter>::visitFunc(const FunctionDecl *F) { in visitFunc()
164 template <class Emitter>
165 bool ByteCodeStmtGen<Emitter>::visitStmt(const Stmt *S) { in visitStmt()
195 template <class Emitter>
196 bool ByteCodeStmtGen<Emitter>::visitCompoundStmt( in visitCompoundStmt()
198 BlockScope<Emitter> Scope(this); in visitCompoundStmt()
205 template <class Emitter>
206 bool ByteCodeStmtGen<Emitter>::visitDeclStmt(const DeclStmt *DS) { in visitDeclStmt()
224 template <class Emitter>
225 bool ByteCodeStmtGen<Emitter>::visitReturnStmt(const ReturnStmt *RS) { in visitReturnStmt()
227 ExprScope<Emitter> RetScope(this); in visitReturnStmt()
253 template <class Emitter>
254 bool ByteCodeStmtGen<Emitter>::visitIfStmt(const IfStmt *IS) { in visitIfStmt()
255 BlockScope<Emitter> IfScope(this); in visitIfStmt()
298 template <class Emitter>
299 bool ByteCodeStmtGen<Emitter>::visitWhileStmt(const WhileStmt *S) { in visitWhileStmt()
305 LoopScope<Emitter> LS(this, EndLabel, CondLabel); in visitWhileStmt()
323 template <class Emitter>
324 bool ByteCodeStmtGen<Emitter>::visitDoStmt(const DoStmt *S) { in visitDoStmt()
331 LoopScope<Emitter> LS(this, EndLabel, CondLabel); in visitDoStmt()
345 template <class Emitter>
346 bool ByteCodeStmtGen<Emitter>::visitForStmt(const ForStmt *S) { in visitForStmt()
356 LoopScope<Emitter> LS(this, EndLabel, IncLabel); in visitForStmt()
378 template <class Emitter>
379 bool ByteCodeStmtGen<Emitter>::visitBreakStmt(const BreakStmt *S) { in visitBreakStmt()
386 template <class Emitter>
387 bool ByteCodeStmtGen<Emitter>::visitContinueStmt(const ContinueStmt *S) { in visitContinueStmt()