internals/lib_protobuf.inc.php
public function FromBytes($stream, $offset) // ret <= 0 - error
	{
		$moved = 0;
		$vi = 0;
		$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $vi);
		if ($parsed <= 0)
			return $parsed;

		//echo "vi $vi\n";
		$this->wt = ($vi & 0x07);
		$this->fn = ($vi >> 3);
		//echo "field wt " . $this->wt . " fn " . $this->fn . "\n";

		switch ($this->wt)
		{
			case ProtoBuf_Field::ProtoBuf_WireType_Varint: // TODO: in case we need this information, create get function
				$this->data = 0;
				$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $this->data);
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_64bit:
				$this->data = substr($stream, $offset + $moved, 8);
				$high4 = ProtoBuf_Bytes2Fixed(substr($this->data, 4), 4);
				if ($high4 == 0)
				{
					$this->fixed64_is_32bit = true;
					$this->data = ProtoBuf_Bytes2Fixed($this->data, 4);
				}
				else
				{
					$this->fixed64_is_32bit = false;
					$this->data = ProtoBuf_Bytes2Fixed($this->data, 8);
				}
				$moved += 8;
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_LengthDelimited:
				$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $vi);
				if ($parsed <= 0)
					return $parsed;
				$this->data = substr($stream, $offset + $moved, $vi);
				$moved += $vi;
				break;
			/*case ProtoBuf_Field::ProtoBuf_WireType_StartGroup: // TODO: in case we need this information, create get function
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_EndGroup: // TODO: in case we need this information, create get function
				break;*/
			case ProtoBuf_Field::ProtoBuf_WireType_32bit:
				$this->data = substr($stream, $offset + $moved, 4);
				$this->data = ProtoBuf_Bytes2Fixed($this->data, 4);
				$moved += 4;
				break;
			default:
				die("[lib_protobuf.inc] Unrecognized protobuf wire type '" . $this->wt . "'\n");
				break;
		}

		return $moved;
	}
public function FromBytes($stream, $offset) // ret <= 0 - error
	{
		$moved = 0;
		$vi = 0;
		$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $vi);
		if ($parsed <= 0)
			return $parsed;

		//echo "vi $vi\n";
		$this->wt = ($vi & 0x07);
		$this->fn = ($vi >> 3);
		//echo "field wt " . $this->wt . " fn " . $this->fn . "\n";

		switch ($this->wt)
		{
			case ProtoBuf_Field::ProtoBuf_WireType_Varint: // TODO: in case we need this information, create get function
				$this->data = 0;
				$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $this->data);
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_64bit:
				$this->data = substr($stream, $offset + $moved, 8);
				$high4 = ProtoBuf_Bytes2Fixed(substr($this->data, 4), 4);
				if ($high4 == 0)
				{
					$this->fixed64_is_32bit = true;
					$this->data = ProtoBuf_Bytes2Fixed($this->data, 4);
				}
				else
				{
					$this->fixed64_is_32bit = false;
					$this->data = ProtoBuf_Bytes2Fixed($this->data, 8);
				}
				$moved += 8;
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_LengthDelimited:
				$moved += $parsed = ProtoBuf_Bytes2Varint($stream, $offset + $moved, $vi);
				if ($parsed <= 0)
					return $parsed;
				$this->data = substr($stream, $offset + $moved, $vi);
				$moved += $vi;
				break;
			/*case ProtoBuf_Field::ProtoBuf_WireType_StartGroup: // TODO: in case we need this information, create get function
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_EndGroup: // TODO: in case we need this information, create get function
				break;*/
			case ProtoBuf_Field::ProtoBuf_WireType_32bit:
				$this->data = substr($stream, $offset + $moved, 4);
				$this->data = ProtoBuf_Bytes2Fixed($this->data, 4);
				$moved += 4;
				break;
			default:
				die("[lib_protobuf.inc] Unrecognized protobuf wire type '" . $this->wt . "'\n");
				break;
		}

		return $moved;
	}
public function FromBytes ( $ stream , $ offset ) // ret <= 0 - error { $ moved = 0 ; $ vi = 0 ; $ moved += $ parsed = ProtoBuf_Bytes2Varint ( $ stream , $ offset + $ moved , $ vi ) ; if ( $ parsed <= 0 ) return $ parsed ; //echo "vi $vi\n"; $ this -> wt = ( $ vi & 0x07 ) ; $ this -> fn = ( $ vi >> 3 ) ; //echo "field wt " . $this->wt . " fn " . $this->fn . "\n"; switch ( $ this -> wt ) { case ProtoBuf_Field :: ProtoBuf_WireType_Varint : // TODO: in case we need this information, create get function $ this -> data = 0 ; $ moved += $ parsed = ProtoBuf_Bytes2Varint ( $ stream , $ offset + $ moved , $ this -> data ) ; break ; case ProtoBuf_Field :: ProtoBuf_WireType_64bit : $ this -> data = substr ( $ stream , $ offset + $ moved , 8 ) ; $ high4 = ProtoBuf_Bytes2Fixed ( substr ( $ this -> data , 4 ) , 4 ) ; if ( $ high4 == 0 ) { $ this -> fixed64_is_32bit = true ; $ this -> data = ProtoBuf_Bytes2Fixed ( $ this -> data , 4 ) ; } else { $ this -> fixed64_is_32bit = false ; $ this -> data = ProtoBuf_Bytes2Fixed ( $ this -> data , 8 ) ; } $ moved += 8 ; break ; case ProtoBuf_Field :: ProtoBuf_WireType_LengthDelimited : $ moved += $ parsed = ProtoBuf_Bytes2Varint ( $ stream , $ offset + $ moved , $ vi ) ; if ( $ parsed <= 0 ) return $ parsed ; $ this -> data = substr ( $ stream , $ offset + $ moved , $ vi ) ; $ moved += $ vi ; break ; /*case ProtoBuf_Field::ProtoBuf_WireType_StartGroup: // TODO: in case we need this information, create get function
				break;
			case ProtoBuf_Field::ProtoBuf_WireType_EndGroup: // TODO: in case we need this information, create get function
				break;*/ case ProtoBuf_Field :: ProtoBuf_WireType_32bit : $ this -> data = substr ( $ stream , $ offset + $ moved , 4 ) ; $ this -> data = ProtoBuf_Bytes2Fixed ( $ this -> data , 4 ) ; $ moved += 4 ; break ; default : die ( "[lib_protobuf.inc] Unrecognized protobuf wire type '" . $ this -> wt . "'\n" ) ; break ; } return $ moved ; }
if fixed64 is in fact 32bit value, this is just to improve compatibility with 32bit php, which does not support 64
if fixed64 is in fact 32bit value this is just to improve compatibility with 32bit php which does not support 64