Пример #1
0
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);
}
Пример #2
0
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
		}
	}
}