void InterfaceStatement::onParse(AnalysisResultConstPtr ar, FileScopePtr scope) { vector<string> bases; if (m_base) m_base->getOriginalStrings(bases); StatementPtr stmt = dynamic_pointer_cast<Statement>(shared_from_this()); vector<UserAttributePtr> attrs; if (m_attrList) { for (int i = 0; i < m_attrList->getCount(); ++i) { UserAttributePtr a = dynamic_pointer_cast<UserAttribute>((*m_attrList)[i]); attrs.push_back(a); } } ClassScopePtr classScope (new ClassScope(ClassScope::KindOfInterface, m_name, "", bases, m_docComment, stmt, attrs)); setBlockScope(classScope); scope->addClass(ar, classScope); if (Option::PersistenceHook) { classScope->setPersistent(Option::PersistenceHook(classScope, scope)); } if (m_stmt) { for (int i = 0; i < m_stmt->getCount(); i++) { IParseHandlerPtr ph = dynamic_pointer_cast<IParseHandler>((*m_stmt)[i]); ph->onParseRecur(ar, classScope); } } }