void parseCaseLabelExprNode(CaseLabelExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); node->caseLabel = createParseNode( node, CASE_LABEL(node->gccNode), "case label"); if (CASE_LOW(node->gccNode)) { node->caseLow = static_cast<IntegerCstNode*>(createParseNode( node, CASE_LOW(node->gccNode), "case low")); node->caseHigh = static_cast<IntegerCstNode*>(createParseNode( node, CASE_HIGH(node->gccNode), "case high")); } }
void parseCompoundExprNode(CompoundExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); }
void parseNonLvalueExprNode(NonLvalueExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); }
void parseExitExprNode(ExitExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); }
void parseTruncDivExprNode(TruncDivExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); }
void parseViewConvertExprNode(ViewConvertExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); fillExprOperands(node); }
IType* TypeBuilder::createType() { if( _typeWasCreated ) return _type.get(); fillType(); _typeWasCreated = true; return _type.get(); }
void parseLeExprNode(LeExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); // if (node->parseChilds <= 0) // return; fillExprOperands(node); }
void parseEmptyClassExprNode(EmptyClassExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); node->type = static_cast<TypeNode*>(createParseNode( node, TREE_TYPE(node->gccNode), "type")); }
void parseTemplateTypeParmNode(TemplateTypeParmNode *node) { fillType(node); Log::dump(node); #ifdef ENABLE_CXXLANG node->index = createParseNode( node, TEMPLATE_TYPE_PARM_INDEX(node->gccNode), "index"); #endif }
void parseDeclExprNode(DeclExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); // if (node->parseChilds <= 0) // return; fillExprOperands(node); // args 0 - DECL_EXPR_DECL }
void parseExprStmtNode(ExprStmtNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); if (node->parseChilds <= 0) return; node->expression = static_cast<ExprNode*>(createParseNode( node, EXPR_STMT_EXPR(node->gccNode), "expresssion")); }
void parseStatementListNode(StatementListNode *node) { fillType(node); Log::dump(node); if (node->parseChilds <= 0) return; for (tree_stmt_iterator it = tsi_start (node->gccNode); !tsi_end_p (it); tsi_next (&it)) { node->statements.push_back(createParseNode( node, tsi_stmt (it), "statement")); } }
void parseCallExprNode(CallExprNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); // not recommended // fillExprOperands(node); if (CALL_EXPR_FN(node->gccNode) != NULL_TREE) { node->function = createParseNode( node, CALL_EXPR_FN(node->gccNode), "function"); } else { node->functionName = internal_fn_name(CALL_EXPR_IFN (node->gccNode)); Log::dump(node, "- function: %s", node->functionName.c_str()); } // if (node->parseChilds <= 0) // return; const int argsCount = call_expr_nargs(node->gccNode); for (int f = 0; f < argsCount; f ++) { node->args.push_back(createParseNode( node, CALL_EXPR_ARG(node->gccNode, f), "arg")); } node->chain = createParseNode( node, CALL_EXPR_STATIC_CHAIN(node->gccNode), "chain"); if (node->functionName == "LOAD_LANES") return; }
void parseFunctionTypeNode(FunctionTypeNode *node) { fillType(node); Log::dump(node); node->returnType = static_cast<TypeNode*>(createParseNode( node, TREE_TYPE(node->gccNode), "function return type", node->parseChilds)); fillTypeAttributes(node); if (node->parseChilds <= 0) return; fillTypeName(node); node->argTypes = static_cast<TreeListNode*>(createParseNode( node, TYPE_ARG_TYPES(node->gccNode), TREE_LIST, "arg types")); }
void parseBreakStmtNode(BreakStmtNode *node) { fillType(node); fillExprLocation(node); Log::dump(node); }