public static function getClassDefs(PHC $phc) { $children = $phc->getXmlElement()->children(PHC::PHC_NS); $list = new ClassMetaDataList(); foreach ($children->AST_class_def_list as $key => $classDefList) { if (strcasecmp($key, ClassMetaDataList::NODE_NAME) !== 0) { continue; } $children = $classDefList->children(); foreach ($children as $name => $classDef) { if (strcasecmp($name, ClassMetaData::NODE_NAME) !== 0) { continue; } $classMeta = new ClassMetaData(); $classMeta->setToken(new ClassTokenMetaData(self::getTokenValue($classDef->Token_class_name))); $classMeta->setInterfaceMetaDataList(self::getInterfaceNameList($classDef)); $classMeta->setMemberList(self::getMemberList($classDef)); $list->add($classMeta); } } return $list; }
public function visitClassListMeta(ClassMetaDataList $meta) { $buf = new TreeOutput(); $buf->add('[' . $meta->getNodeName() . ']'); $buf->down(); $list = $meta->getList(); foreach ($list as $class) { $buf->writeln($class->toJSValue($this)); } $buf->up(); return $buf; }