equal
deleted
inserted
replaced
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 } |