MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / visitStructure

Method visitStructure

src/ast/ast_program.cpp:376–402  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

374 }
375
376 StructurePtr Program::visitStructure(Visitor & vis, Structure * pst) {
377 vis.preVisit(pst);
378 pst->aliases.foreach([&](auto & alsv){
379 vis.preVisitStructureAlias(pst, alsv->alias, alsv);
380 vis.preVisit(alsv);
381 auto alssv = alsv->visit(vis);
382 if ( alssv ) alssv = vis.visit(alssv);
383 if ( alssv ) alssv = vis.visitStructureAlias(pst, alssv->alias, alssv);
384 if ( alssv!=alsv ) {
385 pst->aliases.replace(alsv->alias, alssv);
386 alsv = alssv;
387 }
388 });
389 for ( auto & fi : pst->fields ) {
390 vis.preVisitStructureField(pst, fi, &fi==&pst->fields.back());
391 if ( fi.type ) {
392 vis.preVisit(fi.type);
393 fi.type = fi.type->visit(vis);
394 fi.type = vis.visit(fi.type);
395 }
396 if ( fi.init && vis.canVisitStructureFieldInit(pst) ) {
397 fi.init = fi.init->visit(vis);
398 }
399 vis.visitStructureField(pst, fi, &fi==&pst->fields.back());
400 }
401 return vis.visit(pst);
402 }
403
404 EnumerationPtr Program::visitEnumeration(Visitor & vis, Enumeration * penum) {
405 vis.preVisit(penum);

Callers 1

visitStructureFunction · 0.80

Calls 9

replaceMethod · 0.80
preVisitMethod · 0.45
foreachMethod · 0.45
visitMethod · 0.45
visitStructureAliasMethod · 0.45
visitStructureFieldMethod · 0.45

Tested by

no test coverage detected