Пример #1
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);
    
    if ($reader === null)
      return;

    $this->_encoding = Transform::fromUInt8($this->_data[0]);
    $this->_mimeType = substr
      ($this->_data, 1, ($pos = strpos($this->_data, "\0", 1)) - 1);
    $this->_data = substr($this->_data, $pos + 1);
    
    switch ($this->_encoding) {
    case self::UTF16:
      list ($this->_filename, $this->_description, $this->_objectData) =
        $this->explodeString16($this->_data, 3);
      $this->_filename = Transform::fromString16($this->_filename);
      $this->_description = Transform::fromString16($this->_description);
      break;
    case self::UTF16BE:
      list ($this->_filename, $this->_description, $this->_objectData) =
        $this->explodeString16($this->_data, 3);
      $this->_filename = Transform::fromString16BE($this->_filename);
      $this->_description = Transform::fromString16BE($this->_description);
      break;
    default:
      list ($this->_filename, $this->_description, $this->_objectData) =
        $this->explodeString8($this->_data, 3);
      $this->_filename = Transform::fromString8($this->_filename);
      $this->_description = Transform::fromString8($this->_description);
    }
  }
Пример #2
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);

    if ($reader === null)
      return;

    $this->_encoding = Transform::fromUInt8($this->_data[0]);
    $data = substr($this->_data, 1);
    $order = Transform::MACHINE_ENDIAN_ORDER;
    switch ($this->_encoding) {
    case self::UTF16:
      $data = $this->explodeString16($data);
      foreach ($data as &$str)
        $str = Transform::fromString16($str, $order);
      break;
    case self::UTF16BE:
      $data = $this->explodeString16($data);
      foreach ($data as &$str)
        $str = Transform::fromString16BE($str);
      break;
    default:
      $data = $this->explodeString8($data);
    }

    for ($i = 0; $i < count($data) - 1; $i += 2)
      $this->_people[] = array($data[$i] => @$data[$i + 1]);
  }
Пример #3
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_encoding = Transform::fromInt8($this->_data[0]);
     $this->_language = substr($this->_data, 1, 3);
     $this->_data = substr($this->_data, 4);
     switch ($this->_encoding) {
         case self::UTF16:
             list($this->_description, $this->_text) = preg_split("/\\x00\\x00/", $this->_data, 2);
             $this->_description = Transform::fromString16($this->_description);
             $this->_text = Transform::fromString16($this->_text);
             break;
         case self::UTF16BE:
             list($this->_description, $this->_text) = preg_split("/\\x00\\x00/", $this->_data, 2);
             $this->_description = Transform::fromString16BE($this->_description);
             $this->_text = Transform::fromString16BE($this->_text);
             break;
         default:
             list($this->_description, $this->_text) = preg_split("/\\x00/", $this->_data, 2);
             $this->_description = Transform::fromString8($this->_description);
             $this->_text = Transform::fromString8($this->_text);
     }
 }
Пример #4
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);
    
    if ($reader === null)
      return;

    $this->_encoding = Transform::fromUInt8($this->_data[0]);
    list($tmp, $this->_data) =
      $this->explodeString8(substr($this->_data, 1), 2);
    $this->_currency = substr($tmp, 0, 3);
    $this->_price = substr($tmp, 3);
    $this->_date = substr($this->_data, 0, 8);
    $this->_data = substr($this->_data, 8);
    
    switch ($this->_encoding) {
    case self::UTF16:
      $this->_seller = Transform::fromString16($this->_data);
      break;
    case self::UTF16BE:
      $this->_seller = Transform::fromString16BE($this->_data);
      break;
    default:
      $this->_seller = Transform::fromString8($this->_data);
    }
  }
Пример #5
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);

    if ($reader === null)
      return;
    
    $this->_encoding = Transform::fromUInt8($this->_data[0]);
    $this->_language = substr($this->_data, 1, 3);
    if ($this->_language == "XXX")
      $this->_language = "und";
    $this->_data = substr($this->_data, 4);
    
    switch ($this->_encoding) {
    case self::UTF16:
      list ($this->_description, $this->_text) =
        $this->explodeString16($this->_data, 2);
      $this->_description = Transform::fromString16($this->_description);
      $this->_text = Transform::fromString16($this->_text);
      break;
    case self::UTF16BE:
      list ($this->_description, $this->_text) =
        $this->explodeString16($this->_data, 2);
      $this->_description = Transform::fromString16BE($this->_description);
      $this->_text = Transform::fromString16BE($this->_text);
      break;
    default:
      list ($this->_description, $this->_text) =
        $this->explodeString8($this->_data, 2);
      $this->_description = Transform::fromString8($this->_description);
      $this->_text = Transform::fromString8($this->_text);
    }
  }
Пример #6
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $flags = Transform::fromInt8($this->_data[0]);
     $descriptionBits = Transform::fromInt8($this->_data[0]);
     //16
     $this->_adjustments["right"] = ($flags & 0x20) == 0x20 ? Transform::fromUInt16BE(substr($this->_data, 0, 2)) : -Transform::fromUInt16BE(substr($this->_data, 0, 2));
     $this->_adjustments["left"] = ($flags & 0x10) == 0x10 ? Transform::fromUInt16BE(substr($this->_data, 2, 2)) : -Transform::fromUInt16BE(substr($this->_data, 2, 2));
     $this->_adjustments["peakRight"] = Transform::fromUInt16BE(substr($this->_data, 4, 2));
     $this->_adjustments["peakLeft"] = Transform::fromUInt16BE(substr($this->_data, 6, 2));
     if ($this->getSize() <= 8) {
         return;
     }
     $this->_adjustments["rightBack"] = ($flags & 0x8) == 0x8 ? Transform::fromUInt16BE(substr($this->_data, 8, 2)) : -Transform::fromUInt16BE(substr($this->_data, 8, 2));
     $this->_adjustments["leftBack"] = ($flags & 0x4) == 0x4 ? Transform::fromUInt16BE(substr($this->_data, 10, 2)) : -Transform::fromUInt16BE(substr($this->_data, 10, 2));
     $this->_adjustments["peakRightBack"] = Transform::fromUInt16BE(substr($this->_data, 12, 2));
     $this->_adjustments["peakLeftBack"] = Transform::fromUInt16BE(substr($this->_data, 14, 2));
     if ($this->getSize() <= 16) {
         return;
     }
     $this->_adjustments["center"] = ($flags & 0x2) == 0x2 ? Transform::fromUInt16BE(substr($this->_data, 16, 2)) : -Transform::fromUInt16BE(substr($this->_data, 16, 2));
     $this->_adjustments["peakCenter"] = Transform::fromUInt16BE(substr($this->_data, 18, 2));
     if ($this->getSize() <= 20) {
         return;
     }
     $this->_adjustments["bass"] = ($flags & 0x1) == 0x1 ? Transform::fromUInt16BE(substr($this->_data, 20, 2)) : -Transform::fromUInt16BE(substr($this->_data, 20, 2));
     $this->_adjustments["peakBass"] = Transform::fromUInt16BE(substr($this->_data, 22, 2));
 }
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader !== null) {
         $this->_link = implode(preg_split("/\\x00/", $this->_data, 1), "");
     }
 }
Пример #8
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     list($this->_device, $this->_data) = preg_split("/\\x00/", $this->_data, 2);
     for ($i = $j = 0; $i < 9; $i++) {
         $this->_adjustments[$i] = array("channelType" => Transform::fromInt8($this->_data[$j++]), "volumeAdjustment" => Transform::fromInt16BE(substr($this->_data, $j++, 2)));
         $bitsInPeak = Transform::fromInt8($this->_data[++$j]);
         $bytesInPeak = $bitsInPeak > 0 ? ceil($bitsInPeak / 8) : 0;
         switch ($bytesInPeak) {
             case 8:
             case 7:
             case 6:
             case 5:
                 $this->_adjustments[$i]["peakVolume"] = Transform::fromInt64BE(substr($this->_data, $j, $bytesInPeak));
                 $j += $bytesInPeak;
                 break;
             case 4:
             case 3:
                 $this->_adjustments[$i]["peakVolume"] = Transform::fromUInt32BE(substr($this->_data, $j, $bytesInPeak));
                 $j += $bytesInPeak;
                 break;
             case 2:
                 $this->_adjustments[$i]["peakVolume"] = Transform::fromUInt16BE(substr($this->_data, $j, $bytesInPeak));
                 $j += $bytesInPeak;
                 break;
             case 1:
                 $this->_adjustments[$i]["peakVolume"] = Transform::fromInt8(substr($this->_data, $j, $bytesInPeak));
                 $j += $bytesInPeak;
         }
     }
 }
Пример #9
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_encoding = Transform::fromInt8($this->_data[0]);
     $this->_mimeType = substr($this->_data, 1, ($pos = strpos($this->_data, "", 1)) - 1);
     $this->_data = substr($this->_data, $pos);
     switch ($this->_encoding) {
         case self::UTF16:
             list($this->_filename, $this->_description, $this->_data) = preg_split("/\\x00\\x00/", $this->_data, 3);
             $this->_filename = Transform::fromString16($this->_filename);
             $this->_description = Transform::fromString16($this->_description);
             break;
         case self::UTF16BE:
             list($this->_filename, $this->_description, $this->_data) = preg_split("/\\x00\\x00/", $this->_data, 3);
             $this->_filename = Transform::fromString16BE($this->_filename);
             $this->_description = Transform::fromString16BE($this->_description);
             break;
         default:
             list($this->_filename, $this->_description, $this->_data) = preg_split("/\\x00/", $this->_data, 3);
             $this->_filename = Transform::fromString8($this->_filename);
             $this->_description = Transform::fromString8($this->_description);
     }
 }
