MCPcopy Create free account
hub / github.com/Samsung/UTopia / getArgExprs

Function getArgExprs

lib/utils/ASTUtil.cpp:57–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55}
56
57std::vector<Expr *> getArgExprs(Expr &E) {
58 std::vector<Expr *> Args;
59 if (auto *CE = dyn_cast<CallExpr>(&E)) {
60 for (size_t S = 0, E = CE->getNumArgs(); S < E; ++S)
61 Args.push_back(CE->getArg(S));
62 } else if (auto *CMCE = dyn_cast<CXXMemberCallExpr>(&E)) {
63 for (size_t S = 0, E = CMCE->getNumArgs(); S < E; ++S)
64 Args.push_back(CMCE->getArg(S));
65 } else if (auto *CCE = dyn_cast<CXXConstructExpr>(&E)) {
66 for (size_t S = 0, E = CCE->getNumArgs(); S < E; ++S)
67 Args.push_back(CCE->getArg(S));
68 } else if (auto *CNE = dyn_cast<CXXNewExpr>(&E)) {
69 for (auto S = CNE->raw_arg_begin(), E = CNE->raw_arg_end(); S != E; ++S) {
70 assert(S && "Unexpected Program State");
71 assert(isa<Expr>(*S) && "Unexpected Program State");
72 Args.push_back(dyn_cast<Expr>(*S));
73 }
74
75 if (Args.size() > 0 && isa<CXXConstructExpr>(Args.back()))
76 Args.pop_back();
77 } else if (auto *CDE = dyn_cast<CXXDeleteExpr>(&E)) {
78 Args.push_back(CDE->getArgument());
79 } else
80 throw std::invalid_argument("");
81
82 return Args;
83}
84
85clang::SourceLocation getDebugLoc(const clang::Stmt &S) {
86 if (const auto *E = dyn_cast<CXXOperatorCallExpr>(&S))

Callers 6

isDefaultArgumentFunction · 0.85
isImplicitArgumentFunction · 0.85
ASTDefNodeMethod · 0.85
hasDiffNumArgsMethod · 0.85
isArgsInMacroMethod · 0.85
TEST_FFunction · 0.85

Calls 2

getArgMethod · 0.80
sizeMethod · 0.80

Tested by 1

TEST_FFunction · 0.68