Intel SPMD Program Compiler  1.12.0
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
SwitchStmt Class Reference

#include <stmt.h>

Inheritance diagram for SwitchStmt:
Inheritance graph
[legend]
Collaboration diagram for SwitchStmt:
Collaboration graph
[legend]

Public Member Functions

 SwitchStmt (Expr *expr, Stmt *stmts, SourcePos pos)
 
void EmitCode (FunctionEmitContext *ctx) const
 
void Print (int indent) const
 
StmtTypeCheck ()
 
int EstimateCost () const
 
- Public Member Functions inherited from Stmt
 Stmt (SourcePos p, unsigned scid)
 
virtual StmtOptimize ()
 
- Public Member Functions inherited from ASTNode
 ASTNode (SourcePos p, unsigned scid)
 
virtual ~ASTNode ()
 
unsigned getValueID () const
 

Static Public Member Functions

static bool classof (SwitchStmt const *)
 
static bool classof (ASTNode const *N)
 
- Static Public Member Functions inherited from Stmt
static bool classof (Stmt const *)
 
static bool classof (ASTNode const *N)
 
- Static Public Member Functions inherited from ASTNode
static bool classof (ASTNode const *)
 

Public Attributes

Exprexpr
 
Stmtstmts
 
- Public Attributes inherited from ASTNode
SourcePos pos
 

Additional Inherited Members

- Public Types inherited from ASTNode
enum  ASTNodeTy {
  AddressOfExprID, AssignExprID, BinaryExprID, ConstExprID,
  DerefExprID, PtrDerefExprID, RefDerefExprID, ExprListID,
  FunctionCallExprID, FunctionSymbolExprID, IndexExprID, StructMemberExprID,
  VectorMemberExprID, NewExprID, NullPointerExprID, ReferenceExprID,
  SelectExprID, SizeOfExprID, SymbolExprID, SyncExprID,
  TypeCastExprID, UnaryExprID, MaxExprID, AssertStmtID,
  BreakStmtID, CaseStmtID, ContinueStmtID, DeclStmtID,
  DefaultStmtID, DeleteStmtID, DoStmtID, ExprStmtID,
  ForeachActiveStmtID, ForeachStmtID, ForeachUniqueStmtID, ForStmtID,
  GotoStmtID, IfStmtID, LabeledStmtID, PrintStmtID,
  ReturnStmtID, StmtListID, SwitchStmtID, UnmaskedStmtID
}
 

Detailed Description

A "switch" statement in the program.

Definition at line 378 of file stmt.h.

Constructor & Destructor Documentation

◆ SwitchStmt()

SwitchStmt::SwitchStmt ( Expr expr,
Stmt stmts,
SourcePos  pos 
)

Definition at line 2495 of file stmt.cpp.

References expr, and stmts.

Member Function Documentation

◆ classof() [1/2]

static bool SwitchStmt::classof ( SwitchStmt const *  )
inlinestatic

Definition at line 382 of file stmt.h.

◆ classof() [2/2]

static bool SwitchStmt::classof ( ASTNode const *  N)
inlinestatic

◆ EmitCode()

void SwitchStmt::EmitCode ( FunctionEmitContext ctx) const
virtual

◆ EstimateCost()

int SwitchStmt::EstimateCost ( ) const
virtual

Estimate the execution cost of the node (not including the cost of the children. The value returned should be based on the COST_* enumerant values defined in ispc.h.

Implements ASTNode.

Definition at line 2667 of file stmt.cpp.

References COST_UNIFORM_SWITCH, COST_VARYING_SWITCH, expr, Expr::GetType(), and Type::IsVaryingType().

◆ Print()

void SwitchStmt::Print ( int  indent) const
virtual

Print a representation of the statement (and any children AST nodes) to standard output. This method is used for debuggins.

Implements Stmt.

Definition at line 2626 of file stmt.cpp.

References expr, ASTNode::pos, Stmt::Print(), Expr::Print(), SourcePos::Print(), and stmts.

◆ TypeCheck()

Stmt * SwitchStmt::TypeCheck ( )
virtual

Type checking should be performed by the node when this method is called. In the event of an error, a NULL value may be returned. As with ASTNode::Optimize(), the caller should store the returned pointer in place of the original ASTNode *.

Implements Stmt.

Definition at line 2636 of file stmt.cpp.

References Assert, Type::EqualIgnoringConst(), Module::errorCount, expr, Type::GetAsConstType(), Type::GetAsUniformType(), Expr::GetType(), Type::IsUniformType(), m, TypeConvertExpr(), AtomicType::UniformInt32, AtomicType::UniformInt64, AtomicType::UniformUInt64, AtomicType::VaryingInt32, and AtomicType::VaryingInt64.

Member Data Documentation

◆ expr

Expr* SwitchStmt::expr

Expression that is used to determine which label to jump to.

Definition at line 392 of file stmt.h.

Referenced by EmitCode(), EstimateCost(), Print(), SwitchStmt(), TypeCheck(), and WalkAST().

◆ stmts

Stmt* SwitchStmt::stmts

Statement block after the "switch" expression.

Definition at line 394 of file stmt.h.

Referenced by EmitCode(), Print(), SwitchStmt(), and WalkAST().


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