* @package Mammut\IO */ trait CharOutputIterator { // methods defined by iCharIO interface abstract public function getCharset(); abstract public function isMultibyte(); // methods defined by iOutput interface abstract public function read($chunksize = 1024); public function readChar() { $ch = $this->read(1); if(!$this->isMultibyte()) return $ch; $char = ord($ch); if($char < 128) return $ch; else { if($char < 224) $bytes = 2; elseif($char < 240) $bytes = 3; elseif($char < 248) $bytes = 4; elseif($char == 252) $bytes = 5; else $bytes = 6; $ch .= $this->read($bytes - 1); return $ch; } } }