void PSIVisitor::visit_model(IModel *model) { fprintf(stdout, "--> visit_model(%p)\n", model); IPackage *pkg = model->getGlobalPackage(); visit_package(pkg); ModelImpl *model_i = dynamic_cast<ModelImpl *>(model); for (int32_t i=0; i<model->getItems().size(); i++) { IBaseItem *it = model->getItems().at(i); fprintf(stdout, "-- it=%p %d\n", it, it->getType()); m_removed = false; push_scope(it); if (it->getType() == IBaseItem::TypePackage) { IPackage *pkg = dynamic_cast<IPackage *>(it); visit_package(pkg); } else if (it->getType() == IBaseItem::TypeComponent) { visit_component(dynamic_cast<IComponent *>(it)); } else { // Really shouldn't be anything else in the global scope } pop_scope(); if (m_removed) { model_i->remove(it); delete it; i--; } } fprintf(stdout, "<-- visit_model(%p)\n", model); }
void PSIVisitor::visit_model(IModel *model) { IPackage *pkg = model->getGlobalPackage(); visit_package(pkg); std::vector<IBaseItem *>::const_iterator it=model->getItems().begin(); for (; it!=model->getItems().end(); it++) { IBaseItem *i = *it; if (i->getType() == IBaseItem::TypePackage) { IPackage *pkg = static_cast<IPackage *>(i); visit_package(pkg); } else if (i->getType() == IBaseItem::TypeComponent) { visit_component(static_cast<IComponent *>(i)); } else { // Really shouldn't be anything else in the global scope } } }