public CCodeFunction(string name, string return_type = "void") { this.name = name; this.return_type = return_type; this.block = new CCodeBlock(); current_block = block; }
public void close() { do { var top = statement_stack[statement_stack.Count - 1]; statement_stack.RemoveAt(statement_stack.Count - 1); current_block = top as CCodeBlock; } while (current_block == null); }
public void open_block() { statement_stack.Add(current_block); var parent_block = current_block; current_block = new CCodeBlock(); parent_block.add_statement(current_block); }
public void add_else() { current_block = new CCodeBlock(); var cif = (CCodeIfStatement)statement_stack[statement_stack.Count - 1]; cif.line = current_line; Debug.Assert(cif.false_statement == null); cif.false_statement = current_block; }
public void open_switch(CCodeExpression expression) { statement_stack.Add(current_block); var parent_block = current_block; var cswitch = new CCodeSwitchStatement(expression); cswitch.line = current_line; current_block = cswitch; parent_block.add_statement(cswitch); }
public void open_while(CCodeExpression condition) { statement_stack.Add(current_block); var parent_block = current_block; current_block = new CCodeBlock(); var cwhile = new CCodeWhileStatement(condition, current_block); cwhile.line = current_line; parent_block.add_statement(cwhile); }
public void open_if(CCodeExpression condition) { statement_stack.Add(current_block); var parent_block = current_block; current_block = new CCodeBlock(); var cif = new CCodeIfStatement(condition, current_block); cif.line = current_line; statement_stack.Add(cif); parent_block.add_statement(cif); }
public void else_if(CCodeExpression condition) { var parent_if = (CCodeIfStatement)statement_stack[statement_stack.Count - 1]; statement_stack.RemoveAt(statement_stack.Count - 1); Debug.Assert(parent_if.false_statement == null); current_block = new CCodeBlock(); var cif = new CCodeIfStatement(condition, current_block); cif.line = current_line; parent_if.false_statement = cif; statement_stack.Add(cif); }
public void open_for(CCodeExpression initializer, CCodeExpression condition, CCodeExpression iterator) { statement_stack.Add(current_block); var parent_block = current_block; current_block = new CCodeBlock(); var cfor = new CCodeForStatement(condition, current_block); cfor.line = current_line; if (initializer != null) { cfor.add_initializer(initializer); } if (iterator != null) { cfor.add_iterator(iterator); } parent_block.add_statement(cfor); }