/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $out->write(self::declarationOf($this->mirror)); $parent = $this->mirror->parent(); if ('lang.Enum' !== $parent->name()) { $this->displayExtensions([$parent], $out, 'extends'); } $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements'); $separator = false; $out->writeLine(' {'); $this->displayMembers($this->mirror->constants(), $out, $separator); foreach (Enum::valuesOf($this->mirror->type()) as $member) { $out->write(' ', $member->name(), '(', $member->ordinal(), ')'); $mirror = new TypeMirror(typeof($member)); if ($mirror->isSubtypeOf($this->mirror)) { $out->writeLine(' {'); foreach ($mirror->methods()->declared() as $method) { $out->writeLine(' ', (string) $method); } $separator = true; $out->writeLine(' }'); } else { $out->writeLine(); $separator = true; } } $constructor = $this->mirror->constructor(); if ($constructor->present()) { $this->displayMembers([$constructor], $out, $separator); } $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator); $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator); $out->writeLine('}'); }
/** * Display information about a collection * * @param lang.mirrors.Package $package * @param lang.ClassLoader $loader * @param io.StringWriter $out * @return void */ protected function displayCollection($package, $loader, $out) { $ext = strlen(\xp::CLASS_FILE_EXT); $order = ['interface' => [], 'trait' => [], 'enum' => [], 'class' => []]; // Child packages foreach ($loader->packageContents($package->name()) as $entry) { $base = $package->isGlobal() ? '' : $package->name() . '.'; if ('/' === $entry[strlen($entry) - 1]) { $out->writeLine(' package ', $base . substr($entry, 0, -1)); } else { if (0 === substr_compare($entry, \xp::CLASS_FILE_EXT, -$ext)) { $mirror = new TypeMirror($loader->loadClass($base . substr($entry, 0, -$ext))); $order[$mirror->kind()->name()][] = self::declarationOf($mirror); } } } // Types foreach ($order as $type => $types) { if (empty($types)) { continue; } $out->writeLine(); sort($types); foreach ($types as $name) { $out->writeLine(' ', $name); } } }
/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $separator = false; $out->write(self::declarationOf($this->mirror)); $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'extends'); $out->writeLine(' {'); $this->displayMembers($this->mirror->constants(), $out, $separator); $this->displayMembers($this->mirror->methods(), $out, $separator); $out->writeLine('}'); }
/** * Display members * * @param php.Generator $members * @param io.StringWriter $out * @param bool $separator * @return void */ protected function displayMembers($members, $out, &$separator) { if ($separator) { $out->writeLine(); $separator = false; } foreach ($members as $members) { $out->writeLine(' ', (string) $members); $separator = true; } }
/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $separator = false; $out->write(self::declarationOf($this->mirror), ' {'); $this->displayMembers($this->mirror->constants(), $out, $separator); $this->displayMembers($this->mirror->fields(), $out, $separator); $constructor = $this->mirror->constructor(); if ($constructor->present()) { $this->displayMembers([$constructor], $out, $separator); } $this->displayMembers($this->mirror->methods(), $out, $separator); $out->writeLine('}'); }
/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $out->write(self::declarationOf($this->mirror)); $this->displayExtensions([$this->mirror->parent()], $out, 'extends'); $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements'); $separator = false; $out->writeLine(' {'); $this->displayMembers($this->mirror->constants(), $out, $separator); $this->displayMembers($this->mirror->fields()->declared(), $out, $separator); $constructor = $this->mirror->constructor(); if ($constructor->present()) { $this->displayMembers([$constructor], $out, $separator); } else { $separator = false; } $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator); $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator); $out->writeLine('}'); }
/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $out->writeLine('directory ', $this->folder->getURI(), ' {'); $this->displayCollection($this->package, $this->loader, $out); $out->writeLine('}'); }
/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $out->writeLine('package ', $this->package->name(), ' {'); $this->displayCollection($this->package, ClassLoader::getDefault(), $out); $out->writeLine('}'); }