* Classes, which help reading streams of data from files.
* Based on the classes from Danilo Segan <danilo@kvota.net>
*
- * @version $Id: streams.php 406 2010-02-07 11:10:24Z nbachiyski $
+ * @version $Id: streams.php 718 2012-10-31 00:32:02Z nbachiyski $
* @package pomo
* @subpackage streams
*/
/**
* Sets the endianness of the file.
*
- * @param string $endian 'big' or 'little'
+ * @param $endian string 'big' or 'little'
*/
function setEndian($endian) {
$this->endian = $endian;
return false;
$endian_letter = ('big' == $this->endian)? 'N' : 'V';
$int = unpack($endian_letter, $bytes);
- return array_shift($int);
+ return reset( $int );
}
/**
return unpack($endian_letter.$count, $bytes);
}
-
+ /**
+ * @param string $string
+ * @param int $start
+ * @param int $length
+ * @return string
+ */
function substr($string, $start, $length) {
if ($this->is_overloaded) {
return mb_substr($string, $start, $length, 'ascii');
}
}
+ /**
+ * @param string $string
+ * @return int
+ */
function strlen($string) {
if ($this->is_overloaded) {
return mb_strlen($string, 'ascii');
}
}
+ /**
+ * @param string $string
+ * @param int $chunk_size
+ * @return array
+ */
function str_split($string, $chunk_size) {
if (!function_exists('str_split')) {
$length = $this->strlen($string);
if ( !class_exists( 'POMO_FileReader' ) ):
class POMO_FileReader extends POMO_Reader {
+
+ /**
+ * @param string $filename
+ */
function POMO_FileReader($filename) {
parent::POMO_Reader();
- $this->_f = fopen($filename, 'r');
+ $this->_f = fopen($filename, 'rb');
}
+ /**
+ * @param int $bytes
+ */
function read($bytes) {
return fread($this->_f, $bytes);
}
+ /**
+ * @param int $pos
+ * @return boolean
+ */
function seekto($pos) {
if ( -1 == fseek($this->_f, $pos, SEEK_SET)) {
return false;
$this->_pos = 0;
}
-
+ /**
+ * @param string $bytes
+ * @return string
+ */
function read($bytes) {
$data = $this->substr($this->_str, $this->_pos, $bytes);
$this->_pos += $bytes;
return $data;
}
+ /**
+ * @param int $pos
+ * @return int
+ */
function seekto($pos) {
$this->_pos = $pos;
if ($this->strlen($this->_str) < $this->_pos) $this->_pos = $this->strlen($this->_str);