| 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); |
no test coverage detected