Esempio n. 1
0
 public CCodeFunction(string name, string return_type = "void")
 {
     this.name        = name;
     this.return_type = return_type;
     this.block       = new CCodeBlock();
     current_block    = block;
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        public void open_block()
        {
            statement_stack.Add(current_block);
            var parent_block = current_block;

            current_block = new CCodeBlock();

            parent_block.add_statement(current_block);
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }