web/lib/Zend/Serializer/Adapter/PythonPickle.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
equal deleted inserted replaced
805:5e7a0fedabdf 807:877f952ae2bd
    13  * to license@zend.com so we can send you a copy immediately.
    13  * to license@zend.com so we can send you a copy immediately.
    14  *
    14  *
    15  * @category   Zend
    15  * @category   Zend
    16  * @package    Zend_Serializer
    16  * @package    Zend_Serializer
    17  * @subpackage Adapter
    17  * @subpackage Adapter
    18  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    18  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    19  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    19  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    20  * @version    $Id: PythonPickle.php 21187 2010-02-24 01:22:01Z stas $
    20  * @version    $Id: PythonPickle.php 24815 2012-05-24 08:50:24Z mabe $
    21  */
    21  */
    22 
    22 
    23 /** @see Zend_Serializer_Adapter_AdapterAbstract */
    23 /** @see Zend_Serializer_Adapter_AdapterAbstract */
    24 require_once 'Zend/Serializer/Adapter/AdapterAbstract.php';
    24 require_once 'Zend/Serializer/Adapter/AdapterAbstract.php';
    25 
    25 
    29  * @see        Phython3.1/Modules/_pickle.c
    29  * @see        Phython3.1/Modules/_pickle.c
    30  * @link       http://pickle-js.googlecode.com
    30  * @link       http://pickle-js.googlecode.com
    31  * @category   Zend
    31  * @category   Zend
    32  * @package    Zend_Serializer
    32  * @package    Zend_Serializer
    33  * @subpackage Adapter
    33  * @subpackage Adapter
    34  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    34  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    35  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    35  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    36  */
    36  */
    37 class Zend_Serializer_Adapter_PythonPickle extends Zend_Serializer_Adapter_AdapterAbstract
    37 class Zend_Serializer_Adapter_PythonPickle extends Zend_Serializer_Adapter_AdapterAbstract
    38 {
    38 {
    39     /* Pickle opcodes. See pickletools.py for extensive docs.  The listing
    39     /* Pickle opcodes. See pickletools.py for extensive docs.  The listing
   294             if ($id <= 0xff) {
   294             if ($id <= 0xff) {
   295                 // BINGET + chr(i)
   295                 // BINGET + chr(i)
   296                 $this->_pickle .= self::OP_BINGET . chr($id);
   296                 $this->_pickle .= self::OP_BINGET . chr($id);
   297             } else {
   297             } else {
   298                 // LONG_BINGET + pack("<i", i)
   298                 // LONG_BINGET + pack("<i", i)
   299                 $idBin = pack('l', $id);
   299                 $bin = pack('l', $id);
   300                 if (self::$_isLittleEndian === false) {
   300                 if (self::$_isLittleEndian === false) {
   301                     $idBin = strrev($bin);
   301                     $bin = strrev($bin);
   302                 }
   302                 }
   303                 $this->_pickle .= self::OP_LONG_BINGET . $idBin;
   303                 $this->_pickle .= self::OP_LONG_BINGET . $bin;
   304             }
   304             }
   305         } else {
   305         } else {
   306             $this->_pickle .= self::OP_GET . $id . "\r\n";
   306             $this->_pickle .= self::OP_GET . $id . "\r\n";
   307         }
   307         }
   308     }
   308     }
   319             if ($id <= 0xff) {
   319             if ($id <= 0xff) {
   320                 // BINPUT + chr(i)
   320                 // BINPUT + chr(i)
   321                 $this->_pickle .= self::OP_BINPUT . chr($id);
   321                 $this->_pickle .= self::OP_BINPUT . chr($id);
   322             } else {
   322             } else {
   323                 // LONG_BINPUT + pack("<i", i)
   323                 // LONG_BINPUT + pack("<i", i)
   324                 $idBin = pack('l', $id);
   324                 $bin = pack('l', $id);
   325                 if (self::$_isLittleEndian === false) {
   325                 if (self::$_isLittleEndian === false) {
   326                     $idBin = strrev($bin);
   326                     $bin = strrev($bin);
   327                 }
   327                 }
   328                 $this->_pickle .= self::OP_LONG_BINPUT . $idBin;
   328                 $this->_pickle .= self::OP_LONG_BINPUT . $bin;
   329             }
   329             }
   330         } else {
   330         } else {
   331             $this->_pickle .= self::OP_PUT . $id . "\r\n";
   331             $this->_pickle .= self::OP_PUT . $id . "\r\n";
   332         }
   332         }
   333     }
   333     }