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

Representation of a print() statement in the program. More...

#include <stmt.h>

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

Public Member Functions

 PrintStmt (const std::string &f, Expr *v, SourcePos p)
 
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 (PrintStmt 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

const std::string format
 
Exprvalues
 
- 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

Representation of a print() statement in the program.

It's currently necessary to have a special statement type for print() since strings aren't supported as first-class types in the language, but we need to be able to pass a formatting string as the first argument to print(). We also need this to be a variable argument function, which also isn't supported. Representing print() as a statement lets us work around both of those ugly little issues...

Definition at line 532 of file stmt.h.

Constructor & Destructor Documentation

PrintStmt::PrintStmt ( const std::string &  f,
Expr v,
SourcePos  p 
)

Definition at line 3267 of file stmt.cpp.

Member Function Documentation

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

Definition at line 536 of file stmt.h.

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

Definition at line 537 of file stmt.h.

References ASTNode::getValueID(), and ASTNode::PrintStmtID.

void PrintStmt::EmitCode ( FunctionEmitContext ctx) const
virtual
int PrintStmt::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 3469 of file stmt.cpp.

References COST_FUNCALL.

void PrintStmt::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 3457 of file stmt.cpp.

References format.

Stmt * PrintStmt::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 3463 of file stmt.cpp.

Member Data Documentation

const std::string PrintStmt::format

Format string for the print() statement.

Definition at line 548 of file stmt.h.

Referenced by EmitCode(), and Print().

Expr* PrintStmt::values

This holds the arguments passed to the print() statement. If more than one was provided, this will be an ExprList.

Definition at line 551 of file stmt.h.

Referenced by EmitCode(), and WalkAST().


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