123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
-
- /*
- * This file is part of SwiftMailer.
- * (c) 2004-2009 Chris Corbyn
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-
- /**
- * Provides fixed-width byte sizes for reading fixed-width character sets.
- * @package Swift
- * @subpackage Encoder
- * @author Chris Corbyn
- * @author Xavier De Cock <xdecock@gmail.com>
- */
- class Swift_CharacterReader_GenericFixedWidthReader
- implements Swift_CharacterReader
- {
-
- /**
- * The number of bytes in a single character.
- * @var int
- * @access private
- */
- private $_width;
-
- /**
- * Creates a new GenericFixedWidthReader using $width bytes per character.
- * @param int $width
- */
- public function __construct($width)
- {
- $this->_width = $width;
- }
-
- /**
- * Returns the complete charactermap
- *
- * @param string $string
- * @param int $startOffset
- * @param array $currentMap
- * @param mixed $ignoredChars
- * @return $int
- */
- public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars)
- {
- $strlen = strlen($string);
- // % and / are CPU intensive, so, maybe find a better way
- $ignored = $strlen%$this->_width;
- $ignoredChars = substr($string, - $ignored);
- $currentMap = $this->_width;
- return ($strlen - $ignored)/$this->_width;
-
- }
-
- /**
- * Returns mapType
- * @int mapType
- */
- public function getMapType()
- {
- return self::MAP_TYPE_FIXED_LEN;
- }
-
- /**
- * Returns an integer which specifies how many more bytes to read.
- * A positive integer indicates the number of more bytes to fetch before invoking
- * this method again.
- * A value of zero means this is already a valid character.
- * A value of -1 means this cannot possibly be a valid character.
- * @param string $bytes
- * @return int
- */
- public function validateByteSequence($bytes, $size)
- {
- $needed = $this->_width - $size;
- return ($needed > -1)
- ? $needed
- : -1
- ;
- }
-
- /**
- * Returns the number of bytes which should be read to start each character.
- * @return int
- */
- public function getInitialByteSize()
- {
- return $this->_width;
- }
-
- }
|