MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / CreateStatementItems

Function CreateStatementItems

formatter/generic/genericformatter.cpp:205–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203
204
205static vector<Item> CreateStatementItems(const vector<Item>& items)
206{
207 vector<Item> result, pending;
208 bool hasArgs = false;
209 for (auto& i : items)
210 {
211 if (i.type == StatementSeparator)
212 {
213 if (pending.empty())
214 {
215 result.push_back(Item {Atom, {}, {i.tokens}, 0});
216 }
217 else
218 {
219 for (auto& j : i.tokens)
220 pending.back().AddTokenToLastAtom(j);
221 result.push_back(Item {Statement, pending, {}, 0});
222 }
223 pending.clear();
224 hasArgs = true;
225 }
226 else if (i.type == StartOfContainer && pending.empty())
227 {
228 result.push_back(i);
229 }
230 else if (i.type == EndOfContainer && hasArgs && !pending.empty())
231 {
232 result.push_back(Item {Statement, pending, {}, 0});
233 result.push_back(i);
234 pending.clear();
235 }
236 else
237 {
238 pending.push_back(Item {i.type, CreateStatementItems(i.items), i.tokens, 0});
239 }
240 }
241
242 if (!pending.empty())
243 {
244 if (hasArgs)
245 result.push_back(Item {Statement, pending, {}, 0});
246 else
247 result.insert(result.end(), pending.begin(), pending.end());
248 }
249
250 return result;
251}
252
253
254static vector<Item> CreateAssignmentOperatorGroups(const vector<Item>& items)

Callers 1

FormatLinesMethod · 0.85

Calls 7

push_backMethod · 0.80
AddTokenToLastAtomMethod · 0.80
emptyMethod · 0.45
clearMethod · 0.45
insertMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected