Server IP : 85.193.89.191 / Your IP : 18.223.158.14 Web Server : Apache System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64 User : bitrix ( 600) PHP Version : 8.1.27 Disable Function : NONE MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/bitrix/www/bitrix/modules/pull/vendor/Protobuf/ |
Upload File : |
<?php namespace Protobuf; use RuntimeException; /** * This class contains constants and helper functions useful for dealing with * the Protocol Buffer wire format. * * @author Iván Montes <drslump@pollinimini.net> * @author Fabio B. Silva <fabio.bat.silva@gmail.com> */ class WireFormat { const WIRE_VARINT = 0; const WIRE_FIXED64 = 1; const WIRE_LENGTH = 2; const WIRE_GROUP_START = 3; const WIRE_GROUP_END = 4; const WIRE_FIXED32 = 5; const WIRE_UNKNOWN = -1; const TAG_TYPE_BITS = 3; const TAG_TYPE_MASK = 0x7; /** * @var array */ private static $wireTypeMap = [ Field::TYPE_INT32 => WireFormat::WIRE_VARINT, Field::TYPE_INT64 => WireFormat::WIRE_VARINT, Field::TYPE_UINT32 => WireFormat::WIRE_VARINT, Field::TYPE_UINT64 => WireFormat::WIRE_VARINT, Field::TYPE_SINT32 => WireFormat::WIRE_VARINT, Field::TYPE_SINT64 => WireFormat::WIRE_VARINT, Field::TYPE_BOOL => WireFormat::WIRE_VARINT, Field::TYPE_ENUM => WireFormat::WIRE_VARINT, Field::TYPE_FIXED64 => WireFormat::WIRE_FIXED64, Field::TYPE_SFIXED64 => WireFormat::WIRE_FIXED64, Field::TYPE_DOUBLE => WireFormat::WIRE_FIXED64, Field::TYPE_STRING => WireFormat::WIRE_LENGTH, Field::TYPE_BYTES => WireFormat::WIRE_LENGTH, Field::TYPE_MESSAGE => WireFormat::WIRE_LENGTH, Field::TYPE_FIXED32 => WireFormat::WIRE_FIXED32, Field::TYPE_SFIXED32 => WireFormat::WIRE_FIXED32, Field::TYPE_FLOAT => WireFormat::WIRE_FIXED32, ]; /** * Given a field type, determines the wire type. * * @param integer $type * @param integer $default * * @return integer */ public static function getWireType($type, $default) { // Unknown types just return the reported wire type return isset(self::$wireTypeMap[$type]) ? self::$wireTypeMap[$type] : $default; } /** * Assert the wire type match * * @param integer $wire * @param integer $type */ public static function assertWireType($wire, $type) { $expected = WireFormat::getWireType($type, $wire); if ($wire !== $expected) { throw new RuntimeException(sprintf( "Expected wire type %s but got %s for type %s.", $expected, $wire, $type )); } } /** * Given a tag value, determines the field number (the upper 29 bits). * * @param integer $tag * * @return integer */ public static function getTagFieldNumber($tag) { return $tag >> self::TAG_TYPE_BITS; } /** * Given a tag value, determines the wire type (the lower 3 bits). * * @param integer $tag * * @return integer */ public static function getTagWireType($tag) { return $tag & self::TAG_TYPE_MASK; } /** * Makes a tag value given a field number and wire type * * @param integer $tag * @param integer $wireType * * @return integer */ public static function getFieldKey($tag, $wireType) { return ($tag << self::TAG_TYPE_BITS) | $wireType; } }