bool findCallsWithFuncArgs2(SgNode *node, string &str) { SgExprStatement *statement; if (statement = isSgExprStatement(node)) { SgFunctionCallExp *call_exp; if (call_exp = isSgFunctionCallExp(statement->get_the_expr())) { m_nodes.clear(); m_nodes.insert(call_exp); m_domain.expand(&m_nodes, QRQueryDomain::all_children); m_domain.getNodes()->erase(call_exp); NodeQuery::VariantVector vector (V_SgFunctionCallExp); QRQueryOpVariant op(vector); op.performQuery(&m_domain, &m_range); unsigned hits = m_range.countRange(); if (hits) { set<SgNode *> *rnodes = m_range.getNodes(); for (set<SgNode *>::iterator iter = rnodes->begin(); iter != rnodes->end(); ) { SgFunctionCallExp *exp = (SgFunctionCallExp *) *iter; iter++; SgExpression *funcexpr = exp->get_function(); str += funcexpr->unparseToString(); if (iter != rnodes->end()) { str += ", "; } } return true; } } } return false; }
bool findCallsWithFuncArgs(SgNode *node, string &str) { SgExprStatement *statement; if (statement = isSgExprStatement(node)) { SgFunctionCallExp *call_exp; if (call_exp = isSgFunctionCallExp(statement->get_the_expr())) { m_nodes.clear(); m_nodes.insert(call_exp); m_domain.expand(&m_nodes, QRQueryDomain::all_children); m_domain.getNodes()->erase(call_exp); NodeQuery::VariantVector vector(V_SgFunctionCallExp); QRQueryOpVariant op(vector); op.performQuery(&m_domain, &m_range); unsigned hits = m_range.countRange(); if (hits) { sprintf(m_buffer, "%d", hits); str = m_buffer; return true; } } } return false; }