public static function getInterfaceDefs(PHC $phc) { $children = $phc->getXmlElement()->children(PHC::PHC_NS); $list = new InterfaceMetaDataList(); foreach ($children->AST_interface_def_list as $key => $listDefList) { if (strcasecmp($key, InterfaceMetaDataList::NODE_NAME) !== 0) { continue; } $children = $listDefList->children(); foreach ($children as $name => $interfaceDef) { if (strcasecmp($name, InterfaceMetaData::NODE_NAME) !== 0) { continue; } $interfaceMeta = new InterfaceMetaData(); $interfaceMeta->setToken(new InterfaceTokenMetaData(self::getTokenValue($interfaceDef->Token_interface_name))); $interfaceMeta->setInterfaceMetaDataList(self::getInterfaceNameList($interfaceDef)); $interfaceMeta->setMemberList(self::getMemberList($interfaceDef)); $list->add($interfaceMeta); } } return $list; }
public function visitInterfaceListMeta(InterfaceMetaDataList $meta) { $buf = new TreeOutput(); $buf->add('[' . $meta->getNodeName() . ']'); $buf->down(); $list = $meta->getList(); foreach ($list as $interface) { $buf->writeln($interface->toJSValue($this)); } $buf->up(); return $buf; }