Пример #10
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
   ID3_Frame::__construct($reader, $options);
   
   if ($reader === null)
     return;
   
   $this->_encoding = Transform::fromUInt8($this->_data[0]);
   $this->_data = substr($this->_data, 1);
   
   switch ($this->_encoding) {
   case self::UTF16:
     list($this->_description, $this->_link) = 
       $this->explodeString16($this->_data, 2);
     $this->_description = Transform::fromString16($this->_description);
     break;
   case self::UTF16BE:
       list($this->_description, $this->_link) = 
         $this->explodeString16($this->_data, 2);
       $this->_description = Transform::fromString16BE($this->_description);
     break;
   default:
     list($this->_description, $this->_link) =
       $this->explodeString8($this->_data, 2);
     break;
   }
   $this->_link = implode($this->explodeString8($this->_link, 1), "");
 }
Пример #11
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
   parent::__construct($reader, $options);
   
   if ($reader !== null)
     $this->_link = implode($this->explodeString8($this->_data, 1), "");
 }
Пример #12
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     list($this->_owner, $this->_privateData) = preg_split("/\\x00/", $this->_data, 2);
 }
Пример #13
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_minOffset = Transform::fromInt32BE($this->_data);
 }
Пример #14
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_format = Transform::fromInt8($this->_data[0]);
     $this->_position = Transform::fromUInt32BE(substr($this->_data, 1, 4));
 }
Пример #15
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_group = substr($this->_data, 0, 1);
     $this->_signature = substr($this->_data, 1);
 }
Пример #16
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_format = Transform::fromInt8($this->_data[0]);
     $this->_tempoData = substr($this->_data, 1);
     // FIXME: Better parsing of data
 }
Пример #17
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     list($this->_owner, $this->_data) = preg_split("/\\x00/", $this->_data, 2);
     $this->_method = Transform::fromInt8($this->_data[0]);
     $this->_encryptionData = substr($this->_data, 1);
 }
Пример #18
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     list($this->_owner, $this->_data) = preg_split("/\\x00/", $this->_data, 2);
     $this->_previewStart = substr($this->_data, 0, 2);
     $this->_previewLength = substr($this->_data, 2, 2);
     $this->_encryptionInfo = substr($this->_data, 4);
 }
Пример #19
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
   parent::__construct($reader, $options);
   
   if ($reader === null)
     return;
   
   list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2);
   $this->_previewStart = Transform::fromUInt16BE(substr($this->_data, 0, 2));
   $this->_previewLength = Transform::fromUInt16BE(substr($this->_data, 2, 2));
   $this->_encryptionInfo = substr($this->_data, 4);
 }
Пример #20
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);
    
    if ($reader === null)
      return;

    if (strlen($this->_data) > 4)
      $this->_counter = Transform::fromInt64BE($this->_data); // UInt64
    else
      $this->_counter = Transform::fromUInt32BE($this->_data);
  }
Пример #21
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $adjustmentBits = Transform::fromInt8($this->_data[0]);
     //16
     for ($i = 1; $i < strlen($this->_data); $i += 4) {
         $frequency = Transform::fromInt16BE(substr($this->_data, $i, 2));
         $this->_adjustments[$frequency & 0x7fff] = ($frequency & 0x2000) == 0x2000 ? Transform::fromInt16BE(substr($this->_data, $j + 2, 2)) : -Transform::fromInt16BE(substr($this->_data, $j + 2, 2));
     }
 }
Пример #22
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_interpolation = Transform::fromInt8($this->_data[0]);
     list($this->_device, $this->_data) = preg_split("/\\x00/", substr($this->_data, 1), 2);
     for ($i = 0; $i < strlen($this->_data); $i += 8) {
         $this->_adjustments[Transform::fromInt16BE(substr($this->_data, $i, 2)) / 2] = Transform::fromInt16BE(substr($this->_data, $i + 2, 2)) / 512;
     }
     sort($this->_adjustments);
 }
Пример #23
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_format = Transform::fromInt8($this->_data[0]);
     for ($i = 1; $i < $this->getSize(); $i += 5) {
         $this->_events[Transform::fromInt32BE(substr($this->_data, $i + 1, 4))] = $data = Transform::fromInt8($this->_data[$i]);
         if ($data == 0xff) {
             break;
         }
     }
     sort($this->_events);
 }
