type = $type; } public function getType() { return $this->type; } public function setAbstract() { $this->abstractFinal = 'A'; } public function isAbstract() { return $this->abstractFinal == 'A'; } public function setFinal() { $this->abstractFinal = 'F'; } public function isFinal() { return $this->abstractFinal == 'F'; } public function setStatic() { $this->static = true; } public function isStatic() { return $this->static; } public function setPrivate() { $this->visibility = 1; } public function isPrivate() { return $this->visibility == 1; } public function setProtected() { $this->visibility = 2; } public function isProtected() { return $this->visibility == 2; } public function setPublic() { $this->visibility = 3; } public function isPublic() { return $this->visibility == 3; } public function reset() { $this->type = null; $this->visibility = 3; $this->abstractFinal = ''; $this->static = false; } public function __construct() { $this->reset(); } public abstract function imageIndex(); } class FastPHPReader { public static function readCodeFromEditor() { $lines = array(); while ($f = fgets(STDIN)){ if (trim($f) == SIGNAL_END_OF_TRANSMISSION) break; // Signal to terminate the code explorer if (trim($f) == SIGNAL_TERMINATE) { throw new FastPHPExitSignalReceivedException(); } $lines[] = $f; } return implode("", $lines); } } class FastPHPWriter { public static function outputLeafNode(/*FastPHPIcon*/ $icon, /*int*/ $lineNo, /*string*/ $description) { $iconImageIndex = is_null($icon) ? -1 : $icon->imageIndex(); echo 'N'.($iconImageIndex == -1 ? '____' : sprintf('%04s', $iconImageIndex)). sprintf('%08s', $lineNo). sprintf('%04s', strlen(trim($description))). trim($description). "\n"; } public static function outputIncreaseLevel() { echo "I\n"; } public static function outputDecreaseLevel() { echo "D\n"; } public static function outputExit() { echo "X\n"; } public static function signalOutputEnd() { echo "\n".SIGNAL_END_OF_TRANSMISSION."\n"; } public static function outputHeader() { echo "FAST100!"; } }