void PSIVisitor::visit_comp_pkg_body(const std::vector<IBaseItem *> &items) { std::vector<IBaseItem *>::const_iterator it=items.begin(); for (; it!=items.end(); it++) { switch ((*it)->getType()) { case IBaseItem::TypeAction: visit_action(static_cast<IAction *>(*it)); break; case IBaseItem::TypeStruct: visit_struct(static_cast<IStruct *>(*it)); break; } } }
void PSIVisitor::visit_package(IPackage *pkg) { std::vector<IBaseItem *>::const_iterator it=pkg->getItems().begin(); for (; it!=pkg->getItems().end(); it++) { IBaseItem *i = *it; switch (i->getType()) { case IBaseItem::TypeAction: // TODO: break; case IBaseItem::TypeStruct: visit_struct(static_cast<IStruct *>(i)); break; } } }
void PSIVisitor::visit_package(IPackage *pkg) { std::vector<IBaseItem *>::const_iterator it=pkg->getItems().begin(); for (int32_t i=0; i<pkg->getItems().size(); i++) { IBaseItem *it = pkg->getItems().at(i); push_scope(it); m_removed = false; switch (it->getType()) { case IBaseItem::TypeAction: // TODO: break; case IBaseItem::TypeStruct: visit_struct(dynamic_cast<IStruct *>(it)); break; case IBaseItem::TypeExtend: visit_extend(dynamic_cast<IExtend *>(it)); break; case IBaseItem::TypeImportFunc: visit_import_func(dynamic_cast<IImportFunc *>(it)); break; default: fprintf(stdout, "Error: Unhandled package item: %d\n", it->getType()); } pop_scope(); if (m_removed) { dynamic_cast<PackageImpl *>(pkg)->remove(it); delete it; } } m_removed = false; }
void PSIVisitor::visit_comp_pkg_body(const std::vector<IBaseItem *> &items) { std::vector<IBaseItem *>::const_iterator it=items.begin(); for (; it!=items.end(); it++) { fprintf(stdout, " -- item %p %d\n", *it, (*it)->getType()); fflush(stdout); push_scope(*it); switch ((*it)->getType()) { case IBaseItem::TypeAction: fprintf(stdout, "---> visit_action\n"); fflush(stdout); visit_action(dynamic_cast<IAction *>(*it)); fprintf(stdout, "<--- visit_action\n"); fflush(stdout); break; case IBaseItem::TypeStruct: visit_struct(dynamic_cast<IStruct *>(*it)); break; } pop_scope(); } }