Пример #24
0
  /**
   * Constructs the class with given parameters and parses object related data.
   *
   * @param Reader $reader The reader object.
   * @param Array $options The options array.
   */
  public function __construct($reader = null, &$options = array())
  {
    parent::__construct($reader, $options);

    if ($reader === null)
      return;

    list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2);
    $this->_rating = Transform::fromUInt8($this->_data[0]);
    $this->_data = substr($this->_data, 1);

    if (strlen($this->_data) > 4)
      $this->_counter = Transform::fromInt64BE($this->_data); // UInt64
    else if (strlen($this->_data) > 0)
      $this->_counter = Transform::fromUInt32BE($this->_data);
  }
Пример #25
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     list($this->_owner, $this->_data) = preg_split("/\\x00/", $this->_data, 2);
     $this->_rating = Transform::fromInt8($this->_data[0]);
     $this->_data = substr($this->_data, 1);
     if (strlen($this->_data) > 4) {
         $this->_counter = Transform::fromInt64BE($this->_data);
     } else {
         if (strlen($this->_data) > 0) {
             $this->_counter = Transform::fromUInt32BE($this->_data);
         }
     }
 }
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_encoding = Transform::fromInt8($this->_data[0]);
     $this->_data = substr($this->_data, 1);
     switch ($this->_encoding) {
         case self::UTF16:
             $this->_text = preg_split("/\\x00\\x00/", Transform::fromString16($this->_data));
             break;
         case self::UTF16BE:
             $this->_text = preg_split("/\\x00\\x00/", Transform::fromString16BE($this->_data));
             break;
         default:
             $this->_text = preg_split("/\\x00/", Transform::fromString8($this->_data));
     }
 }
Пример #27
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         throw new ID3_Exception("Write not supported yet");
     }
     $this->_dataStart = Transform::fromInt32BE(substr($this->_data, 0, 4));
     $this->_dataLength = Transform::fromInt32BE(substr($this->_data, 4, 4));
     $this->_size = Transform::fromInt16BE(substr($this->_data, 8, 2));
     $bitsPerPoint = Transform::fromInt8($this->_data[10]);
     /*for ($i = 0, $offset = 11; $i < $this->_size; $i++) {
         if ($bitsPerPoint == 16) {
           $this->_fractions[$i] = substr($this->_data, $offset, 2);
           $offset += 2;
         } else {
           $this->_fractions[$i] = substr($this->_data, $offset, 1);
           $offset ++;
         }
       }*/
 }
Пример #28
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  */
 public function __construct($reader = null)
 {
     parent::__construct($reader);
     if ($reader === null) {
         return;
     }
     $this->_encoding = Transform::fromInt8($this->_data[0]);
     $this->_language = substr($this->_data, 1, 3);
     $this->_data = substr($this->_data, 4);
     switch ($this->_encoding) {
         case self::UTF16:
             $this->_text = Transform::fromString16($this->_data);
             break;
         case self::UTF16BE:
             $this->_text = Transform::fromString16BE($this->_data);
             break;
         default:
             $this->_text = Transform::fromString8($this->_data);
     }
 }
Пример #29
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
   parent::__construct($reader, $options);
   
   if ($reader === null)
     return;
   
   $adjustmentBits = Transform::fromInt8($this->_data[0]);
   if ($adjustmentBits <= 8 || $adjustmentBits > 16)
     throw new ID3_Exception
         ("Unsupported adjustment bit size of: " . $adjustmentBits);
   
   for ($i = 1; $i < strlen($this->_data); $i += 4) {
     $frequency = Transform::fromUInt16BE(substr($this->_data, $i, 2));
     $this->_adjustments[($frequency & 0x7fff)] = 
         ($frequency & 0x8000) == 0x8000 ?
         Transform::fromUInt16BE(substr($this->_data, $i + 2, 2)) :
         -Transform::fromUInt16BE(substr($this->_data, $i + 2, 2));
   }
   ksort($this->_adjustments);
 }
Пример #30
0
 /**
  * Constructs the class with given parameters and parses object related data.
  *
  * @param Reader $reader The reader object.
  * @param Array $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     if ($reader === null) {
         return;
     }
     $this->_encoding = Transform::fromInt8($this->_data[0]);
     $data = array();
     switch ($this->_encoding) {
         case self::UTF16:
             $data = preg_split("/\\x00\\x00/", Transform::fromString16($this->_data));
             break;
         case self::UTF16BE:
             $data = preg_split("/\\x00\\x00/", Transform::fromString16BE($this->_data));
             break;
         default:
             $data = preg_split("/\\x00/", $this->_data);
     }
     for ($i = 0; $i < count($data); $i += 2) {
         $this->_people[] = array($data[$i] => @$data[$i + 1]);
     }
 }