LICENSE 0000644 00000002754 14641212622 0005561 0 ustar 00 BSD 3-Clause License
Copyright (c) 2019, Protocol Buffers
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
README.md 0000644 00000000571 14641212622 0006026 0 ustar 00 # protobuf-php
This repository contains only PHP files to support Composer installation. This repository is a mirror of [protobuf](https://github.com/protocolbuffers/protobuf). Any support requests, bug reports, or development contributions should be directed to that project. To install protobuf for PHP, please see https://github.com/protocolbuffers/protobuf/tree/master/php
composer.json 0000644 00000001055 14641212622 0007267 0 ustar 00 {
"name": "google/protobuf",
"type": "library",
"description": "proto library for PHP",
"keywords": ["proto"],
"homepage": "https://developers.google.com/protocol-buffers/",
"license": "BSD-3-Clause",
"require": {
"php": ">=5.5.0"
},
"require-dev": {
"phpunit/phpunit": ">=4.8.0"
},
"suggest": {
"ext-bcmath": "Need to support JSON deserialization"
},
"autoload": {
"psr-4": {
"Google\\Protobuf\\": "src/Google/Protobuf",
"GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf"
}
}
}
src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php 0000644 00000044575 14641212622 0017042 0 ustar 00 addMessage('google.protobuf.internal.FileDescriptorSet', \Google\Protobuf\Internal\FileDescriptorSet::class)
->repeated('file', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.FileDescriptorProto')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.FileDescriptorProto', \Google\Protobuf\Internal\FileDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('package', \Google\Protobuf\Internal\GPBType::STRING, 2)
->repeated('dependency', \Google\Protobuf\Internal\GPBType::STRING, 3)
->repeated('public_dependency', \Google\Protobuf\Internal\GPBType::INT32, 10)
->repeated('weak_dependency', \Google\Protobuf\Internal\GPBType::INT32, 11)
->repeated('message_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.DescriptorProto')
->repeated('enum_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 5, 'google.protobuf.internal.EnumDescriptorProto')
->repeated('service', \Google\Protobuf\Internal\GPBType::MESSAGE, 6, 'google.protobuf.internal.ServiceDescriptorProto')
->repeated('extension', \Google\Protobuf\Internal\GPBType::MESSAGE, 7, 'google.protobuf.internal.FieldDescriptorProto')
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.FileOptions')
->optional('source_code_info', \Google\Protobuf\Internal\GPBType::MESSAGE, 9, 'google.protobuf.internal.SourceCodeInfo')
->optional('syntax', \Google\Protobuf\Internal\GPBType::STRING, 12)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.DescriptorProto', \Google\Protobuf\Internal\DescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->repeated('field', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.FieldDescriptorProto')
->repeated('extension', \Google\Protobuf\Internal\GPBType::MESSAGE, 6, 'google.protobuf.internal.FieldDescriptorProto')
->repeated('nested_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.DescriptorProto')
->repeated('enum_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.EnumDescriptorProto')
->repeated('extension_range', \Google\Protobuf\Internal\GPBType::MESSAGE, 5, 'google.protobuf.internal.DescriptorProto.ExtensionRange')
->repeated('oneof_decl', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.OneofDescriptorProto')
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 7, 'google.protobuf.internal.MessageOptions')
->repeated('reserved_range', \Google\Protobuf\Internal\GPBType::MESSAGE, 9, 'google.protobuf.internal.DescriptorProto.ReservedRange')
->repeated('reserved_name', \Google\Protobuf\Internal\GPBType::STRING, 10)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.DescriptorProto.ExtensionRange', \Google\Protobuf\Internal\DescriptorProto_ExtensionRange::class)
->optional('start', \Google\Protobuf\Internal\GPBType::INT32, 1)
->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 2)
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.ExtensionRangeOptions')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.DescriptorProto.ReservedRange', \Google\Protobuf\Internal\DescriptorProto_ReservedRange::class)
->optional('start', \Google\Protobuf\Internal\GPBType::INT32, 1)
->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 2)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.ExtensionRangeOptions', \Google\Protobuf\Internal\ExtensionRangeOptions::class)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.FieldDescriptorProto', \Google\Protobuf\Internal\FieldDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('number', \Google\Protobuf\Internal\GPBType::INT32, 3)
->optional('label', \Google\Protobuf\Internal\GPBType::ENUM, 4, 'google.protobuf.internal.FieldDescriptorProto.Label')
->optional('type', \Google\Protobuf\Internal\GPBType::ENUM, 5, 'google.protobuf.internal.FieldDescriptorProto.Type')
->optional('type_name', \Google\Protobuf\Internal\GPBType::STRING, 6)
->optional('extendee', \Google\Protobuf\Internal\GPBType::STRING, 2)
->optional('default_value', \Google\Protobuf\Internal\GPBType::STRING, 7)
->optional('oneof_index', \Google\Protobuf\Internal\GPBType::INT32, 9)
->optional('json_name', \Google\Protobuf\Internal\GPBType::STRING, 10)
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.FieldOptions')
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.FieldDescriptorProto.Type', \Google\Protobuf\Internal\Type::class)
->value("TYPE_DOUBLE", 1)
->value("TYPE_FLOAT", 2)
->value("TYPE_INT64", 3)
->value("TYPE_UINT64", 4)
->value("TYPE_INT32", 5)
->value("TYPE_FIXED64", 6)
->value("TYPE_FIXED32", 7)
->value("TYPE_BOOL", 8)
->value("TYPE_STRING", 9)
->value("TYPE_GROUP", 10)
->value("TYPE_MESSAGE", 11)
->value("TYPE_BYTES", 12)
->value("TYPE_UINT32", 13)
->value("TYPE_ENUM", 14)
->value("TYPE_SFIXED32", 15)
->value("TYPE_SFIXED64", 16)
->value("TYPE_SINT32", 17)
->value("TYPE_SINT64", 18)
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.FieldDescriptorProto.Label', \Google\Protobuf\Internal\Label::class)
->value("LABEL_OPTIONAL", 1)
->value("LABEL_REQUIRED", 2)
->value("LABEL_REPEATED", 3)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.OneofDescriptorProto', \Google\Protobuf\Internal\OneofDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.OneofOptions')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.EnumDescriptorProto', \Google\Protobuf\Internal\EnumDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->repeated('value', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.EnumValueDescriptorProto')
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.EnumOptions')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.EnumValueDescriptorProto', \Google\Protobuf\Internal\EnumValueDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('number', \Google\Protobuf\Internal\GPBType::INT32, 2)
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.EnumValueOptions')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.ServiceDescriptorProto', \Google\Protobuf\Internal\ServiceDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->repeated('method', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.MethodDescriptorProto')
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.ServiceOptions')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.MethodDescriptorProto', \Google\Protobuf\Internal\MethodDescriptorProto::class)
->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('input_type', \Google\Protobuf\Internal\GPBType::STRING, 2)
->optional('output_type', \Google\Protobuf\Internal\GPBType::STRING, 3)
->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.MethodOptions')
->optional('client_streaming', \Google\Protobuf\Internal\GPBType::BOOL, 5)
->optional('server_streaming', \Google\Protobuf\Internal\GPBType::BOOL, 6)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.FileOptions', \Google\Protobuf\Internal\FileOptions::class)
->optional('java_package', \Google\Protobuf\Internal\GPBType::STRING, 1)
->optional('java_outer_classname', \Google\Protobuf\Internal\GPBType::STRING, 8)
->optional('java_multiple_files', \Google\Protobuf\Internal\GPBType::BOOL, 10)
->optional('java_generate_equals_and_hash', \Google\Protobuf\Internal\GPBType::BOOL, 20)
->optional('java_string_check_utf8', \Google\Protobuf\Internal\GPBType::BOOL, 27)
->optional('optimize_for', \Google\Protobuf\Internal\GPBType::ENUM, 9, 'google.protobuf.internal.FileOptions.OptimizeMode')
->optional('go_package', \Google\Protobuf\Internal\GPBType::STRING, 11)
->optional('cc_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 16)
->optional('java_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 17)
->optional('py_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 18)
->optional('php_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 42)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 23)
->optional('cc_enable_arenas', \Google\Protobuf\Internal\GPBType::BOOL, 31)
->optional('objc_class_prefix', \Google\Protobuf\Internal\GPBType::STRING, 36)
->optional('csharp_namespace', \Google\Protobuf\Internal\GPBType::STRING, 37)
->optional('swift_prefix', \Google\Protobuf\Internal\GPBType::STRING, 39)
->optional('php_class_prefix', \Google\Protobuf\Internal\GPBType::STRING, 40)
->optional('php_namespace', \Google\Protobuf\Internal\GPBType::STRING, 41)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.FileOptions.OptimizeMode', \Google\Protobuf\Internal\OptimizeMode::class)
->value("SPEED", 1)
->value("CODE_SIZE", 2)
->value("LITE_RUNTIME", 3)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.MessageOptions', \Google\Protobuf\Internal\MessageOptions::class)
->optional('message_set_wire_format', \Google\Protobuf\Internal\GPBType::BOOL, 1)
->optional('no_standard_descriptor_accessor', \Google\Protobuf\Internal\GPBType::BOOL, 2)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
->optional('map_entry', \Google\Protobuf\Internal\GPBType::BOOL, 7)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.FieldOptions', \Google\Protobuf\Internal\FieldOptions::class)
->optional('ctype', \Google\Protobuf\Internal\GPBType::ENUM, 1, 'google.protobuf.internal.FieldOptions.CType')
->optional('packed', \Google\Protobuf\Internal\GPBType::BOOL, 2)
->optional('jstype', \Google\Protobuf\Internal\GPBType::ENUM, 6, 'google.protobuf.internal.FieldOptions.JSType')
->optional('lazy', \Google\Protobuf\Internal\GPBType::BOOL, 5)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
->optional('weak', \Google\Protobuf\Internal\GPBType::BOOL, 10)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.FieldOptions.CType', \Google\Protobuf\Internal\CType::class)
->value("STRING", 0)
->value("CORD", 1)
->value("STRING_PIECE", 2)
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.FieldOptions.JSType', \Google\Protobuf\Internal\JSType::class)
->value("JS_NORMAL", 0)
->value("JS_STRING", 1)
->value("JS_NUMBER", 2)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.OneofOptions', \Google\Protobuf\Internal\OneofOptions::class)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.EnumOptions', \Google\Protobuf\Internal\EnumOptions::class)
->optional('allow_alias', \Google\Protobuf\Internal\GPBType::BOOL, 2)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.EnumValueOptions', \Google\Protobuf\Internal\EnumValueOptions::class)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 1)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.ServiceOptions', \Google\Protobuf\Internal\ServiceOptions::class)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 33)
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.MethodOptions', \Google\Protobuf\Internal\MethodOptions::class)
->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 33)
->optional('idempotency_level', \Google\Protobuf\Internal\GPBType::ENUM, 34, 'google.protobuf.internal.MethodOptions.IdempotencyLevel')
->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
->finalizeToPool();
$pool->addEnum('google.protobuf.internal.MethodOptions.IdempotencyLevel', \Google\Protobuf\Internal\IdempotencyLevel::class)
->value("IDEMPOTENCY_UNKNOWN", 0)
->value("NO_SIDE_EFFECTS", 1)
->value("IDEMPOTENT", 2)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.UninterpretedOption', \Google\Protobuf\Internal\UninterpretedOption::class)
->repeated('name', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.UninterpretedOption.NamePart')
->optional('identifier_value', \Google\Protobuf\Internal\GPBType::STRING, 3)
->optional('positive_int_value', \Google\Protobuf\Internal\GPBType::UINT64, 4)
->optional('negative_int_value', \Google\Protobuf\Internal\GPBType::INT64, 5)
->optional('double_value', \Google\Protobuf\Internal\GPBType::DOUBLE, 6)
->optional('string_value', \Google\Protobuf\Internal\GPBType::BYTES, 7)
->optional('aggregate_value', \Google\Protobuf\Internal\GPBType::STRING, 8)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.UninterpretedOption.NamePart', \Google\Protobuf\Internal\UninterpretedOption_NamePart::class)
->required('name_part', \Google\Protobuf\Internal\GPBType::STRING, 1)
->required('is_extension', \Google\Protobuf\Internal\GPBType::BOOL, 2)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.SourceCodeInfo', \Google\Protobuf\Internal\SourceCodeInfo::class)
->repeated('location', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.SourceCodeInfo.Location')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.SourceCodeInfo.Location', \Google\Protobuf\Internal\SourceCodeInfo_Location::class)
->repeated('path', \Google\Protobuf\Internal\GPBType::INT32, 1)
->repeated('span', \Google\Protobuf\Internal\GPBType::INT32, 2)
->optional('leading_comments', \Google\Protobuf\Internal\GPBType::STRING, 3)
->optional('trailing_comments', \Google\Protobuf\Internal\GPBType::STRING, 4)
->repeated('leading_detached_comments', \Google\Protobuf\Internal\GPBType::STRING, 6)
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.GeneratedCodeInfo', \Google\Protobuf\Internal\GeneratedCodeInfo::class)
->repeated('annotation', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.GeneratedCodeInfo.Annotation')
->finalizeToPool();
$pool->addMessage('google.protobuf.internal.GeneratedCodeInfo.Annotation', \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation::class)
->repeated('path', \Google\Protobuf\Internal\GPBType::INT32, 1)
->optional('source_file', \Google\Protobuf\Internal\GPBType::STRING, 2)
->optional('begin', \Google\Protobuf\Internal\GPBType::INT32, 3)
->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 4)
->finalizeToPool();
$pool->finish();
static::$is_initialized = true;
}
}
src/Google/Protobuf/Descriptor.php 0000644 00000006106 14641212622 0013201 0 ustar 00 internal_desc = $internal_desc;
}
/**
* @return string Full protobuf message name
*/
public function getFullName()
{
return trim($this->internal_desc->getFullName(), ".");
}
/**
* @return string PHP class name
*/
public function getClass()
{
return $this->internal_desc->getClass();
}
/**
* @param int $index Must be >= 0 and < getFieldCount()
* @return FieldDescriptor
*/
public function getField($index)
{
return $this->getPublicDescriptor($this->internal_desc->getFieldByIndex($index));
}
/**
* @return int Number of fields in message
*/
public function getFieldCount()
{
return count($this->internal_desc->getField());
}
/**
* @param int $index Must be >= 0 and < getOneofDeclCount()
* @return OneofDescriptor
*/
public function getOneofDecl($index)
{
return $this->getPublicDescriptor($this->internal_desc->getOneofDecl()[$index]);
}
/**
* @return int Number of oneofs in message
*/
public function getOneofDeclCount()
{
return count($this->internal_desc->getOneofDecl());
}
}
src/Google/Protobuf/DescriptorPool.php 0000644 00000005424 14641212622 0014035 0 ustar 00 internal_pool = $internal_pool;
}
/**
* @param string $className A fully qualified protobuf class name
* @return Descriptor
*/
public function getDescriptorByClassName($className)
{
$desc = $this->internal_pool->getDescriptorByClassName($className);
return is_null($desc) ? null : $desc->getPublicDescriptor();
}
/**
* @param string $className A fully qualified protobuf class name
* @return EnumDescriptor
*/
public function getEnumDescriptorByClassName($className)
{
$desc = $this->internal_pool->getEnumDescriptorByClassName($className);
return is_null($desc) ? null : $desc->getPublicDescriptor();
}
}
src/Google/Protobuf/EnumDescriptor.php 0000644 00000005043 14641212622 0014025 0 ustar 00 internal_desc = $internal_desc;
}
/**
* @return string Full protobuf message name
*/
public function getFullName()
{
return $this->internal_desc->getFullName();
}
/**
* @return string PHP class name
*/
public function getClass()
{
return $this->internal_desc->getClass();
}
/**
* @param int $index Must be >= 0 and < getValueCount()
* @return EnumValueDescriptor
*/
public function getValue($index)
{
return $this->internal_desc->getValueDescriptorByIndex($index);
}
/**
* @return int Number of values in enum
*/
public function getValueCount()
{
return $this->internal_desc->getValueCount();
}
}
src/Google/Protobuf/EnumValueDescriptor.php 0000644 00000004134 14641212622 0015022 0 ustar 00 name = $name;
$this->number = $number;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @return int
*/
public function getNumber()
{
return $this->number;
}
}
src/Google/Protobuf/FieldDescriptor.php 0000644 00000007105 14641212622 0014145 0 ustar 00 internal_desc = $internal_desc;
}
/**
* @return string Field name
*/
public function getName()
{
return $this->internal_desc->getName();
}
/**
* @return int Protobuf field number
*/
public function getNumber()
{
return $this->internal_desc->getNumber();
}
/**
* @return int
*/
public function getLabel()
{
return $this->internal_desc->getLabel();
}
/**
* @return int
*/
public function getType()
{
return $this->internal_desc->getType();
}
/**
* @return Descriptor Returns a descriptor for the field type if the field type is a message, otherwise throws \Exception
* @throws \Exception
*/
public function getMessageType()
{
if ($this->getType() == GPBType::MESSAGE) {
return $this->getPublicDescriptor($this->internal_desc->getMessageType());
} else {
throw new \Exception("Cannot get message type for non-message field '" . $this->getName() . "'");
}
}
/**
* @return EnumDescriptor Returns an enum descriptor if the field type is an enum, otherwise throws \Exception
* @throws \Exception
*/
public function getEnumType()
{
if ($this->getType() == GPBType::ENUM) {
return $this->getPublicDescriptor($this->internal_desc->getEnumType());
} else {
throw new \Exception("Cannot get enum type for non-enum field '" . $this->getName() . "'");
}
}
/**
* @return boolean
*/
public function isMap()
{
return $this->internal_desc->isMap();
}
}
src/Google/Protobuf/Internal/CodedInputStream.php 0000644 00000027124 14641212622 0016054 0 ustar 00 buffer = $buffer;
$this->buffer_size_after_limit = 0;
$this->buffer_end = $end;
$this->current = $start;
$this->current_limit = $end;
$this->legitimate_message_end = false;
$this->recursion_budget = self::DEFAULT_RECURSION_LIMIT;
$this->recursion_limit = self::DEFAULT_RECURSION_LIMIT;
$this->total_bytes_limit = self::DEFAULT_TOTAL_BYTES_LIMIT;
$this->total_bytes_read = $end - $start;
}
private function advance($amount)
{
$this->current += $amount;
}
public function bufferSize()
{
return $this->buffer_end - $this->current;
}
private function current()
{
return $this->total_bytes_read -
($this->buffer_end - $this->current +
$this->buffer_size_after_limit);
}
private function recomputeBufferLimits()
{
$this->buffer_end += $this->buffer_size_after_limit;
$closest_limit = min($this->current_limit, $this->total_bytes_limit);
if ($closest_limit < $this->total_bytes_read) {
// The limit position is in the current buffer. We must adjust the
// buffer size accordingly.
$this->buffer_size_after_limit = $this->total_bytes_read -
$closest_limit;
$this->buffer_end -= $this->buffer_size_after_limit;
} else {
$this->buffer_size_after_limit = 0;
}
}
private function consumedEntireMessage()
{
return $this->legitimate_message_end;
}
/**
* Read uint32 into $var. Advance buffer with consumed bytes. If the
* contained varint is larger than 32 bits, discard the high order bits.
* @param $var.
*/
public function readVarint32(&$var)
{
if (!$this->readVarint64($var)) {
return false;
}
if (PHP_INT_SIZE == 4) {
$var = bcmod($var, 4294967296);
} else {
$var &= 0xFFFFFFFF;
}
// Convert large uint32 to int32.
if ($var > 0x7FFFFFFF) {
if (PHP_INT_SIZE === 8) {
$var = $var | (0xFFFFFFFF << 32);
} else {
$var = bcsub($var, 4294967296);
}
}
$var = intval($var);
return true;
}
/**
* Read Uint64 into $var. Advance buffer with consumed bytes.
* @param $var.
*/
public function readVarint64(&$var)
{
$count = 0;
if (PHP_INT_SIZE == 4) {
$high = 0;
$low = 0;
$b = 0;
do {
if ($this->current === $this->buffer_end) {
return false;
}
if ($count === self::MAX_VARINT_BYTES) {
return false;
}
$b = ord($this->buffer[$this->current]);
$bits = 7 * $count;
if ($bits >= 32) {
$high |= (($b & 0x7F) << ($bits - 32));
} else if ($bits > 25){
// $bits is 28 in this case.
$low |= (($b & 0x7F) << 28);
$high = ($b & 0x7F) >> 4;
} else {
$low |= (($b & 0x7F) << $bits);
}
$this->advance(1);
$count += 1;
} while ($b & 0x80);
$var = GPBUtil::combineInt32ToInt64($high, $low);
if (bccomp($var, 0) < 0) {
$var = bcadd($var, "18446744073709551616");
}
} else {
$result = 0;
$shift = 0;
do {
if ($this->current === $this->buffer_end) {
return false;
}
if ($count === self::MAX_VARINT_BYTES) {
return false;
}
$byte = ord($this->buffer[$this->current]);
$result |= ($byte & 0x7f) << $shift;
$shift += 7;
$this->advance(1);
$count += 1;
} while ($byte > 0x7f);
$var = $result;
}
return true;
}
/**
* Read int into $var. If the result is larger than the largest integer, $var
* will be -1. Advance buffer with consumed bytes.
* @param $var.
*/
public function readVarintSizeAsInt(&$var)
{
if (!$this->readVarint64($var)) {
return false;
}
$var = (int)$var;
return true;
}
/**
* Read 32-bit unsiged integer to $var. If the buffer has less than 4 bytes,
* return false. Advance buffer with consumed bytes.
* @param $var.
*/
public function readLittleEndian32(&$var)
{
$data = null;
if (!$this->readRaw(4, $data)) {
return false;
}
$var = unpack('V', $data);
$var = $var[1];
return true;
}
/**
* Read 64-bit unsiged integer to $var. If the buffer has less than 8 bytes,
* return false. Advance buffer with consumed bytes.
* @param $var.
*/
public function readLittleEndian64(&$var)
{
$data = null;
if (!$this->readRaw(4, $data)) {
return false;
}
$low = unpack('V', $data)[1];
if (!$this->readRaw(4, $data)) {
return false;
}
$high = unpack('V', $data)[1];
if (PHP_INT_SIZE == 4) {
$var = GPBUtil::combineInt32ToInt64($high, $low);
} else {
$var = ($high << 32) | $low;
}
return true;
}
/**
* Read tag into $var. Advance buffer with consumed bytes.
* @param $var.
*/
public function readTag()
{
if ($this->current === $this->buffer_end) {
// Make sure that it failed due to EOF, not because we hit
// total_bytes_limit, which, unlike normal limits, is not a valid
// place to end a message.
$current_position = $this->total_bytes_read -
$this->buffer_size_after_limit;
if ($current_position >= $this->total_bytes_limit) {
// Hit total_bytes_limit_. But if we also hit the normal limit,
// we're still OK.
$this->legitimate_message_end =
($this->current_limit === $this->total_bytes_limit);
} else {
$this->legitimate_message_end = true;
}
return 0;
}
$result = 0;
// The larget tag is 2^29 - 1, which can be represented by int32.
$success = $this->readVarint32($result);
if ($success) {
return $result;
} else {
return 0;
}
}
public function readRaw($size, &$buffer)
{
$current_buffer_size = 0;
if ($this->bufferSize() < $size) {
return false;
}
$buffer = substr($this->buffer, $this->current, $size);
$this->advance($size);
return true;
}
/* Places a limit on the number of bytes that the stream may read, starting
* from the current position. Once the stream hits this limit, it will act
* like the end of the input has been reached until popLimit() is called.
*
* As the names imply, the stream conceptually has a stack of limits. The
* shortest limit on the stack is always enforced, even if it is not the top
* limit.
*
* The value returned by pushLimit() is opaque to the caller, and must be
* passed unchanged to the corresponding call to popLimit().
*
* @param integer $byte_limit
* @throws Exception Fail to push limit.
*/
public function pushLimit($byte_limit)
{
// Current position relative to the beginning of the stream.
$current_position = $this->current();
$old_limit = $this->current_limit;
// security: byte_limit is possibly evil, so check for negative values
// and overflow.
if ($byte_limit >= 0 &&
$byte_limit <= PHP_INT_MAX - $current_position &&
$byte_limit <= $this->current_limit - $current_position) {
$this->current_limit = $current_position + $byte_limit;
$this->recomputeBufferLimits();
} else {
throw new GPBDecodeException("Fail to push limit.");
}
return $old_limit;
}
/* The limit passed in is actually the *old* limit, which we returned from
* PushLimit().
*
* @param integer $byte_limit
*/
public function popLimit($byte_limit)
{
$this->current_limit = $byte_limit;
$this->recomputeBufferLimits();
// We may no longer be at a legitimate message end. ReadTag() needs to
// be called again to find out.
$this->legitimate_message_end = false;
}
public function incrementRecursionDepthAndPushLimit(
$byte_limit, &$old_limit, &$recursion_budget)
{
$old_limit = $this->pushLimit($byte_limit);
$recursion_limit = --$this->recursion_limit;
}
public function decrementRecursionDepthAndPopLimit($byte_limit)
{
$result = $this->consumedEntireMessage();
$this->popLimit($byte_limit);
++$this->recursion_budget;
return $result;
}
public function bytesUntilLimit()
{
if ($this->current_limit === PHP_INT_MAX) {
return -1;
}
return $this->current_limit - $this->current;
}
}
src/Google/Protobuf/Internal/CodedOutputStream.php 0000644 00000012372 14641212622 0016254 0 ustar 00 current = 0;
$this->buffer_size = $size;
$this->buffer = str_repeat(chr(0), $this->buffer_size);
}
public function getData()
{
return $this->buffer;
}
public function writeVarint32($value, $trim)
{
$bytes = str_repeat(chr(0), self::MAX_VARINT64_BYTES);
$size = self::writeVarintToArray($value, $bytes, $trim);
return $this->writeRaw($bytes, $size);
}
public function writeVarint64($value)
{
$bytes = str_repeat(chr(0), self::MAX_VARINT64_BYTES);
$size = self::writeVarintToArray($value, $bytes);
return $this->writeRaw($bytes, $size);
}
public function writeLittleEndian32($value)
{
$bytes = str_repeat(chr(0), 4);
$size = self::writeLittleEndian32ToArray($value, $bytes);
return $this->writeRaw($bytes, $size);
}
public function writeLittleEndian64($value)
{
$bytes = str_repeat(chr(0), 8);
$size = self::writeLittleEndian64ToArray($value, $bytes);
return $this->writeRaw($bytes, $size);
}
public function writeTag($tag)
{
return $this->writeVarint32($tag, true);
}
public function writeRaw($data, $size)
{
if ($this->buffer_size < $size) {
trigger_error("Output stream doesn't have enough buffer.");
return false;
}
for ($i = 0; $i < $size; $i++) {
$this->buffer[$this->current] = $data[$i];
$this->current++;
$this->buffer_size--;
}
return true;
}
private static function writeVarintToArray($value, &$buffer, $trim = false)
{
$current = 0;
$high = 0;
$low = 0;
if (PHP_INT_SIZE == 4) {
GPBUtil::divideInt64ToInt32($value, $high, $low, $trim);
} else {
$low = $value;
}
while (($low >= 0x80 || $low < 0) || $high != 0) {
$buffer[$current] = chr($low | 0x80);
$value = ($value >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7));
$carry = ($high & 0x7F) << ((PHP_INT_SIZE << 3) - 7);
$high = ($high >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7));
$low = (($low >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7)) | $carry);
$current++;
}
$buffer[$current] = chr($low);
return $current + 1;
}
private static function writeLittleEndian32ToArray($value, &$buffer)
{
$buffer[0] = chr($value & 0x000000FF);
$buffer[1] = chr(($value >> 8) & 0x000000FF);
$buffer[2] = chr(($value >> 16) & 0x000000FF);
$buffer[3] = chr(($value >> 24) & 0x000000FF);
return 4;
}
private static function writeLittleEndian64ToArray($value, &$buffer)
{
$high = 0;
$low = 0;
if (PHP_INT_SIZE == 4) {
GPBUtil::divideInt64ToInt32($value, $high, $low);
} else {
$low = $value & 0xFFFFFFFF;
$high = ($value >> 32) & 0xFFFFFFFF;
}
$buffer[0] = chr($low & 0x000000FF);
$buffer[1] = chr(($low >> 8) & 0x000000FF);
$buffer[2] = chr(($low >> 16) & 0x000000FF);
$buffer[3] = chr(($low >> 24) & 0x000000FF);
$buffer[4] = chr($high & 0x000000FF);
$buffer[5] = chr(($high >> 8) & 0x000000FF);
$buffer[6] = chr(($high >> 16) & 0x000000FF);
$buffer[7] = chr(($high >> 24) & 0x000000FF);
return 8;
}
}
src/Google/Protobuf/Internal/Descriptor.php 0000644 00000013215 14641212622 0014754 0 ustar 00 public_desc = new \Google\Protobuf\Descriptor($this);
}
public function addOneofDecl($oneof)
{
$this->oneof_decl[] = $oneof;
}
public function getOneofDecl()
{
return $this->oneof_decl;
}
public function setFullName($full_name)
{
$this->full_name = $full_name;
}
public function getFullName()
{
return $this->full_name;
}
public function addField($field)
{
$this->field[$field->getNumber()] = $field;
$this->json_to_field[$field->getJsonName()] = $field;
$this->name_to_field[$field->getName()] = $field;
$this->index_to_field[] = $field;
}
public function getField()
{
return $this->field;
}
public function addNestedType($desc)
{
$this->nested_type[] = $desc;
}
public function getNestedType()
{
return $this->nested_type;
}
public function addEnumType($desc)
{
$this->enum_type[] = $desc;
}
public function getEnumType()
{
return $this->enum_type;
}
public function getFieldByNumber($number)
{
if (!isset($this->field[$number])) {
return NULL;
} else {
return $this->field[$number];
}
}
public function getFieldByJsonName($json_name)
{
if (!isset($this->json_to_field[$json_name])) {
return NULL;
} else {
return $this->json_to_field[$json_name];
}
}
public function getFieldByName($name)
{
if (!isset($this->name_to_field[$name])) {
return NULL;
} else {
return $this->name_to_field[$name];
}
}
public function getFieldByIndex($index)
{
if (count($this->index_to_field) <= $index) {
return NULL;
} else {
return $this->index_to_field[$index];
}
}
public function setClass($klass)
{
$this->klass = $klass;
}
public function getClass()
{
return $this->klass;
}
public function setOptions($options)
{
$this->options = $options;
}
public function getOptions()
{
return $this->options;
}
public static function buildFromProto($proto, $file_proto, $containing)
{
$desc = new Descriptor();
$message_name_without_package = "";
$classname = "";
$fullname = "";
GPBUtil::getFullClassName(
$proto,
$containing,
$file_proto,
$message_name_without_package,
$classname,
$fullname);
$desc->setFullName($fullname);
$desc->setClass($classname);
$desc->setOptions($proto->getOptions());
foreach ($proto->getField() as $field_proto) {
$desc->addField(FieldDescriptor::buildFromProto($field_proto));
}
// Handle nested types.
foreach ($proto->getNestedType() as $nested_proto) {
$desc->addNestedType(Descriptor::buildFromProto(
$nested_proto, $file_proto, $message_name_without_package));
}
// Handle nested enum.
foreach ($proto->getEnumType() as $enum_proto) {
$desc->addEnumType(EnumDescriptor::buildFromProto(
$enum_proto, $file_proto, $message_name_without_package));
}
// Handle oneof fields.
$index = 0;
foreach ($proto->getOneofDecl() as $oneof_proto) {
$desc->addOneofDecl(
OneofDescriptor::buildFromProto($oneof_proto, $desc, $index));
$index++;
}
return $desc;
}
}
src/Google/Protobuf/Internal/DescriptorPool.php 0000644 00000012575 14641212622 0015616 0 ustar 00 mergeFromString($data);
$file = FileDescriptor::buildFromProto($files->getFile()[0]);
foreach ($file->getMessageType() as $desc) {
$this->addDescriptor($desc);
}
unset($desc);
foreach ($file->getEnumType() as $desc) {
$this->addEnumDescriptor($desc);
}
unset($desc);
foreach ($file->getMessageType() as $desc) {
$this->crossLink($desc);
}
unset($desc);
}
public function addMessage($name, $klass)
{
return new MessageBuilderContext($name, $klass, $this);
}
public function addEnum($name, $klass)
{
return new EnumBuilderContext($name, $klass, $this);
}
public function addDescriptor($descriptor)
{
$this->proto_to_class[$descriptor->getFullName()] =
$descriptor->getClass();
$this->class_to_desc[$descriptor->getClass()] = $descriptor;
foreach ($descriptor->getNestedType() as $nested_type) {
$this->addDescriptor($nested_type);
}
foreach ($descriptor->getEnumType() as $enum_type) {
$this->addEnumDescriptor($enum_type);
}
}
public function addEnumDescriptor($descriptor)
{
$this->proto_to_class[$descriptor->getFullName()] =
$descriptor->getClass();
$this->class_to_enum_desc[$descriptor->getClass()] = $descriptor;
}
public function getDescriptorByClassName($klass)
{
return $this->class_to_desc[$klass];
}
public function getEnumDescriptorByClassName($klass)
{
return $this->class_to_enum_desc[$klass];
}
public function getDescriptorByProtoName($proto)
{
$klass = $this->proto_to_class[$proto];
return $this->class_to_desc[$klass];
}
public function getEnumDescriptorByProtoName($proto)
{
$klass = $this->proto_to_class[$proto];
return $this->class_to_enum_desc[$klass];
}
private function crossLink(Descriptor $desc)
{
foreach ($desc->getField() as $field) {
switch ($field->getType()) {
case GPBType::MESSAGE:
$proto = $field->getMessageType();
$field->setMessageType(
$this->getDescriptorByProtoName($proto));
break;
case GPBType::ENUM:
$proto = $field->getEnumType();
$field->setEnumType(
$this->getEnumDescriptorByProtoName($proto));
break;
default:
break;
}
}
unset($field);
foreach ($desc->getNestedType() as $nested_type) {
$this->crossLink($nested_type);
}
unset($nested_type);
}
public function finish()
{
foreach ($this->class_to_desc as $klass => $desc) {
$this->crossLink($desc);
}
unset($desc);
}
}
src/Google/Protobuf/Internal/DescriptorProto.php 0000644 00000026333 14641212622 0016005 0 ustar 00 google.protobuf.DescriptorProto
*/
class DescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2;
*/
private $field;
private $has_field = false;
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6;
*/
private $extension;
private $has_extension = false;
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3;
*/
private $nested_type;
private $has_nested_type = false;
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
*/
private $enum_type;
private $has_enum_type = false;
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
*/
private $extension_range;
private $has_extension_range = false;
/**
* Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
*/
private $oneof_decl;
private $has_oneof_decl = false;
/**
* Generated from protobuf field optional .google.protobuf.MessageOptions options = 7;
*/
private $options = null;
private $has_options = false;
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
*/
private $reserved_range;
private $has_reserved_range = false;
/**
* Reserved field names, which may not be used by fields in the same message.
* A given name may only be reserved once.
*
* Generated from protobuf field repeated string reserved_name = 10;
*/
private $reserved_name;
private $has_reserved_name = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getField()
{
return $this->field;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2;
* @param \Google\Protobuf\Internal\FieldDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setField($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->field = $arr;
$this->has_field = true;
return $this;
}
public function hasField()
{
return $this->has_field;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getExtension()
{
return $this->extension;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6;
* @param \Google\Protobuf\Internal\FieldDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setExtension($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->extension = $arr;
$this->has_extension = true;
return $this;
}
public function hasExtension()
{
return $this->has_extension;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getNestedType()
{
return $this->nested_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3;
* @param \Google\Protobuf\Internal\DescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setNestedType($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class);
$this->nested_type = $arr;
$this->has_nested_type = true;
return $this;
}
public function hasNestedType()
{
return $this->has_nested_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getEnumType()
{
return $this->enum_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
* @param \Google\Protobuf\Internal\EnumDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setEnumType($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class);
$this->enum_type = $arr;
$this->has_enum_type = true;
return $this;
}
public function hasEnumType()
{
return $this->has_enum_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getExtensionRange()
{
return $this->extension_range;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
* @param \Google\Protobuf\Internal\DescriptorProto_ExtensionRange[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setExtensionRange($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto_ExtensionRange::class);
$this->extension_range = $arr;
$this->has_extension_range = true;
return $this;
}
public function hasExtensionRange()
{
return $this->has_extension_range;
}
/**
* Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getOneofDecl()
{
return $this->oneof_decl;
}
/**
* Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
* @param \Google\Protobuf\Internal\OneofDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setOneofDecl($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\OneofDescriptorProto::class);
$this->oneof_decl = $arr;
$this->has_oneof_decl = true;
return $this;
}
public function hasOneofDecl()
{
return $this->has_oneof_decl;
}
/**
* Generated from protobuf field optional .google.protobuf.MessageOptions options = 7;
* @return \Google\Protobuf\Internal\MessageOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.MessageOptions options = 7;
* @param \Google\Protobuf\Internal\MessageOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MessageOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getReservedRange()
{
return $this->reserved_range;
}
/**
* Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
* @param \Google\Protobuf\Internal\DescriptorProto_ReservedRange[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setReservedRange($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto_ReservedRange::class);
$this->reserved_range = $arr;
$this->has_reserved_range = true;
return $this;
}
public function hasReservedRange()
{
return $this->has_reserved_range;
}
/**
* Reserved field names, which may not be used by fields in the same message.
* A given name may only be reserved once.
*
* Generated from protobuf field repeated string reserved_name = 10;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getReservedName()
{
return $this->reserved_name;
}
/**
* Reserved field names, which may not be used by fields in the same message.
* A given name may only be reserved once.
*
* Generated from protobuf field repeated string reserved_name = 10;
* @param string[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setReservedName($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->reserved_name = $arr;
$this->has_reserved_name = true;
return $this;
}
public function hasReservedName()
{
return $this->has_reserved_name;
}
}
src/Google/Protobuf/Internal/DescriptorProto_ExtensionRange.php 0000644 00000005772 14641212622 0021022 0 ustar 00 google.protobuf.DescriptorProto.ExtensionRange
*/
class DescriptorProto_ExtensionRange extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional int32 start = 1;
*/
private $start = 0;
private $has_start = false;
/**
* Generated from protobuf field optional int32 end = 2;
*/
private $end = 0;
private $has_end = false;
/**
* Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional int32 start = 1;
* @return int
*/
public function getStart()
{
return $this->start;
}
/**
* Generated from protobuf field optional int32 start = 1;
* @param int $var
* @return $this
*/
public function setStart($var)
{
GPBUtil::checkInt32($var);
$this->start = $var;
$this->has_start = true;
return $this;
}
public function hasStart()
{
return $this->has_start;
}
/**
* Generated from protobuf field optional int32 end = 2;
* @return int
*/
public function getEnd()
{
return $this->end;
}
/**
* Generated from protobuf field optional int32 end = 2;
* @param int $var
* @return $this
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
return $this;
}
public function hasEnd()
{
return $this->has_end;
}
/**
* Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3;
* @return \Google\Protobuf\Internal\ExtensionRangeOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3;
* @param \Google\Protobuf\Internal\ExtensionRangeOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\ExtensionRangeOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/DescriptorProto_ReservedRange.php 0000644 00000004531 14641212622 0020615 0 ustar 00 google.protobuf.DescriptorProto.ReservedRange
*/
class DescriptorProto_ReservedRange extends \Google\Protobuf\Internal\Message
{
/**
* Inclusive.
*
* Generated from protobuf field optional int32 start = 1;
*/
private $start = 0;
private $has_start = false;
/**
* Exclusive.
*
* Generated from protobuf field optional int32 end = 2;
*/
private $end = 0;
private $has_end = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Inclusive.
*
* Generated from protobuf field optional int32 start = 1;
* @return int
*/
public function getStart()
{
return $this->start;
}
/**
* Inclusive.
*
* Generated from protobuf field optional int32 start = 1;
* @param int $var
* @return $this
*/
public function setStart($var)
{
GPBUtil::checkInt32($var);
$this->start = $var;
$this->has_start = true;
return $this;
}
public function hasStart()
{
return $this->has_start;
}
/**
* Exclusive.
*
* Generated from protobuf field optional int32 end = 2;
* @return int
*/
public function getEnd()
{
return $this->end;
}
/**
* Exclusive.
*
* Generated from protobuf field optional int32 end = 2;
* @param int $var
* @return $this
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
return $this;
}
public function hasEnd()
{
return $this->has_end;
}
}
src/Google/Protobuf/Internal/EnumBuilderContext.php 0000644 00000004553 14641212622 0016423 0 ustar 00 descriptor = new EnumDescriptor();
$this->descriptor->setFullName($full_name);
$this->descriptor->setClass($klass);
$this->pool = $pool;
}
public function value($name, $number)
{
$value = new EnumValueDescriptor($name, $number);
$this->descriptor->addValue($number, $value);
return $this;
}
public function finalizeToPool()
{
$this->pool->addEnumDescriptor($this->descriptor);
}
}
src/Google/Protobuf/Internal/EnumDescriptor.php 0000644 00000003745 14641212622 0015610 0 ustar 00 public_desc = new \Google\Protobuf\EnumDescriptor($this);
}
public function setFullName($full_name)
{
$this->full_name = $full_name;
}
public function getFullName()
{
return $this->full_name;
}
public function addValue($number, $value)
{
$this->value[$number] = $value;
$this->name_to_value[$value->getName()] = $value;
$this->value_descriptor[] = new EnumValueDescriptor($value->getName(), $number);
}
public function getValueByNumber($number)
{
return $this->value[$number];
}
public function getValueByName($name)
{
return $this->name_to_value[$name];
}
public function getValueDescriptorByIndex($index)
{
return $this->value_descriptor[$index];
}
public function getValueCount()
{
return count($this->value);
}
public function setClass($klass)
{
$this->klass = $klass;
}
public function getClass()
{
return $this->klass;
}
public static function buildFromProto($proto, $file_proto, $containing)
{
$desc = new EnumDescriptor();
$enum_name_without_package = "";
$classname = "";
$fullname = "";
GPBUtil::getFullClassName(
$proto,
$containing,
$file_proto,
$enum_name_without_package,
$classname,
$fullname);
$desc->setFullName($fullname);
$desc->setClass($classname);
$values = $proto->getValue();
foreach ($values as $value) {
$desc->addValue($value->getNumber(), $value);
}
return $desc;
}
}
src/Google/Protobuf/Internal/EnumDescriptorProto.php 0000644 00000006476 14641212622 0016640 0 ustar 00 google.protobuf.EnumDescriptorProto
*/
class EnumDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2;
*/
private $value;
private $has_value = false;
/**
* Generated from protobuf field optional .google.protobuf.EnumOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getValue()
{
return $this->value;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2;
* @param \Google\Protobuf\Internal\EnumValueDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setValue($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumValueDescriptorProto::class);
$this->value = $arr;
$this->has_value = true;
return $this;
}
public function hasValue()
{
return $this->has_value;
}
/**
* Generated from protobuf field optional .google.protobuf.EnumOptions options = 3;
* @return \Google\Protobuf\Internal\EnumOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.EnumOptions options = 3;
* @param \Google\Protobuf\Internal\EnumOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/EnumOptions.php 0000644 00000011210 14641212622 0015107 0 ustar 00 google.protobuf.EnumOptions
*/
class EnumOptions extends \Google\Protobuf\Internal\Message
{
/**
* Set this option to true to allow mapping different tag names to the same
* value.
*
* Generated from protobuf field optional bool allow_alias = 2;
*/
private $allow_alias = false;
private $has_allow_alias = false;
/**
* Is this enum deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum, or it will be completely ignored; in the very least, this
* is a formalization for deprecating enums.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Set this option to true to allow mapping different tag names to the same
* value.
*
* Generated from protobuf field optional bool allow_alias = 2;
* @return bool
*/
public function getAllowAlias()
{
return $this->allow_alias;
}
/**
* Set this option to true to allow mapping different tag names to the same
* value.
*
* Generated from protobuf field optional bool allow_alias = 2;
* @param bool $var
* @return $this
*/
public function setAllowAlias($var)
{
GPBUtil::checkBool($var);
$this->allow_alias = $var;
$this->has_allow_alias = true;
return $this;
}
public function hasAllowAlias()
{
return $this->has_allow_alias;
}
/**
* Is this enum deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum, or it will be completely ignored; in the very least, this
* is a formalization for deprecating enums.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this enum deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum, or it will be completely ignored; in the very least, this
* is a formalization for deprecating enums.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/EnumValueDescriptorProto.php 0000644 00000006041 14641212622 0017621 0 ustar 00 google.protobuf.EnumValueDescriptorProto
*/
class EnumValueDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field optional int32 number = 2;
*/
private $number = 0;
private $has_number = false;
/**
* Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field optional int32 number = 2;
* @return int
*/
public function getNumber()
{
return $this->number;
}
/**
* Generated from protobuf field optional int32 number = 2;
* @param int $var
* @return $this
*/
public function setNumber($var)
{
GPBUtil::checkInt32($var);
$this->number = $var;
$this->has_number = true;
return $this;
}
public function hasNumber()
{
return $this->has_number;
}
/**
* Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3;
* @return \Google\Protobuf\Internal\EnumValueOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3;
* @param \Google\Protobuf\Internal\EnumValueOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumValueOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/EnumValueOptions.php 0000644 00000007211 14641212622 0016112 0 ustar 00 google.protobuf.EnumValueOptions
*/
class EnumValueOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this enum value deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum value, or it will be completely ignored; in the very least,
* this is a formalization for deprecating enum values.
*
* Generated from protobuf field optional bool deprecated = 1 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Is this enum value deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum value, or it will be completely ignored; in the very least,
* this is a formalization for deprecating enum values.
*
* Generated from protobuf field optional bool deprecated = 1 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this enum value deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum value, or it will be completely ignored; in the very least,
* this is a formalization for deprecating enum values.
*
* Generated from protobuf field optional bool deprecated = 1 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/ExtensionRangeOptions.php 0000644 00000004101 14641212622 0017135 0 ustar 00 google.protobuf.ExtensionRangeOptions
*/
class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message
{
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FieldDescriptor.php 0000644 00000015550 14641212622 0015724 0 ustar 00 public_desc = new \Google\Protobuf\FieldDescriptor($this);
}
public function setOneofIndex($index)
{
$this->oneof_index = $index;
}
public function getOneofIndex()
{
return $this->oneof_index;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setJsonName($json_name)
{
$this->json_name = $json_name;
}
public function getJsonName()
{
return $this->json_name;
}
public function setSetter($setter)
{
$this->setter = $setter;
}
public function getSetter()
{
return $this->setter;
}
public function setGetter($getter)
{
$this->getter = $getter;
}
public function getGetter()
{
return $this->getter;
}
public function setNumber($number)
{
$this->number = $number;
}
public function getNumber()
{
return $this->number;
}
public function setLabel($label)
{
$this->label = $label;
}
public function getLabel()
{
return $this->label;
}
public function isRepeated()
{
return $this->label === GPBLabel::REPEATED;
}
public function setType($type)
{
$this->type = $type;
}
public function getType()
{
return $this->type;
}
public function setMessageType($message_type)
{
$this->message_type = $message_type;
}
public function getMessageType()
{
return $this->message_type;
}
public function setEnumType($enum_type)
{
$this->enum_type = $enum_type;
}
public function getEnumType()
{
return $this->enum_type;
}
public function setPacked($packed)
{
$this->packed = $packed;
}
public function getPacked()
{
return $this->packed;
}
public function isPackable()
{
return $this->isRepeated() && self::isTypePackable($this->type);
}
public function isMap()
{
return $this->getType() == GPBType::MESSAGE &&
!is_null($this->getMessageType()->getOptions()) &&
$this->getMessageType()->getOptions()->getMapEntry();
}
private static function isTypePackable($field_type)
{
return ($field_type !== GPBType::STRING &&
$field_type !== GPBType::GROUP &&
$field_type !== GPBType::MESSAGE &&
$field_type !== GPBType::BYTES);
}
public static function getFieldDescriptor($proto)
{
$type_name = null;
$type = $proto->getType();
switch ($type) {
case GPBType::MESSAGE:
case GPBType::GROUP:
case GPBType::ENUM:
$type_name = $proto->getTypeName();
break;
default:
break;
}
$oneof_index = $proto->hasOneofIndex() ? $proto->getOneofIndex() : -1;
$packed = false;
$options = $proto->getOptions();
if ($options !== null) {
$packed = $options->getPacked();
}
$field = new FieldDescriptor();
$field->setName($proto->getName());
$json_name = $proto->hasJsonName() ? $proto->getJsonName() :
lcfirst(implode('', array_map('ucwords', explode('_', $proto->getName()))));
if ($proto->hasJsonName()) {
$json_name = $proto->getJsonName();
} else {
$proto_name = $proto->getName();
$json_name = implode('', array_map('ucwords', explode('_', $proto_name)));
if ($proto_name[0] !== "_" && !ctype_upper($proto_name[0])) {
$json_name = lcfirst($json_name);
}
}
$field->setJsonName($json_name);
$camel_name = implode('', array_map('ucwords', explode('_', $proto->getName())));
$field->setGetter('get' . $camel_name);
$field->setSetter('set' . $camel_name);
$field->setType($proto->getType());
$field->setNumber($proto->getNumber());
$field->setLabel($proto->getLabel());
$field->setPacked($packed);
$field->setOneofIndex($oneof_index);
// At this time, the message/enum type may have not been added to pool.
// So we use the type name as place holder and will replace it with the
// actual descriptor in cross building.
switch ($type) {
case GPBType::MESSAGE:
$field->setMessageType($type_name);
break;
case GPBType::ENUM:
$field->setEnumType($type_name);
break;
default:
break;
}
return $field;
}
public static function buildFromProto($proto)
{
return FieldDescriptor::getFieldDescriptor($proto);
}
}
src/Google/Protobuf/Internal/FieldDescriptorProto.php 0000644 00000031023 14641212622 0016741 0 ustar 00 google.protobuf.FieldDescriptorProto
*/
class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field optional int32 number = 3;
*/
private $number = 0;
private $has_number = false;
/**
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4;
*/
private $label = 0;
private $has_label = false;
/**
* If type_name is set, this need not be set. If both this and type_name
* are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
*
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5;
*/
private $type = 0;
private $has_type = false;
/**
* For message and enum types, this is the name of the type. If the name
* starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
* rules are used to find the type (i.e. first the nested types within this
* message are searched, then within the parent, on up to the root
* namespace).
*
* Generated from protobuf field optional string type_name = 6;
*/
private $type_name = '';
private $has_type_name = false;
/**
* For extensions, this is the name of the type being extended. It is
* resolved in the same manner as type_name.
*
* Generated from protobuf field optional string extendee = 2;
*/
private $extendee = '';
private $has_extendee = false;
/**
* For numeric types, contains the original text representation of the value.
* For booleans, "true" or "false".
* For strings, contains the default text contents (not escaped in any way).
* For bytes, contains the C escaped value. All bytes >= 128 are escaped.
* TODO(kenton): Base-64 encode?
*
* Generated from protobuf field optional string default_value = 7;
*/
private $default_value = '';
private $has_default_value = false;
/**
* If set, gives the index of a oneof in the containing type's oneof_decl
* list. This field is a member of that oneof.
*
* Generated from protobuf field optional int32 oneof_index = 9;
*/
private $oneof_index = 0;
private $has_oneof_index = false;
/**
* JSON name of this field. The value is set by protocol compiler. If the
* user has set a "json_name" option on this field, that option's value
* will be used. Otherwise, it's deduced from the field's name by converting
* it to camelCase.
*
* Generated from protobuf field optional string json_name = 10;
*/
private $json_name = '';
private $has_json_name = false;
/**
* Generated from protobuf field optional .google.protobuf.FieldOptions options = 8;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field optional int32 number = 3;
* @return int
*/
public function getNumber()
{
return $this->number;
}
/**
* Generated from protobuf field optional int32 number = 3;
* @param int $var
* @return $this
*/
public function setNumber($var)
{
GPBUtil::checkInt32($var);
$this->number = $var;
$this->has_number = true;
return $this;
}
public function hasNumber()
{
return $this->has_number;
}
/**
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4;
* @return int
*/
public function getLabel()
{
return $this->label;
}
/**
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4;
* @param int $var
* @return $this
*/
public function setLabel($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto_Label::class);
$this->label = $var;
$this->has_label = true;
return $this;
}
public function hasLabel()
{
return $this->has_label;
}
/**
* If type_name is set, this need not be set. If both this and type_name
* are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
*
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5;
* @return int
*/
public function getType()
{
return $this->type;
}
/**
* If type_name is set, this need not be set. If both this and type_name
* are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
*
* Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5;
* @param int $var
* @return $this
*/
public function setType($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto_Type::class);
$this->type = $var;
$this->has_type = true;
return $this;
}
public function hasType()
{
return $this->has_type;
}
/**
* For message and enum types, this is the name of the type. If the name
* starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
* rules are used to find the type (i.e. first the nested types within this
* message are searched, then within the parent, on up to the root
* namespace).
*
* Generated from protobuf field optional string type_name = 6;
* @return string
*/
public function getTypeName()
{
return $this->type_name;
}
/**
* For message and enum types, this is the name of the type. If the name
* starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
* rules are used to find the type (i.e. first the nested types within this
* message are searched, then within the parent, on up to the root
* namespace).
*
* Generated from protobuf field optional string type_name = 6;
* @param string $var
* @return $this
*/
public function setTypeName($var)
{
GPBUtil::checkString($var, True);
$this->type_name = $var;
$this->has_type_name = true;
return $this;
}
public function hasTypeName()
{
return $this->has_type_name;
}
/**
* For extensions, this is the name of the type being extended. It is
* resolved in the same manner as type_name.
*
* Generated from protobuf field optional string extendee = 2;
* @return string
*/
public function getExtendee()
{
return $this->extendee;
}
/**
* For extensions, this is the name of the type being extended. It is
* resolved in the same manner as type_name.
*
* Generated from protobuf field optional string extendee = 2;
* @param string $var
* @return $this
*/
public function setExtendee($var)
{
GPBUtil::checkString($var, True);
$this->extendee = $var;
$this->has_extendee = true;
return $this;
}
public function hasExtendee()
{
return $this->has_extendee;
}
/**
* For numeric types, contains the original text representation of the value.
* For booleans, "true" or "false".
* For strings, contains the default text contents (not escaped in any way).
* For bytes, contains the C escaped value. All bytes >= 128 are escaped.
* TODO(kenton): Base-64 encode?
*
* Generated from protobuf field optional string default_value = 7;
* @return string
*/
public function getDefaultValue()
{
return $this->default_value;
}
/**
* For numeric types, contains the original text representation of the value.
* For booleans, "true" or "false".
* For strings, contains the default text contents (not escaped in any way).
* For bytes, contains the C escaped value. All bytes >= 128 are escaped.
* TODO(kenton): Base-64 encode?
*
* Generated from protobuf field optional string default_value = 7;
* @param string $var
* @return $this
*/
public function setDefaultValue($var)
{
GPBUtil::checkString($var, True);
$this->default_value = $var;
$this->has_default_value = true;
return $this;
}
public function hasDefaultValue()
{
return $this->has_default_value;
}
/**
* If set, gives the index of a oneof in the containing type's oneof_decl
* list. This field is a member of that oneof.
*
* Generated from protobuf field optional int32 oneof_index = 9;
* @return int
*/
public function getOneofIndex()
{
return $this->oneof_index;
}
/**
* If set, gives the index of a oneof in the containing type's oneof_decl
* list. This field is a member of that oneof.
*
* Generated from protobuf field optional int32 oneof_index = 9;
* @param int $var
* @return $this
*/
public function setOneofIndex($var)
{
GPBUtil::checkInt32($var);
$this->oneof_index = $var;
$this->has_oneof_index = true;
return $this;
}
public function hasOneofIndex()
{
return $this->has_oneof_index;
}
/**
* JSON name of this field. The value is set by protocol compiler. If the
* user has set a "json_name" option on this field, that option's value
* will be used. Otherwise, it's deduced from the field's name by converting
* it to camelCase.
*
* Generated from protobuf field optional string json_name = 10;
* @return string
*/
public function getJsonName()
{
return $this->json_name;
}
/**
* JSON name of this field. The value is set by protocol compiler. If the
* user has set a "json_name" option on this field, that option's value
* will be used. Otherwise, it's deduced from the field's name by converting
* it to camelCase.
*
* Generated from protobuf field optional string json_name = 10;
* @param string $var
* @return $this
*/
public function setJsonName($var)
{
GPBUtil::checkString($var, True);
$this->json_name = $var;
$this->has_json_name = true;
return $this;
}
public function hasJsonName()
{
return $this->has_json_name;
}
/**
* Generated from protobuf field optional .google.protobuf.FieldOptions options = 8;
* @return \Google\Protobuf\Internal\FieldOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.FieldOptions options = 8;
* @param \Google\Protobuf\Internal\FieldOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FieldOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/FieldDescriptorProto_Label.php 0000644 00000001167 14641212622 0020046 0 ustar 00 Google\Protobuf\Internal
*/
class FieldDescriptorProto_Label
{
/**
* 0 is reserved for errors
*
* Generated from protobuf enum LABEL_OPTIONAL = 1;
*/
const LABEL_OPTIONAL = 1;
/**
* Generated from protobuf enum LABEL_REQUIRED = 2;
*/
const LABEL_REQUIRED = 2;
/**
* Generated from protobuf enum LABEL_REPEATED = 3;
*/
const LABEL_REPEATED = 3;
}
src/Google/Protobuf/Internal/FieldDescriptorProto_Type.php 0000644 00000005572 14641212622 0017754 0 ustar 00 Google\Protobuf\Internal
*/
class FieldDescriptorProto_Type
{
/**
* 0 is reserved for errors.
* Order is weird for historical reasons.
*
* Generated from protobuf enum TYPE_DOUBLE = 1;
*/
const TYPE_DOUBLE = 1;
/**
* Generated from protobuf enum TYPE_FLOAT = 2;
*/
const TYPE_FLOAT = 2;
/**
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
* negative values are likely.
*
* Generated from protobuf enum TYPE_INT64 = 3;
*/
const TYPE_INT64 = 3;
/**
* Generated from protobuf enum TYPE_UINT64 = 4;
*/
const TYPE_UINT64 = 4;
/**
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
* negative values are likely.
*
* Generated from protobuf enum TYPE_INT32 = 5;
*/
const TYPE_INT32 = 5;
/**
* Generated from protobuf enum TYPE_FIXED64 = 6;
*/
const TYPE_FIXED64 = 6;
/**
* Generated from protobuf enum TYPE_FIXED32 = 7;
*/
const TYPE_FIXED32 = 7;
/**
* Generated from protobuf enum TYPE_BOOL = 8;
*/
const TYPE_BOOL = 8;
/**
* Generated from protobuf enum TYPE_STRING = 9;
*/
const TYPE_STRING = 9;
/**
* Tag-delimited aggregate.
* Group type is deprecated and not supported in proto3. However, Proto3
* implementations should still be able to parse the group wire format and
* treat group fields as unknown fields.
*
* Generated from protobuf enum TYPE_GROUP = 10;
*/
const TYPE_GROUP = 10;
/**
* Length-delimited aggregate.
*
* Generated from protobuf enum TYPE_MESSAGE = 11;
*/
const TYPE_MESSAGE = 11;
/**
* New in version 2.
*
* Generated from protobuf enum TYPE_BYTES = 12;
*/
const TYPE_BYTES = 12;
/**
* Generated from protobuf enum TYPE_UINT32 = 13;
*/
const TYPE_UINT32 = 13;
/**
* Generated from protobuf enum TYPE_ENUM = 14;
*/
const TYPE_ENUM = 14;
/**
* Generated from protobuf enum TYPE_SFIXED32 = 15;
*/
const TYPE_SFIXED32 = 15;
/**
* Generated from protobuf enum TYPE_SFIXED64 = 16;
*/
const TYPE_SFIXED64 = 16;
/**
* Uses ZigZag encoding.
*
* Generated from protobuf enum TYPE_SINT32 = 17;
*/
const TYPE_SINT32 = 17;
/**
* Uses ZigZag encoding.
*
* Generated from protobuf enum TYPE_SINT64 = 18;
*/
const TYPE_SINT64 = 18;
}
src/Google/Protobuf/Internal/FieldOptions.php 0000644 00000042064 14641212622 0015241 0 ustar 00 google.protobuf.FieldOptions
*/
class FieldOptions extends \Google\Protobuf\Internal\Message
{
/**
* The ctype option instructs the C++ code generator to use a different
* representation of the field than it normally would. See the specific
* options below. This option is not yet implemented in the open source
* release -- sorry, we'll try to include it in a future version!
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
*/
private $ctype = 0;
private $has_ctype = false;
/**
* The packed option can be enabled for repeated primitive fields to enable
* a more efficient representation on the wire. Rather than repeatedly
* writing the tag and type for each element, the entire array is encoded as
* a single length-delimited blob. In proto3, only explicit setting it to
* false will avoid using packed encoding.
*
* Generated from protobuf field optional bool packed = 2;
*/
private $packed = false;
private $has_packed = false;
/**
* The jstype option determines the JavaScript type used for values of the
* field. The option is permitted only for 64 bit integral and fixed types
* (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
* is represented as JavaScript string, which avoids loss of precision that
* can happen when a large value is converted to a floating point JavaScript.
* Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
* use the JavaScript "number" type. The behavior of the default option
* JS_NORMAL is implementation dependent.
* This option is an enum to permit additional types to be added, e.g.
* goog.math.Integer.
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
*/
private $jstype = 0;
private $has_jstype = false;
/**
* Should this field be parsed lazily? Lazy applies only to message-type
* fields. It means that when the outer message is initially parsed, the
* inner message's contents will not be parsed but instead stored in encoded
* form. The inner message will actually be parsed when it is first accessed.
* This is only a hint. Implementations are free to choose whether to use
* eager or lazy parsing regardless of the value of this option. However,
* setting this option true suggests that the protocol author believes that
* using lazy parsing on this field is worth the additional bookkeeping
* overhead typically needed to implement it.
* This option does not affect the public interface of any generated code;
* all method signatures remain the same. Furthermore, thread-safety of the
* interface is not affected by this option; const methods remain safe to
* call from multiple threads concurrently, while non-const methods continue
* to require exclusive access.
* Note that implementations may choose not to check required fields within
* a lazy sub-message. That is, calling IsInitialized() on the outer message
* may return true even if the inner message has missing required fields.
* This is necessary because otherwise the inner message would have to be
* parsed in order to perform the check, defeating the purpose of lazy
* parsing. An implementation which chooses not to check required fields
* must be consistent about it. That is, for any particular sub-message, the
* implementation must either *always* check its required fields, or *never*
* check its required fields, regardless of whether or not the message has
* been parsed.
*
* Generated from protobuf field optional bool lazy = 5 [default = false];
*/
private $lazy = false;
private $has_lazy = false;
/**
* Is this field deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for accessors, or it will be completely ignored; in the very least, this
* is a formalization for deprecating fields.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field optional bool weak = 10 [default = false];
*/
private $weak = false;
private $has_weak = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* The ctype option instructs the C++ code generator to use a different
* representation of the field than it normally would. See the specific
* options below. This option is not yet implemented in the open source
* release -- sorry, we'll try to include it in a future version!
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
* @return int
*/
public function getCtype()
{
return $this->ctype;
}
/**
* The ctype option instructs the C++ code generator to use a different
* representation of the field than it normally would. See the specific
* options below. This option is not yet implemented in the open source
* release -- sorry, we'll try to include it in a future version!
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
* @param int $var
* @return $this
*/
public function setCtype($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions_CType::class);
$this->ctype = $var;
$this->has_ctype = true;
return $this;
}
public function hasCtype()
{
return $this->has_ctype;
}
/**
* The packed option can be enabled for repeated primitive fields to enable
* a more efficient representation on the wire. Rather than repeatedly
* writing the tag and type for each element, the entire array is encoded as
* a single length-delimited blob. In proto3, only explicit setting it to
* false will avoid using packed encoding.
*
* Generated from protobuf field optional bool packed = 2;
* @return bool
*/
public function getPacked()
{
return $this->packed;
}
/**
* The packed option can be enabled for repeated primitive fields to enable
* a more efficient representation on the wire. Rather than repeatedly
* writing the tag and type for each element, the entire array is encoded as
* a single length-delimited blob. In proto3, only explicit setting it to
* false will avoid using packed encoding.
*
* Generated from protobuf field optional bool packed = 2;
* @param bool $var
* @return $this
*/
public function setPacked($var)
{
GPBUtil::checkBool($var);
$this->packed = $var;
$this->has_packed = true;
return $this;
}
public function hasPacked()
{
return $this->has_packed;
}
/**
* The jstype option determines the JavaScript type used for values of the
* field. The option is permitted only for 64 bit integral and fixed types
* (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
* is represented as JavaScript string, which avoids loss of precision that
* can happen when a large value is converted to a floating point JavaScript.
* Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
* use the JavaScript "number" type. The behavior of the default option
* JS_NORMAL is implementation dependent.
* This option is an enum to permit additional types to be added, e.g.
* goog.math.Integer.
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
* @return int
*/
public function getJstype()
{
return $this->jstype;
}
/**
* The jstype option determines the JavaScript type used for values of the
* field. The option is permitted only for 64 bit integral and fixed types
* (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
* is represented as JavaScript string, which avoids loss of precision that
* can happen when a large value is converted to a floating point JavaScript.
* Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
* use the JavaScript "number" type. The behavior of the default option
* JS_NORMAL is implementation dependent.
* This option is an enum to permit additional types to be added, e.g.
* goog.math.Integer.
*
* Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
* @param int $var
* @return $this
*/
public function setJstype($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions_JSType::class);
$this->jstype = $var;
$this->has_jstype = true;
return $this;
}
public function hasJstype()
{
return $this->has_jstype;
}
/**
* Should this field be parsed lazily? Lazy applies only to message-type
* fields. It means that when the outer message is initially parsed, the
* inner message's contents will not be parsed but instead stored in encoded
* form. The inner message will actually be parsed when it is first accessed.
* This is only a hint. Implementations are free to choose whether to use
* eager or lazy parsing regardless of the value of this option. However,
* setting this option true suggests that the protocol author believes that
* using lazy parsing on this field is worth the additional bookkeeping
* overhead typically needed to implement it.
* This option does not affect the public interface of any generated code;
* all method signatures remain the same. Furthermore, thread-safety of the
* interface is not affected by this option; const methods remain safe to
* call from multiple threads concurrently, while non-const methods continue
* to require exclusive access.
* Note that implementations may choose not to check required fields within
* a lazy sub-message. That is, calling IsInitialized() on the outer message
* may return true even if the inner message has missing required fields.
* This is necessary because otherwise the inner message would have to be
* parsed in order to perform the check, defeating the purpose of lazy
* parsing. An implementation which chooses not to check required fields
* must be consistent about it. That is, for any particular sub-message, the
* implementation must either *always* check its required fields, or *never*
* check its required fields, regardless of whether or not the message has
* been parsed.
*
* Generated from protobuf field optional bool lazy = 5 [default = false];
* @return bool
*/
public function getLazy()
{
return $this->lazy;
}
/**
* Should this field be parsed lazily? Lazy applies only to message-type
* fields. It means that when the outer message is initially parsed, the
* inner message's contents will not be parsed but instead stored in encoded
* form. The inner message will actually be parsed when it is first accessed.
* This is only a hint. Implementations are free to choose whether to use
* eager or lazy parsing regardless of the value of this option. However,
* setting this option true suggests that the protocol author believes that
* using lazy parsing on this field is worth the additional bookkeeping
* overhead typically needed to implement it.
* This option does not affect the public interface of any generated code;
* all method signatures remain the same. Furthermore, thread-safety of the
* interface is not affected by this option; const methods remain safe to
* call from multiple threads concurrently, while non-const methods continue
* to require exclusive access.
* Note that implementations may choose not to check required fields within
* a lazy sub-message. That is, calling IsInitialized() on the outer message
* may return true even if the inner message has missing required fields.
* This is necessary because otherwise the inner message would have to be
* parsed in order to perform the check, defeating the purpose of lazy
* parsing. An implementation which chooses not to check required fields
* must be consistent about it. That is, for any particular sub-message, the
* implementation must either *always* check its required fields, or *never*
* check its required fields, regardless of whether or not the message has
* been parsed.
*
* Generated from protobuf field optional bool lazy = 5 [default = false];
* @param bool $var
* @return $this
*/
public function setLazy($var)
{
GPBUtil::checkBool($var);
$this->lazy = $var;
$this->has_lazy = true;
return $this;
}
public function hasLazy()
{
return $this->has_lazy;
}
/**
* Is this field deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for accessors, or it will be completely ignored; in the very least, this
* is a formalization for deprecating fields.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this field deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for accessors, or it will be completely ignored; in the very least, this
* is a formalization for deprecating fields.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field optional bool weak = 10 [default = false];
* @return bool
*/
public function getWeak()
{
return $this->weak;
}
/**
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field optional bool weak = 10 [default = false];
* @param bool $var
* @return $this
*/
public function setWeak($var)
{
GPBUtil::checkBool($var);
$this->weak = $var;
$this->has_weak = true;
return $this;
}
public function hasWeak()
{
return $this->has_weak;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FieldOptions_CType.php 0000644 00000001074 14641212622 0016341 0 ustar 00 Google\Protobuf\Internal
*/
class FieldOptions_CType
{
/**
* Default mode.
*
* Generated from protobuf enum STRING = 0;
*/
const STRING = 0;
/**
* Generated from protobuf enum CORD = 1;
*/
const CORD = 1;
/**
* Generated from protobuf enum STRING_PIECE = 2;
*/
const STRING_PIECE = 2;
}
src/Google/Protobuf/Internal/FieldOptions_JSType.php 0000644 00000001233 14641212622 0016470 0 ustar 00 Google\Protobuf\Internal
*/
class FieldOptions_JSType
{
/**
* Use the default type.
*
* Generated from protobuf enum JS_NORMAL = 0;
*/
const JS_NORMAL = 0;
/**
* Use JavaScript strings.
*
* Generated from protobuf enum JS_STRING = 1;
*/
const JS_STRING = 1;
/**
* Use JavaScript numbers.
*
* Generated from protobuf enum JS_NUMBER = 2;
*/
const JS_NUMBER = 2;
}
src/Google/Protobuf/Internal/FileDescriptor.php 0000644 00000005541 14641212622 0015557 0 ustar 00 package = $package;
}
public function getPackage()
{
return $this->package;
}
public function getMessageType()
{
return $this->message_type;
}
public function addMessageType($desc)
{
$this->message_type[] = $desc;
}
public function getEnumType()
{
return $this->enum_type;
}
public function addEnumType($desc)
{
$this->enum_type[]= $desc;
}
public static function buildFromProto($proto)
{
$file = new FileDescriptor();
$file->setPackage($proto->getPackage());
foreach ($proto->getMessageType() as $message_proto) {
$file->addMessageType(Descriptor::buildFromProto(
$message_proto, $proto, ""));
}
foreach ($proto->getEnumType() as $enum_proto) {
$file->addEnumType(
EnumDescriptor::buildFromProto(
$enum_proto,
$proto,
""));
}
return $file;
}
}
src/Google/Protobuf/Internal/FileDescriptorProto.php 0000644 00000034107 14641212622 0016603 0 ustar 00 google.protobuf.FileDescriptorProto
*/
class FileDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* file name, relative to root of source tree
*
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* e.g. "foo", "foo.bar", etc.
*
* Generated from protobuf field optional string package = 2;
*/
private $package = '';
private $has_package = false;
/**
* Names of files imported by this file.
*
* Generated from protobuf field repeated string dependency = 3;
*/
private $dependency;
private $has_dependency = false;
/**
* Indexes of the public imported files in the dependency list above.
*
* Generated from protobuf field repeated int32 public_dependency = 10;
*/
private $public_dependency;
private $has_public_dependency = false;
/**
* Indexes of the weak imported files in the dependency list.
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field repeated int32 weak_dependency = 11;
*/
private $weak_dependency;
private $has_weak_dependency = false;
/**
* All top-level definitions in this file.
*
* Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4;
*/
private $message_type;
private $has_message_type = false;
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
*/
private $enum_type;
private $has_enum_type = false;
/**
* Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6;
*/
private $service;
private $has_service = false;
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7;
*/
private $extension;
private $has_extension = false;
/**
* Generated from protobuf field optional .google.protobuf.FileOptions options = 8;
*/
private $options = null;
private $has_options = false;
/**
* This field contains optional information about the original source code.
* You may safely remove this entire field without harming runtime
* functionality of the descriptors -- the information is needed only by
* development tools.
*
* Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9;
*/
private $source_code_info = null;
private $has_source_code_info = false;
/**
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*
* Generated from protobuf field optional string syntax = 12;
*/
private $syntax = '';
private $has_syntax = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* file name, relative to root of source tree
*
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* file name, relative to root of source tree
*
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* e.g. "foo", "foo.bar", etc.
*
* Generated from protobuf field optional string package = 2;
* @return string
*/
public function getPackage()
{
return $this->package;
}
/**
* e.g. "foo", "foo.bar", etc.
*
* Generated from protobuf field optional string package = 2;
* @param string $var
* @return $this
*/
public function setPackage($var)
{
GPBUtil::checkString($var, True);
$this->package = $var;
$this->has_package = true;
return $this;
}
public function hasPackage()
{
return $this->has_package;
}
/**
* Names of files imported by this file.
*
* Generated from protobuf field repeated string dependency = 3;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getDependency()
{
return $this->dependency;
}
/**
* Names of files imported by this file.
*
* Generated from protobuf field repeated string dependency = 3;
* @param string[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setDependency($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->dependency = $arr;
$this->has_dependency = true;
return $this;
}
public function hasDependency()
{
return $this->has_dependency;
}
/**
* Indexes of the public imported files in the dependency list above.
*
* Generated from protobuf field repeated int32 public_dependency = 10;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getPublicDependency()
{
return $this->public_dependency;
}
/**
* Indexes of the public imported files in the dependency list above.
*
* Generated from protobuf field repeated int32 public_dependency = 10;
* @param int[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setPublicDependency($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->public_dependency = $arr;
$this->has_public_dependency = true;
return $this;
}
public function hasPublicDependency()
{
return $this->has_public_dependency;
}
/**
* Indexes of the weak imported files in the dependency list.
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field repeated int32 weak_dependency = 11;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getWeakDependency()
{
return $this->weak_dependency;
}
/**
* Indexes of the weak imported files in the dependency list.
* For Google-internal migration only. Do not use.
*
* Generated from protobuf field repeated int32 weak_dependency = 11;
* @param int[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setWeakDependency($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->weak_dependency = $arr;
$this->has_weak_dependency = true;
return $this;
}
public function hasWeakDependency()
{
return $this->has_weak_dependency;
}
/**
* All top-level definitions in this file.
*
* Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getMessageType()
{
return $this->message_type;
}
/**
* All top-level definitions in this file.
*
* Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4;
* @param \Google\Protobuf\Internal\DescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setMessageType($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class);
$this->message_type = $arr;
$this->has_message_type = true;
return $this;
}
public function hasMessageType()
{
return $this->has_message_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getEnumType()
{
return $this->enum_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
* @param \Google\Protobuf\Internal\EnumDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setEnumType($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class);
$this->enum_type = $arr;
$this->has_enum_type = true;
return $this;
}
public function hasEnumType()
{
return $this->has_enum_type;
}
/**
* Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getService()
{
return $this->service;
}
/**
* Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6;
* @param \Google\Protobuf\Internal\ServiceDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setService($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\ServiceDescriptorProto::class);
$this->service = $arr;
$this->has_service = true;
return $this;
}
public function hasService()
{
return $this->has_service;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getExtension()
{
return $this->extension;
}
/**
* Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7;
* @param \Google\Protobuf\Internal\FieldDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setExtension($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->extension = $arr;
$this->has_extension = true;
return $this;
}
public function hasExtension()
{
return $this->has_extension;
}
/**
* Generated from protobuf field optional .google.protobuf.FileOptions options = 8;
* @return \Google\Protobuf\Internal\FileOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.FileOptions options = 8;
* @param \Google\Protobuf\Internal\FileOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FileOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
/**
* This field contains optional information about the original source code.
* You may safely remove this entire field without harming runtime
* functionality of the descriptors -- the information is needed only by
* development tools.
*
* Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9;
* @return \Google\Protobuf\Internal\SourceCodeInfo
*/
public function getSourceCodeInfo()
{
return $this->source_code_info;
}
/**
* This field contains optional information about the original source code.
* You may safely remove this entire field without harming runtime
* functionality of the descriptors -- the information is needed only by
* development tools.
*
* Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9;
* @param \Google\Protobuf\Internal\SourceCodeInfo $var
* @return $this
*/
public function setSourceCodeInfo($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\SourceCodeInfo::class);
$this->source_code_info = $var;
$this->has_source_code_info = true;
return $this;
}
public function hasSourceCodeInfo()
{
return $this->has_source_code_info;
}
/**
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*
* Generated from protobuf field optional string syntax = 12;
* @return string
*/
public function getSyntax()
{
return $this->syntax;
}
/**
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*
* Generated from protobuf field optional string syntax = 12;
* @param string $var
* @return $this
*/
public function setSyntax($var)
{
GPBUtil::checkString($var, True);
$this->syntax = $var;
$this->has_syntax = true;
return $this;
}
public function hasSyntax()
{
return $this->has_syntax;
}
}
src/Google/Protobuf/Internal/FileDescriptorSet.php 0000644 00000003361 14641212622 0016231 0 ustar 00 google.protobuf.FileDescriptorSet
*/
class FileDescriptorSet extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1;
*/
private $file;
private $has_file = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getFile()
{
return $this->file;
}
/**
* Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1;
* @param \Google\Protobuf\Internal\FileDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setFile($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FileDescriptorProto::class);
$this->file = $arr;
$this->has_file = true;
return $this;
}
public function hasFile()
{
return $this->has_file;
}
}
src/Google/Protobuf/Internal/FileOptions.php 0000644 00000071441 14641212622 0015076 0 ustar 00 google.protobuf.FileOptions
*/
class FileOptions extends \Google\Protobuf\Internal\Message
{
/**
* Sets the Java package where classes generated from this .proto will be
* placed. By default, the proto package is used, but this is often
* inappropriate because proto packages do not normally start with backwards
* domain names.
*
* Generated from protobuf field optional string java_package = 1;
*/
private $java_package = '';
private $has_java_package = false;
/**
* If set, all the classes from the .proto file are wrapped in a single
* outer class with the given name. This applies to both Proto1
* (equivalent to the old "--one_java_file" option) and Proto2 (where
* a .proto always translates to a single class, but you may want to
* explicitly choose the class name).
*
* Generated from protobuf field optional string java_outer_classname = 8;
*/
private $java_outer_classname = '';
private $has_java_outer_classname = false;
/**
* If set true, then the Java code generator will generate a separate .java
* file for each top-level message, enum, and service defined in the .proto
* file. Thus, these types will *not* be nested inside the outer class
* named by java_outer_classname. However, the outer class will still be
* generated to contain the file's getDescriptor() method as well as any
* top-level extensions defined in the file.
*
* Generated from protobuf field optional bool java_multiple_files = 10 [default = false];
*/
private $java_multiple_files = false;
private $has_java_multiple_files = false;
/**
* This option does nothing.
*
* Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true];
*/
private $java_generate_equals_and_hash = false;
private $has_java_generate_equals_and_hash = false;
/**
* If set true, then the Java2 code generator will generate code that
* throws an exception whenever an attempt is made to assign a non-UTF-8
* byte sequence to a string field.
* Message reflection will do the same.
* However, an extension field still accepts non-UTF-8 byte sequences.
* This option has no effect on when used with the lite runtime.
*
* Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false];
*/
private $java_string_check_utf8 = false;
private $has_java_string_check_utf8 = false;
/**
* Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
*/
private $optimize_for = 0;
private $has_optimize_for = false;
/**
* Sets the Go package where structs generated from this .proto will be
* placed. If omitted, the Go package will be derived from the following:
* - The basename of the package import path, if provided.
* - Otherwise, the package statement in the .proto file, if present.
* - Otherwise, the basename of the .proto file, without extension.
*
* Generated from protobuf field optional string go_package = 11;
*/
private $go_package = '';
private $has_go_package = false;
/**
* Should generic services be generated in each language? "Generic" services
* are not specific to any particular RPC system. They are generated by the
* main code generators in each language (without additional plugins).
* Generic services were the only kind of service generation supported by
* early versions of google.protobuf.
* Generic services are now considered deprecated in favor of using plugins
* that generate code specific to your particular RPC system. Therefore,
* these default to false. Old code which depends on generic services should
* explicitly set them to true.
*
* Generated from protobuf field optional bool cc_generic_services = 16 [default = false];
*/
private $cc_generic_services = false;
private $has_cc_generic_services = false;
/**
* Generated from protobuf field optional bool java_generic_services = 17 [default = false];
*/
private $java_generic_services = false;
private $has_java_generic_services = false;
/**
* Generated from protobuf field optional bool py_generic_services = 18 [default = false];
*/
private $py_generic_services = false;
private $has_py_generic_services = false;
/**
* Generated from protobuf field optional bool php_generic_services = 42 [default = false];
*/
private $php_generic_services = false;
private $has_php_generic_services = false;
/**
* Is this file deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for everything in the file, or it will be completely ignored; in the very
* least, this is a formalization for deprecating files.
*
* Generated from protobuf field optional bool deprecated = 23 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* Enables the use of arenas for the proto messages in this file. This applies
* only to generated classes for C++.
*
* Generated from protobuf field optional bool cc_enable_arenas = 31 [default = false];
*/
private $cc_enable_arenas = false;
private $has_cc_enable_arenas = false;
/**
* Sets the objective c class prefix which is prepended to all objective c
* generated classes from this .proto. There is no default.
*
* Generated from protobuf field optional string objc_class_prefix = 36;
*/
private $objc_class_prefix = '';
private $has_objc_class_prefix = false;
/**
* Namespace for generated classes; defaults to the package.
*
* Generated from protobuf field optional string csharp_namespace = 37;
*/
private $csharp_namespace = '';
private $has_csharp_namespace = false;
/**
* By default Swift generators will take the proto package and CamelCase it
* replacing '.' with underscore and use that to prefix the types/symbols
* defined. When this options is provided, they will use this value instead
* to prefix the types/symbols defined.
*
* Generated from protobuf field optional string swift_prefix = 39;
*/
private $swift_prefix = '';
private $has_swift_prefix = false;
/**
* Sets the php class prefix which is prepended to all php generated classes
* from this .proto. Default is empty.
*
* Generated from protobuf field optional string php_class_prefix = 40;
*/
private $php_class_prefix = '';
private $has_php_class_prefix = false;
/**
* Use this option to change the namespace of php generated classes. Default
* is empty. When this option is empty, the package name will be used for
* determining the namespace.
*
* Generated from protobuf field optional string php_namespace = 41;
*/
private $php_namespace = '';
private $has_php_namespace = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Sets the Java package where classes generated from this .proto will be
* placed. By default, the proto package is used, but this is often
* inappropriate because proto packages do not normally start with backwards
* domain names.
*
* Generated from protobuf field optional string java_package = 1;
* @return string
*/
public function getJavaPackage()
{
return $this->java_package;
}
/**
* Sets the Java package where classes generated from this .proto will be
* placed. By default, the proto package is used, but this is often
* inappropriate because proto packages do not normally start with backwards
* domain names.
*
* Generated from protobuf field optional string java_package = 1;
* @param string $var
* @return $this
*/
public function setJavaPackage($var)
{
GPBUtil::checkString($var, True);
$this->java_package = $var;
$this->has_java_package = true;
return $this;
}
public function hasJavaPackage()
{
return $this->has_java_package;
}
/**
* If set, all the classes from the .proto file are wrapped in a single
* outer class with the given name. This applies to both Proto1
* (equivalent to the old "--one_java_file" option) and Proto2 (where
* a .proto always translates to a single class, but you may want to
* explicitly choose the class name).
*
* Generated from protobuf field optional string java_outer_classname = 8;
* @return string
*/
public function getJavaOuterClassname()
{
return $this->java_outer_classname;
}
/**
* If set, all the classes from the .proto file are wrapped in a single
* outer class with the given name. This applies to both Proto1
* (equivalent to the old "--one_java_file" option) and Proto2 (where
* a .proto always translates to a single class, but you may want to
* explicitly choose the class name).
*
* Generated from protobuf field optional string java_outer_classname = 8;
* @param string $var
* @return $this
*/
public function setJavaOuterClassname($var)
{
GPBUtil::checkString($var, True);
$this->java_outer_classname = $var;
$this->has_java_outer_classname = true;
return $this;
}
public function hasJavaOuterClassname()
{
return $this->has_java_outer_classname;
}
/**
* If set true, then the Java code generator will generate a separate .java
* file for each top-level message, enum, and service defined in the .proto
* file. Thus, these types will *not* be nested inside the outer class
* named by java_outer_classname. However, the outer class will still be
* generated to contain the file's getDescriptor() method as well as any
* top-level extensions defined in the file.
*
* Generated from protobuf field optional bool java_multiple_files = 10 [default = false];
* @return bool
*/
public function getJavaMultipleFiles()
{
return $this->java_multiple_files;
}
/**
* If set true, then the Java code generator will generate a separate .java
* file for each top-level message, enum, and service defined in the .proto
* file. Thus, these types will *not* be nested inside the outer class
* named by java_outer_classname. However, the outer class will still be
* generated to contain the file's getDescriptor() method as well as any
* top-level extensions defined in the file.
*
* Generated from protobuf field optional bool java_multiple_files = 10 [default = false];
* @param bool $var
* @return $this
*/
public function setJavaMultipleFiles($var)
{
GPBUtil::checkBool($var);
$this->java_multiple_files = $var;
$this->has_java_multiple_files = true;
return $this;
}
public function hasJavaMultipleFiles()
{
return $this->has_java_multiple_files;
}
/**
* This option does nothing.
*
* Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true];
* @return bool
*/
public function getJavaGenerateEqualsAndHash()
{
return $this->java_generate_equals_and_hash;
}
/**
* This option does nothing.
*
* Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true];
* @param bool $var
* @return $this
*/
public function setJavaGenerateEqualsAndHash($var)
{
GPBUtil::checkBool($var);
$this->java_generate_equals_and_hash = $var;
$this->has_java_generate_equals_and_hash = true;
return $this;
}
public function hasJavaGenerateEqualsAndHash()
{
return $this->has_java_generate_equals_and_hash;
}
/**
* If set true, then the Java2 code generator will generate code that
* throws an exception whenever an attempt is made to assign a non-UTF-8
* byte sequence to a string field.
* Message reflection will do the same.
* However, an extension field still accepts non-UTF-8 byte sequences.
* This option has no effect on when used with the lite runtime.
*
* Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false];
* @return bool
*/
public function getJavaStringCheckUtf8()
{
return $this->java_string_check_utf8;
}
/**
* If set true, then the Java2 code generator will generate code that
* throws an exception whenever an attempt is made to assign a non-UTF-8
* byte sequence to a string field.
* Message reflection will do the same.
* However, an extension field still accepts non-UTF-8 byte sequences.
* This option has no effect on when used with the lite runtime.
*
* Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false];
* @param bool $var
* @return $this
*/
public function setJavaStringCheckUtf8($var)
{
GPBUtil::checkBool($var);
$this->java_string_check_utf8 = $var;
$this->has_java_string_check_utf8 = true;
return $this;
}
public function hasJavaStringCheckUtf8()
{
return $this->has_java_string_check_utf8;
}
/**
* Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
* @return int
*/
public function getOptimizeFor()
{
return $this->optimize_for;
}
/**
* Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
* @param int $var
* @return $this
*/
public function setOptimizeFor($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FileOptions_OptimizeMode::class);
$this->optimize_for = $var;
$this->has_optimize_for = true;
return $this;
}
public function hasOptimizeFor()
{
return $this->has_optimize_for;
}
/**
* Sets the Go package where structs generated from this .proto will be
* placed. If omitted, the Go package will be derived from the following:
* - The basename of the package import path, if provided.
* - Otherwise, the package statement in the .proto file, if present.
* - Otherwise, the basename of the .proto file, without extension.
*
* Generated from protobuf field optional string go_package = 11;
* @return string
*/
public function getGoPackage()
{
return $this->go_package;
}
/**
* Sets the Go package where structs generated from this .proto will be
* placed. If omitted, the Go package will be derived from the following:
* - The basename of the package import path, if provided.
* - Otherwise, the package statement in the .proto file, if present.
* - Otherwise, the basename of the .proto file, without extension.
*
* Generated from protobuf field optional string go_package = 11;
* @param string $var
* @return $this
*/
public function setGoPackage($var)
{
GPBUtil::checkString($var, True);
$this->go_package = $var;
$this->has_go_package = true;
return $this;
}
public function hasGoPackage()
{
return $this->has_go_package;
}
/**
* Should generic services be generated in each language? "Generic" services
* are not specific to any particular RPC system. They are generated by the
* main code generators in each language (without additional plugins).
* Generic services were the only kind of service generation supported by
* early versions of google.protobuf.
* Generic services are now considered deprecated in favor of using plugins
* that generate code specific to your particular RPC system. Therefore,
* these default to false. Old code which depends on generic services should
* explicitly set them to true.
*
* Generated from protobuf field optional bool cc_generic_services = 16 [default = false];
* @return bool
*/
public function getCcGenericServices()
{
return $this->cc_generic_services;
}
/**
* Should generic services be generated in each language? "Generic" services
* are not specific to any particular RPC system. They are generated by the
* main code generators in each language (without additional plugins).
* Generic services were the only kind of service generation supported by
* early versions of google.protobuf.
* Generic services are now considered deprecated in favor of using plugins
* that generate code specific to your particular RPC system. Therefore,
* these default to false. Old code which depends on generic services should
* explicitly set them to true.
*
* Generated from protobuf field optional bool cc_generic_services = 16 [default = false];
* @param bool $var
* @return $this
*/
public function setCcGenericServices($var)
{
GPBUtil::checkBool($var);
$this->cc_generic_services = $var;
$this->has_cc_generic_services = true;
return $this;
}
public function hasCcGenericServices()
{
return $this->has_cc_generic_services;
}
/**
* Generated from protobuf field optional bool java_generic_services = 17 [default = false];
* @return bool
*/
public function getJavaGenericServices()
{
return $this->java_generic_services;
}
/**
* Generated from protobuf field optional bool java_generic_services = 17 [default = false];
* @param bool $var
* @return $this
*/
public function setJavaGenericServices($var)
{
GPBUtil::checkBool($var);
$this->java_generic_services = $var;
$this->has_java_generic_services = true;
return $this;
}
public function hasJavaGenericServices()
{
return $this->has_java_generic_services;
}
/**
* Generated from protobuf field optional bool py_generic_services = 18 [default = false];
* @return bool
*/
public function getPyGenericServices()
{
return $this->py_generic_services;
}
/**
* Generated from protobuf field optional bool py_generic_services = 18 [default = false];
* @param bool $var
* @return $this
*/
public function setPyGenericServices($var)
{
GPBUtil::checkBool($var);
$this->py_generic_services = $var;
$this->has_py_generic_services = true;
return $this;
}
public function hasPyGenericServices()
{
return $this->has_py_generic_services;
}
/**
* Generated from protobuf field optional bool php_generic_services = 42 [default = false];
* @return bool
*/
public function getPhpGenericServices()
{
return $this->php_generic_services;
}
/**
* Generated from protobuf field optional bool php_generic_services = 42 [default = false];
* @param bool $var
* @return $this
*/
public function setPhpGenericServices($var)
{
GPBUtil::checkBool($var);
$this->php_generic_services = $var;
$this->has_php_generic_services = true;
return $this;
}
public function hasPhpGenericServices()
{
return $this->has_php_generic_services;
}
/**
* Is this file deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for everything in the file, or it will be completely ignored; in the very
* least, this is a formalization for deprecating files.
*
* Generated from protobuf field optional bool deprecated = 23 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this file deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for everything in the file, or it will be completely ignored; in the very
* least, this is a formalization for deprecating files.
*
* Generated from protobuf field optional bool deprecated = 23 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* Enables the use of arenas for the proto messages in this file. This applies
* only to generated classes for C++.
*
* Generated from protobuf field optional bool cc_enable_arenas = 31 [default = false];
* @return bool
*/
public function getCcEnableArenas()
{
return $this->cc_enable_arenas;
}
/**
* Enables the use of arenas for the proto messages in this file. This applies
* only to generated classes for C++.
*
* Generated from protobuf field optional bool cc_enable_arenas = 31 [default = false];
* @param bool $var
* @return $this
*/
public function setCcEnableArenas($var)
{
GPBUtil::checkBool($var);
$this->cc_enable_arenas = $var;
$this->has_cc_enable_arenas = true;
return $this;
}
public function hasCcEnableArenas()
{
return $this->has_cc_enable_arenas;
}
/**
* Sets the objective c class prefix which is prepended to all objective c
* generated classes from this .proto. There is no default.
*
* Generated from protobuf field optional string objc_class_prefix = 36;
* @return string
*/
public function getObjcClassPrefix()
{
return $this->objc_class_prefix;
}
/**
* Sets the objective c class prefix which is prepended to all objective c
* generated classes from this .proto. There is no default.
*
* Generated from protobuf field optional string objc_class_prefix = 36;
* @param string $var
* @return $this
*/
public function setObjcClassPrefix($var)
{
GPBUtil::checkString($var, True);
$this->objc_class_prefix = $var;
$this->has_objc_class_prefix = true;
return $this;
}
public function hasObjcClassPrefix()
{
return $this->has_objc_class_prefix;
}
/**
* Namespace for generated classes; defaults to the package.
*
* Generated from protobuf field optional string csharp_namespace = 37;
* @return string
*/
public function getCsharpNamespace()
{
return $this->csharp_namespace;
}
/**
* Namespace for generated classes; defaults to the package.
*
* Generated from protobuf field optional string csharp_namespace = 37;
* @param string $var
* @return $this
*/
public function setCsharpNamespace($var)
{
GPBUtil::checkString($var, True);
$this->csharp_namespace = $var;
$this->has_csharp_namespace = true;
return $this;
}
public function hasCsharpNamespace()
{
return $this->has_csharp_namespace;
}
/**
* By default Swift generators will take the proto package and CamelCase it
* replacing '.' with underscore and use that to prefix the types/symbols
* defined. When this options is provided, they will use this value instead
* to prefix the types/symbols defined.
*
* Generated from protobuf field optional string swift_prefix = 39;
* @return string
*/
public function getSwiftPrefix()
{
return $this->swift_prefix;
}
/**
* By default Swift generators will take the proto package and CamelCase it
* replacing '.' with underscore and use that to prefix the types/symbols
* defined. When this options is provided, they will use this value instead
* to prefix the types/symbols defined.
*
* Generated from protobuf field optional string swift_prefix = 39;
* @param string $var
* @return $this
*/
public function setSwiftPrefix($var)
{
GPBUtil::checkString($var, True);
$this->swift_prefix = $var;
$this->has_swift_prefix = true;
return $this;
}
public function hasSwiftPrefix()
{
return $this->has_swift_prefix;
}
/**
* Sets the php class prefix which is prepended to all php generated classes
* from this .proto. Default is empty.
*
* Generated from protobuf field optional string php_class_prefix = 40;
* @return string
*/
public function getPhpClassPrefix()
{
return $this->php_class_prefix;
}
/**
* Sets the php class prefix which is prepended to all php generated classes
* from this .proto. Default is empty.
*
* Generated from protobuf field optional string php_class_prefix = 40;
* @param string $var
* @return $this
*/
public function setPhpClassPrefix($var)
{
GPBUtil::checkString($var, True);
$this->php_class_prefix = $var;
$this->has_php_class_prefix = true;
return $this;
}
public function hasPhpClassPrefix()
{
return $this->has_php_class_prefix;
}
/**
* Use this option to change the namespace of php generated classes. Default
* is empty. When this option is empty, the package name will be used for
* determining the namespace.
*
* Generated from protobuf field optional string php_namespace = 41;
* @return string
*/
public function getPhpNamespace()
{
return $this->php_namespace;
}
/**
* Use this option to change the namespace of php generated classes. Default
* is empty. When this option is empty, the package name will be used for
* determining the namespace.
*
* Generated from protobuf field optional string php_namespace = 41;
* @param string $var
* @return $this
*/
public function setPhpNamespace($var)
{
GPBUtil::checkString($var, True);
$this->php_namespace = $var;
$this->has_php_namespace = true;
return $this;
}
public function hasPhpNamespace()
{
return $this->has_php_namespace;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FileOptions_OptimizeMode.php 0000644 00000001407 14641212622 0017556 0 ustar 00 Google\Protobuf\Internal
*/
class FileOptions_OptimizeMode
{
/**
* Generate complete code for parsing, serialization,
*
* Generated from protobuf enum SPEED = 1;
*/
const SPEED = 1;
/**
* etc.
*
* Generated from protobuf enum CODE_SIZE = 2;
*/
const CODE_SIZE = 2;
/**
* Generate code using MessageLite and the lite runtime.
*
* Generated from protobuf enum LITE_RUNTIME = 3;
*/
const LITE_RUNTIME = 3;
}
src/Google/Protobuf/Internal/GPBDecodeException.php 0000644 00000003721 14641212622 0016232 0 ustar 00 writeRaw("\"", 1);
$field_name = GPBJsonWire::formatFieldName($field);
$output->writeRaw($field_name, strlen($field_name));
$output->writeRaw("\":", 2);
return static::serializeFieldValueToStream($value, $field, $output);
}
private static function serializeFieldValueToStream(
$values,
$field,
&$output)
{
if ($field->isMap()) {
$output->writeRaw("{", 1);
$first = true;
$map_entry = $field->getMessageType();
$key_field = $map_entry->getFieldByNumber(1);
$value_field = $map_entry->getFieldByNumber(2);
switch ($key_field->getType()) {
case GPBType::STRING:
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
case GPBType::FIXED64:
case GPBType::UINT64:
$additional_quote = false;
break;
default:
$additional_quote = true;
}
foreach ($values as $key => $value) {
if ($first) {
$first = false;
} else {
$output->writeRaw(",", 1);
}
if ($additional_quote) {
$output->writeRaw("\"", 1);
}
if (!static::serializeSingularFieldValueToStream(
$key,
$key_field,
$output)) {
return false;
}
if ($additional_quote) {
$output->writeRaw("\"", 1);
}
$output->writeRaw(":", 1);
if (!static::serializeSingularFieldValueToStream(
$value,
$value_field,
$output)) {
return false;
}
}
$output->writeRaw("}", 1);
return true;
} elseif ($field->isRepeated()) {
$output->writeRaw("[", 1);
$first = true;
foreach ($values as $value) {
if ($first) {
$first = false;
} else {
$output->writeRaw(",", 1);
}
if (!static::serializeSingularFieldValueToStream(
$value,
$field,
$output)) {
return false;
}
}
$output->writeRaw("]", 1);
return true;
} else {
return static::serializeSingularFieldValueToStream(
$values,
$field,
$output);
}
}
private static function serializeSingularFieldValueToStream(
$value,
$field,
&$output)
{
switch ($field->getType()) {
case GPBType::SFIXED32:
case GPBType::SINT32:
case GPBType::INT32:
$str_value = strval($value);
$output->writeRaw($str_value, strlen($str_value));
break;
case GPBType::FIXED32:
case GPBType::UINT32:
if ($value < 0) {
$value = bcadd($value, "4294967296");
}
$str_value = strval($value);
$output->writeRaw($str_value, strlen($str_value));
break;
case GPBType::FIXED64:
case GPBType::UINT64:
if ($value < 0) {
$value = bcadd($value, "18446744073709551616");
}
// Intentional fall through.
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
$output->writeRaw("\"", 1);
$str_value = strval($value);
$output->writeRaw($str_value, strlen($str_value));
$output->writeRaw("\"", 1);
break;
case GPBType::FLOAT:
if (is_nan($value)) {
$str_value = "\"NaN\"";
} elseif ($value === INF) {
$str_value = "\"Infinity\"";
} elseif ($value === -INF) {
$str_value = "\"-Infinity\"";
} else {
$str_value = sprintf("%.8g", $value);
}
$output->writeRaw($str_value, strlen($str_value));
break;
case GPBType::DOUBLE:
if (is_nan($value)) {
$str_value = "\"NaN\"";
} elseif ($value === INF) {
$str_value = "\"Infinity\"";
} elseif ($value === -INF) {
$str_value = "\"-Infinity\"";
} else {
$str_value = sprintf("%.17g", $value);
}
$output->writeRaw($str_value, strlen($str_value));
break;
case GPBType::ENUM:
$enum_desc = $field->getEnumType();
$enum_value_desc = $enum_desc->getValueByNumber($value);
if (!is_null($enum_value_desc)) {
$str_value = $enum_value_desc->getName();
$output->writeRaw("\"", 1);
$output->writeRaw($str_value, strlen($str_value));
$output->writeRaw("\"", 1);
} else {
$str_value = strval($value);
$output->writeRaw($str_value, strlen($str_value));
}
break;
case GPBType::BOOL:
if ($value) {
$output->writeRaw("true", 4);
} else {
$output->writeRaw("false", 5);
}
break;
case GPBType::BYTES:
$value = base64_encode($value);
case GPBType::STRING:
$value = json_encode($value);
$output->writeRaw($value, strlen($value));
break;
// case GPBType::GROUP:
// echo "GROUP\xA";
// trigger_error("Not implemented.", E_ERROR);
// break;
case GPBType::MESSAGE:
$value->serializeToJsonStream($output);
break;
default:
user_error("Unsupported type.");
return false;
}
return true;
}
private static function formatFieldName($field)
{
return $field->getJsonName();
}
// Used for escaping control chars in strings.
private static $k_control_char_limit = 0x20;
private static function jsonNiceEscape($c)
{
switch ($c) {
case '"': return "\\\"";
case '\\': return "\\\\";
case '/': return "\\/";
case '\b': return "\\b";
case '\f': return "\\f";
case '\n': return "\\n";
case '\r': return "\\r";
case '\t': return "\\t";
default: return NULL;
}
}
private static function isJsonEscaped($c)
{
// See RFC 4627.
return $c < chr($k_control_char_limit) || $c === "\"" || $c === "\\";
}
public static function escapedJson($value)
{
$escaped_value = "";
$unescaped_run = "";
for ($i = 0; $i < strlen($value); $i++) {
$c = $value[$i];
// Handle escaping.
if (static::isJsonEscaped($c)) {
// Use a "nice" escape, like \n, if one exists for this
// character.
$escape = static::jsonNiceEscape($c);
if (is_null($escape)) {
$escape = "\\u00" . bin2hex($c);
}
if ($unescaped_run !== "") {
$escaped_value .= $unescaped_run;
$unescaped_run = "";
}
$escaped_value .= $escape;
} else {
if ($unescaped_run === "") {
$unescaped_run .= $c;
}
}
}
$escaped_value .= $unescaped_run;
return $escaped_value;
}
}
src/Google/Protobuf/Internal/GPBLabel.php 0000644 00000003403 14641212622 0014204 0 ustar 00 0) {
$high = (int) bcsub($high, 4294967296);
} else {
$high = (int) $high;
}
if (bccomp($low, 2147483647) > 0) {
$low = (int) bcsub($low, 4294967296);
} else {
$low = (int) $low;
}
if ($isNeg) {
$high = ~$high;
$low = ~$low;
$low++;
if (!$low) {
$high = (int)($high + 1);
}
}
if ($trim) {
$high = 0;
}
}
public static function checkString(&$var, $check_utf8)
{
if (is_array($var) || is_object($var)) {
throw new \InvalidArgumentException("Expect string.");
}
if (!is_string($var)) {
$var = strval($var);
}
if ($check_utf8 && !preg_match('//u', $var)) {
throw new \Exception("Expect utf-8 encoding.");
}
}
public static function checkEnum(&$var)
{
static::checkInt32($var);
}
public static function checkInt32(&$var)
{
if (is_numeric($var)) {
$var = intval($var);
} else {
throw new \Exception("Expect integer.");
}
}
public static function checkUint32(&$var)
{
if (is_numeric($var)) {
if (PHP_INT_SIZE === 8) {
$var = intval($var);
$var |= ((-(($var >> 31) & 0x1)) & ~0xFFFFFFFF);
} else {
if (bccomp($var, 0x7FFFFFFF) > 0) {
$var = bcsub($var, "4294967296");
}
$var = (int) $var;
}
} else {
throw new \Exception("Expect integer.");
}
}
public static function checkInt64(&$var)
{
if (is_numeric($var)) {
if (PHP_INT_SIZE == 8) {
$var = intval($var);
} else {
if (is_float($var) ||
is_integer($var) ||
(is_string($var) &&
bccomp($var, "9223372036854774784") < 0)) {
$var = number_format($var, 0, ".", "");
}
}
} else {
throw new \Exception("Expect integer.");
}
}
public static function checkUint64(&$var)
{
if (is_numeric($var)) {
if (PHP_INT_SIZE == 8) {
$var = intval($var);
} else {
$var = number_format($var, 0, ".", "");
}
} else {
throw new \Exception("Expect integer.");
}
}
public static function checkFloat(&$var)
{
if (is_float($var) || is_numeric($var)) {
$var = floatval($var);
} else {
throw new \Exception("Expect float.");
}
}
public static function checkDouble(&$var)
{
if (is_float($var) || is_numeric($var)) {
$var = floatval($var);
} else {
throw new \Exception("Expect float.");
}
}
public static function checkBool(&$var)
{
if (is_array($var) || is_object($var)) {
throw new \Exception("Expect boolean.");
}
$var = boolval($var);
}
public static function checkMessage(&$var, $klass)
{
if (!$var instanceof $klass && !is_null($var)) {
throw new \Exception("Expect message.");
}
}
public static function checkRepeatedField(&$var, $type, $klass = null)
{
if (!$var instanceof RepeatedField && !is_array($var)) {
throw new \Exception("Expect array.");
}
if (is_array($var)) {
$tmp = new RepeatedField($type, $klass);
foreach ($var as $value) {
$tmp[] = $value;
}
return $tmp;
} else {
if ($var->getType() != $type) {
throw new \Exception(
"Expect repeated field of different type.");
}
if ($var->getType() === GPBType::MESSAGE &&
$var->getClass() !== $klass) {
throw new \Exception(
"Expect repeated field of different message.");
}
return $var;
}
}
public static function checkMapField(&$var, $key_type, $value_type, $klass = null)
{
if (!$var instanceof MapField && !is_array($var)) {
throw new \Exception("Expect dict.");
}
if (is_array($var)) {
$tmp = new MapField($key_type, $value_type, $klass);
foreach ($var as $key => $value) {
$tmp[$key] = $value;
}
return $tmp;
} else {
if ($var->getKeyType() != $key_type) {
throw new \Exception("Expect map field of key type.");
}
if ($var->getValueType() != $value_type) {
throw new \Exception("Expect map field of value type.");
}
if ($var->getValueType() === GPBType::MESSAGE &&
$var->getValueClass() !== $klass) {
throw new \Exception(
"Expect map field of different value message.");
}
return $var;
}
}
public static function Int64($value)
{
return new Int64($value);
}
public static function Uint64($value)
{
return new Uint64($value);
}
public static function getClassNamePrefix(
$classname,
$file_proto)
{
$option = $file_proto->getOptions();
$prefix = is_null($option) ? "" : $option->getPhpClassPrefix();
if ($prefix !== "") {
return $prefix;
}
$reserved_words = array("Empty", "ECHO", "ARRAY");
foreach ($reserved_words as $reserved_word) {
if ($classname === $reserved_word) {
if ($file_proto->getPackage() === "google.protobuf") {
return "GPB";
} else {
return "PB";
}
}
}
return "";
}
public static function getClassNameWithoutPackage(
$name,
$file_proto)
{
$classname = implode('_', explode('.', $name));
return static::getClassNamePrefix($classname, $file_proto) . $classname;
}
public static function getFullClassName(
$proto,
$containing,
$file_proto,
&$message_name_without_package,
&$classname,
&$fullname)
{
// Full name needs to start with '.'.
$message_name_without_package = $proto->getName();
if ($containing !== "") {
$message_name_without_package =
$containing . "." . $message_name_without_package;
}
$package = $file_proto->getPackage();
if ($package === "") {
$fullname = "." . $message_name_without_package;
} else {
$fullname = "." . $package . "." . $message_name_without_package;
}
$class_name_without_package =
static::getClassNameWithoutPackage($message_name_without_package, $file_proto);
$option = $file_proto->getOptions();
if (!is_null($option) && $option->hasPhpNamespace()) {
$namespace = $option->getPhpNamespace();
if ($namespace !== "") {
$classname = $namespace . "\\" . $class_name_without_package;
return;
} else {
$classname = $class_name_without_package;
return;
}
}
if ($package === "") {
$classname = $class_name_without_package;
} else {
$classname =
implode('\\', array_map('ucwords', explode('.', $package))).
"\\".$class_name_without_package;
}
}
public static function combineInt32ToInt64($high, $low)
{
$isNeg = $high < 0;
if ($isNeg) {
$high = ~$high;
$low = ~$low;
$low++;
if (!$low) {
$high = (int) ($high + 1);
}
}
$result = bcadd(bcmul($high, 4294967296), $low);
if ($low < 0) {
$result = bcadd($result, 4294967296);
}
if ($isNeg) {
$result = bcsub(0, $result);
}
return $result;
}
}
src/Google/Protobuf/Internal/GPBWire.php 0000644 00000043325 14641212622 0014102 0 ustar 00 > self::TAG_TYPE_BITS) &
(1 << ((PHP_INT_SIZE * 8) - self::TAG_TYPE_BITS)) - 1;
}
public static function getTagWireType($tag)
{
return $tag & 0x7;
}
public static function getWireType($type)
{
switch ($type) {
case GPBType::FLOAT:
case GPBType::FIXED32:
case GPBType::SFIXED32:
return self::WIRETYPE_FIXED32;
case GPBType::DOUBLE:
case GPBType::FIXED64:
case GPBType::SFIXED64:
return self::WIRETYPE_FIXED64;
case GPBType::UINT32:
case GPBType::UINT64:
case GPBType::INT32:
case GPBType::INT64:
case GPBType::SINT32:
case GPBType::SINT64:
case GPBType::ENUM:
case GPBType::BOOL:
return self::WIRETYPE_VARINT;
case GPBType::STRING:
case GPBType::BYTES:
case GPBType::MESSAGE:
return self::WIRETYPE_LENGTH_DELIMITED;
case GPBType::GROUP:
user_error("Unsupported type.");
return 0;
default:
user_error("Unsupported type.");
return 0;
}
}
// ZigZag Transform: Encodes signed integers so that they can be effectively
// used with varint encoding.
//
// varint operates on unsigned integers, encoding smaller numbers into fewer
// bytes. If you try to use it on a signed integer, it will treat this
// number as a very large unsigned integer, which means that even small
// signed numbers like -1 will take the maximum number of bytes (10) to
// encode. zigZagEncode() maps signed integers to unsigned in such a way
// that those with a small absolute value will have smaller encoded values,
// making them appropriate for encoding using varint.
//
// int32 -> uint32
// -------------------------
// 0 -> 0
// -1 -> 1
// 1 -> 2
// -2 -> 3
// ... -> ...
// 2147483647 -> 4294967294
// -2147483648 -> 4294967295
//
// >> encode >>
// << decode <<
public static function zigZagEncode32($int32)
{
if (PHP_INT_SIZE == 8) {
$trim_int32 = $int32 & 0xFFFFFFFF;
return (($trim_int32 << 1) ^ ($int32 << 32 >> 63)) & 0xFFFFFFFF;
} else {
return ($int32 << 1) ^ ($int32 >> 31);
}
}
public static function zigZagDecode32($uint32)
{
// Fill high 32 bits.
if (PHP_INT_SIZE === 8) {
$uint32 |= ($uint32 & 0xFFFFFFFF);
}
$int32 = (($uint32 >> 1) & 0x7FFFFFFF) ^ (-($uint32 & 1));
return $int32;
}
public static function zigZagEncode64($int64)
{
if (PHP_INT_SIZE == 4) {
if (bccomp($int64, 0) >= 0) {
return bcmul($int64, 2);
} else {
return bcsub(bcmul(bcsub(0, $int64), 2), 1);
}
} else {
return ($int64 << 1) ^ ($int64 >> 63);
}
}
public static function zigZagDecode64($uint64)
{
if (PHP_INT_SIZE == 4) {
if (bcmod($uint64, 2) == 0) {
return bcdiv($uint64, 2, 0);
} else {
return bcsub(0, bcdiv(bcadd($uint64, 1), 2, 0));
}
} else {
return (($uint64 >> 1) & 0x7FFFFFFFFFFFFFFF) ^ (-($uint64 & 1));
}
}
public static function readInt32(&$input, &$value)
{
return $input->readVarint32($value);
}
public static function readInt64(&$input, &$value)
{
$success = $input->readVarint64($value);
if (PHP_INT_SIZE == 4 && bccomp($value, "9223372036854775807") > 0) {
$value = bcsub($value, "18446744073709551616");
}
return $success;
}
public static function readUint32(&$input, &$value)
{
return self::readInt32($input, $value);
}
public static function readUint64(&$input, &$value)
{
return self::readInt64($input, $value);
}
public static function readSint32(&$input, &$value)
{
if (!$input->readVarint32($value)) {
return false;
}
$value = GPBWire::zigZagDecode32($value);
return true;
}
public static function readSint64(&$input, &$value)
{
if (!$input->readVarint64($value)) {
return false;
}
$value = GPBWire::zigZagDecode64($value);
return true;
}
public static function readFixed32(&$input, &$value)
{
return $input->readLittleEndian32($value);
}
public static function readFixed64(&$input, &$value)
{
return $input->readLittleEndian64($value);
}
public static function readSfixed32(&$input, &$value)
{
if (!self::readFixed32($input, $value)) {
return false;
}
if (PHP_INT_SIZE === 8) {
$value |= (-($value >> 31) << 32);
}
return true;
}
public static function readSfixed64(&$input, &$value)
{
$success = $input->readLittleEndian64($value);
if (PHP_INT_SIZE == 4 && bccomp($value, "9223372036854775807") > 0) {
$value = bcsub($value, "18446744073709551616");
}
return $success;
}
public static function readFloat(&$input, &$value)
{
$data = null;
if (!$input->readRaw(4, $data)) {
return false;
}
$value = unpack('f', $data)[1];
return true;
}
public static function readDouble(&$input, &$value)
{
$data = null;
if (!$input->readRaw(8, $data)) {
return false;
}
$value = unpack('d', $data)[1];
return true;
}
public static function readBool(&$input, &$value)
{
if (!$input->readVarint64($value)) {
return false;
}
if ($value == 0) {
$value = false;
} else {
$value = true;
}
return true;
}
public static function readString(&$input, &$value)
{
$length = 0;
return $input->readVarintSizeAsInt($length) && $input->readRaw($length, $value);
}
public static function readMessage(&$input, &$message)
{
$length = 0;
if (!$input->readVarintSizeAsInt($length)) {
return false;
}
$old_limit = 0;
$recursion_limit = 0;
$input->incrementRecursionDepthAndPushLimit(
$length,
$old_limit,
$recursion_limit);
if ($recursion_limit < 0 || !$message->parseFromStream($input)) {
return false;
}
return $input->decrementRecursionDepthAndPopLimit($old_limit);
}
public static function writeTag(&$output, $tag)
{
return $output->writeTag($tag);
}
public static function writeInt32(&$output, $value)
{
return $output->writeVarint32($value, false);
}
public static function writeInt64(&$output, $value)
{
return $output->writeVarint64($value);
}
public static function writeUint32(&$output, $value)
{
return $output->writeVarint32($value, true);
}
public static function writeUint64(&$output, $value)
{
return $output->writeVarint64($value);
}
public static function writeSint32(&$output, $value)
{
$value = GPBWire::zigZagEncode32($value);
return $output->writeVarint32($value, true);
}
public static function writeSint64(&$output, $value)
{
$value = GPBWire::zigZagEncode64($value);
return $output->writeVarint64($value);
}
public static function writeFixed32(&$output, $value)
{
return $output->writeLittleEndian32($value);
}
public static function writeFixed64(&$output, $value)
{
return $output->writeLittleEndian64($value);
}
public static function writeSfixed32(&$output, $value)
{
return $output->writeLittleEndian32($value);
}
public static function writeSfixed64(&$output, $value)
{
return $output->writeLittleEndian64($value);
}
public static function writeBool(&$output, $value)
{
if ($value) {
return $output->writeVarint32(1, true);
} else {
return $output->writeVarint32(0, true);
}
}
public static function writeFloat(&$output, $value)
{
$data = pack("f", $value);
return $output->writeRaw($data, 4);
}
public static function writeDouble(&$output, $value)
{
$data = pack("d", $value);
return $output->writeRaw($data, 8);
}
public static function writeString(&$output, $value)
{
return self::writeBytes($output, $value);
}
public static function writeBytes(&$output, $value)
{
$size = strlen($value);
if (!$output->writeVarint32($size, true)) {
return false;
}
return $output->writeRaw($value, $size);
}
public static function writeMessage(&$output, $value)
{
$size = $value->byteSize();
if (!$output->writeVarint32($size, true)) {
return false;
}
return $value->serializeToStream($output);
}
public static function makeTag($number, $type)
{
return ($number << 3) | self::getWireType($type);
}
public static function tagSize($field)
{
$tag = self::makeTag($field->getNumber(), $field->getType());
return self::varint32Size($tag);
}
public static function varint32Size($value, $sign_extended = false)
{
if ($value < 0) {
if ($sign_extended) {
return 10;
} else {
return 5;
}
}
if ($value < (1 << 7)) {
return 1;
}
if ($value < (1 << 14)) {
return 2;
}
if ($value < (1 << 21)) {
return 3;
}
if ($value < (1 << 28)) {
return 4;
}
return 5;
}
public static function sint32Size($value)
{
$value = self::zigZagEncode32($value);
return self::varint32Size($value);
}
public static function sint64Size($value)
{
$value = self::zigZagEncode64($value);
return self::varint64Size($value);
}
public static function varint64Size($value)
{
if (PHP_INT_SIZE == 4) {
if (bccomp($value, 0) < 0 ||
bccomp($value, "9223372036854775807") > 0) {
return 10;
}
if (bccomp($value, 1 << 7) < 0) {
return 1;
}
if (bccomp($value, 1 << 14) < 0) {
return 2;
}
if (bccomp($value, 1 << 21) < 0) {
return 3;
}
if (bccomp($value, 1 << 28) < 0) {
return 4;
}
if (bccomp($value, '34359738368') < 0) {
return 5;
}
if (bccomp($value, '4398046511104') < 0) {
return 6;
}
if (bccomp($value, '562949953421312') < 0) {
return 7;
}
if (bccomp($value, '72057594037927936') < 0) {
return 8;
}
return 9;
} else {
if ($value < 0) {
return 10;
}
if ($value < (1 << 7)) {
return 1;
}
if ($value < (1 << 14)) {
return 2;
}
if ($value < (1 << 21)) {
return 3;
}
if ($value < (1 << 28)) {
return 4;
}
if ($value < (1 << 35)) {
return 5;
}
if ($value < (1 << 42)) {
return 6;
}
if ($value < (1 << 49)) {
return 7;
}
if ($value < (1 << 56)) {
return 8;
}
return 9;
}
}
public static function serializeFieldToStream(
$value,
$field,
$need_tag,
&$output)
{
if ($need_tag) {
if (!GPBWire::writeTag(
$output,
self::makeTag(
$field->getNumber(),
$field->getType()))) {
return false;
}
}
switch ($field->getType()) {
case GPBType::DOUBLE:
if (!GPBWire::writeDouble($output, $value)) {
return false;
}
break;
case GPBType::FLOAT:
if (!GPBWire::writeFloat($output, $value)) {
return false;
}
break;
case GPBType::INT64:
if (!GPBWire::writeInt64($output, $value)) {
return false;
}
break;
case GPBType::UINT64:
if (!GPBWire::writeUint64($output, $value)) {
return false;
}
break;
case GPBType::INT32:
if (!GPBWire::writeInt32($output, $value)) {
return false;
}
break;
case GPBType::FIXED32:
if (!GPBWire::writeFixed32($output, $value)) {
return false;
}
break;
case GPBType::FIXED64:
if (!GPBWire::writeFixed64($output, $value)) {
return false;
}
break;
case GPBType::BOOL:
if (!GPBWire::writeBool($output, $value)) {
return false;
}
break;
case GPBType::STRING:
if (!GPBWire::writeString($output, $value)) {
return false;
}
break;
// case GPBType::GROUP:
// echo "GROUP\xA";
// trigger_error("Not implemented.", E_ERROR);
// break;
case GPBType::MESSAGE:
if (!GPBWire::writeMessage($output, $value)) {
return false;
}
break;
case GPBType::BYTES:
if (!GPBWire::writeBytes($output, $value)) {
return false;
}
break;
case GPBType::UINT32:
if (PHP_INT_SIZE === 8 && $value < 0) {
$value += 4294967296;
}
if (!GPBWire::writeUint32($output, $value)) {
return false;
}
break;
case GPBType::ENUM:
if (!GPBWire::writeInt32($output, $value)) {
return false;
}
break;
case GPBType::SFIXED32:
if (!GPBWire::writeSfixed32($output, $value)) {
return false;
}
break;
case GPBType::SFIXED64:
if (!GPBWire::writeSfixed64($output, $value)) {
return false;
}
break;
case GPBType::SINT32:
if (!GPBWire::writeSint32($output, $value)) {
return false;
}
break;
case GPBType::SINT64:
if (!GPBWire::writeSint64($output, $value)) {
return false;
}
break;
default:
user_error("Unsupported type.");
return false;
}
return true;
}
}
src/Google/Protobuf/Internal/GPBWireType.php 0000644 00000003576 14641212622 0014750 0 ustar 00 google.protobuf.GeneratedCodeInfo
*/
class GeneratedCodeInfo extends \Google\Protobuf\Internal\Message
{
/**
* An Annotation connects some span of text in generated code to an element
* of its generating .proto file.
*
* Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
*/
private $annotation;
private $has_annotation = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* An Annotation connects some span of text in generated code to an element
* of its generating .proto file.
*
* Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getAnnotation()
{
return $this->annotation;
}
/**
* An Annotation connects some span of text in generated code to an element
* of its generating .proto file.
*
* Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
* @param \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setAnnotation($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation::class);
$this->annotation = $arr;
$this->has_annotation = true;
return $this;
}
public function hasAnnotation()
{
return $this->has_annotation;
}
}
src/Google/Protobuf/Internal/GeneratedCodeInfo_Annotation.php 0000644 00000012535 14641212622 0020341 0 ustar 00 google.protobuf.GeneratedCodeInfo.Annotation
*/
class GeneratedCodeInfo_Annotation extends \Google\Protobuf\Internal\Message
{
/**
* Identifies the element in the original source .proto file. This field
* is formatted the same as SourceCodeInfo.Location.path.
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
*/
private $path;
private $has_path = false;
/**
* Identifies the filesystem path to the original source .proto.
*
* Generated from protobuf field optional string source_file = 2;
*/
private $source_file = '';
private $has_source_file = false;
/**
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*
* Generated from protobuf field optional int32 begin = 3;
*/
private $begin = 0;
private $has_begin = false;
/**
* Identifies the ending offset in bytes in the generated code that
* relates to the identified offset. The end offset should be one past
* the last relevant byte (so the length of the text = end - begin).
*
* Generated from protobuf field optional int32 end = 4;
*/
private $end = 0;
private $has_end = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Identifies the element in the original source .proto file. This field
* is formatted the same as SourceCodeInfo.Location.path.
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getPath()
{
return $this->path;
}
/**
* Identifies the element in the original source .proto file. This field
* is formatted the same as SourceCodeInfo.Location.path.
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
* @param int[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setPath($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->path = $arr;
$this->has_path = true;
return $this;
}
public function hasPath()
{
return $this->has_path;
}
/**
* Identifies the filesystem path to the original source .proto.
*
* Generated from protobuf field optional string source_file = 2;
* @return string
*/
public function getSourceFile()
{
return $this->source_file;
}
/**
* Identifies the filesystem path to the original source .proto.
*
* Generated from protobuf field optional string source_file = 2;
* @param string $var
* @return $this
*/
public function setSourceFile($var)
{
GPBUtil::checkString($var, True);
$this->source_file = $var;
$this->has_source_file = true;
return $this;
}
public function hasSourceFile()
{
return $this->has_source_file;
}
/**
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*
* Generated from protobuf field optional int32 begin = 3;
* @return int
*/
public function getBegin()
{
return $this->begin;
}
/**
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*
* Generated from protobuf field optional int32 begin = 3;
* @param int $var
* @return $this
*/
public function setBegin($var)
{
GPBUtil::checkInt32($var);
$this->begin = $var;
$this->has_begin = true;
return $this;
}
public function hasBegin()
{
return $this->has_begin;
}
/**
* Identifies the ending offset in bytes in the generated code that
* relates to the identified offset. The end offset should be one past
* the last relevant byte (so the length of the text = end - begin).
*
* Generated from protobuf field optional int32 end = 4;
* @return int
*/
public function getEnd()
{
return $this->end;
}
/**
* Identifies the ending offset in bytes in the generated code that
* relates to the identified offset. The end offset should be one past
* the last relevant byte (so the length of the text = end - begin).
*
* Generated from protobuf field optional int32 end = 4;
* @param int $var
* @return $this
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
return $this;
}
public function hasEnd()
{
return $this->has_end;
}
}
src/Google/Protobuf/Internal/GetPublicDescriptorTrait.php 0000644 00000003514 14641212622 0017560 0 ustar 00 getPublicDescriptor();
}
}
src/Google/Protobuf/Internal/HasPublicDescriptorTrait.php 0000644 00000003477 14641212622 0017564 0 ustar 00 public_desc;
}
}
src/Google/Protobuf/Internal/MapEntry.php 0000644 00000004046 14641212622 0014377 0 ustar 00 key = $key;
}
public function getKey() {
return $this->key;
}
public function setValue($value) {
$this->value = $value;
}
public function getValue() {
return $this->value;
}
}
src/Google/Protobuf/Internal/MapField.php 0000644 00000017603 14641212622 0014324 0 ustar 00 container = [];
$this->key_type = $key_type;
$this->value_type = $value_type;
$this->klass = $klass;
}
/**
* @ignore
*/
public function getKeyType()
{
return $this->key_type;
}
/**
* @ignore
*/
public function getValueType()
{
return $this->value_type;
}
/**
* @ignore
*/
public function getValueClass()
{
return $this->klass;
}
/**
* Return the element at the given key.
*
* This will also be called for: $ele = $arr[$key]
*
* @param object $key The key of the element to be fetched.
* @return object The stored element at given key.
* @throws ErrorException Invalid type for index.
* @throws ErrorException Non-existing index.
*/
public function offsetGet($key)
{
return $this->container[$key];
}
/**
* Assign the element at the given key.
*
* This will also be called for: $arr[$key] = $value
*
* @param object $key The key of the element to be fetched.
* @param object $value The element to be assigned.
* @return void
* @throws ErrorException Invalid type for key.
* @throws ErrorException Invalid type for value.
* @throws ErrorException Non-existing key.
*/
public function offsetSet($key, $value)
{
$this->checkKey($this->key_type, $key);
switch ($this->value_type) {
case GPBType::INT32:
GPBUtil::checkInt32($value);
break;
case GPBType::UINT32:
GPBUtil::checkUint32($value);
break;
case GPBType::INT64:
GPBUtil::checkInt64($value);
break;
case GPBType::UINT64:
GPBUtil::checkUint64($value);
break;
case GPBType::FLOAT:
GPBUtil::checkFloat($value);
break;
case GPBType::DOUBLE:
GPBUtil::checkDouble($value);
break;
case GPBType::BOOL:
GPBUtil::checkBool($value);
break;
case GPBType::STRING:
GPBUtil::checkString($value, true);
break;
case GPBType::MESSAGE:
if (is_null($value)) {
trigger_error("Map element cannot be null.", E_USER_ERROR);
}
GPBUtil::checkMessage($value, $this->klass);
break;
default:
break;
}
$this->container[$key] = $value;
}
/**
* Remove the element at the given key.
*
* This will also be called for: unset($arr)
*
* @param object $key The key of the element to be removed.
* @return void
* @throws ErrorException Invalid type for key.
*/
public function offsetUnset($key)
{
$this->checkKey($this->key_type, $key);
unset($this->container[$key]);
}
/**
* Check the existence of the element at the given key.
*
* This will also be called for: isset($arr)
*
* @param object $key The key of the element to be removed.
* @return bool True if the element at the given key exists.
* @throws ErrorException Invalid type for key.
*/
public function offsetExists($key)
{
$this->checkKey($this->key_type, $key);
return isset($this->container[$key]);
}
/**
* @ignore
*/
public function getIterator()
{
return new MapFieldIter($this->container, $this->key_type);
}
/**
* Return the number of stored elements.
*
* This will also be called for: count($arr)
*
* @return integer The number of stored elements.
*/
public function count()
{
return count($this->container);
}
/**
* @ignore
*/
private function checkKey($key_type, &$key)
{
switch ($key_type) {
case GPBType::INT32:
GPBUtil::checkInt32($key);
break;
case GPBType::UINT32:
GPBUtil::checkUint32($key);
break;
case GPBType::INT64:
GPBUtil::checkInt64($key);
break;
case GPBType::UINT64:
GPBUtil::checkUint64($key);
break;
case GPBType::FIXED64:
GPBUtil::checkUint64($key);
break;
case GPBType::FIXED32:
GPBUtil::checkUint32($key);
break;
case GPBType::SFIXED64:
GPBUtil::checkInt64($key);
break;
case GPBType::SFIXED32:
GPBUtil::checkInt32($key);
break;
case GPBType::SINT64:
GPBUtil::checkInt64($key);
break;
case GPBType::SINT32:
GPBUtil::checkInt32($key);
break;
case GPBType::BOOL:
GPBUtil::checkBool($key);
break;
case GPBType::STRING:
GPBUtil::checkString($key, true);
break;
default:
trigger_error(
"Given type cannot be map key.",
E_USER_ERROR);
break;
}
}
}
src/Google/Protobuf/Internal/MapFieldIter.php 0000644 00000007130 14641212622 0015142 0 ustar 00 container = $container;
$this->key_type = $key_type;
}
/**
* Reset the status of the iterator
*
* @return void
*/
public function rewind()
{
return reset($this->container);
}
/**
* Return the element at the current position.
*
* @return object The element at the current position.
*/
public function current()
{
return current($this->container);
}
/**
* Return the current key.
*
* @return object The current key.
*/
public function key()
{
$key = key($this->container);
if ($this->key_type === GPBType::BOOL) {
// PHP associative array stores bool as integer for key.
return boolval($key);
} elseif ($this->key_type === GPBType::STRING) {
// PHP associative array stores int string as int for key.
return strval($key);
} else {
return $key;
}
}
/**
* Move to the next position.
*
* @return void
*/
public function next()
{
return next($this->container);
}
/**
* Check whether there are more elements to iterate.
*
* @return bool True if there are more elements to iterate.
*/
public function valid()
{
return key($this->container) !== null;
}
}
src/Google/Protobuf/Internal/Message.php 0000644 00000146247 14641212622 0014236 0 ustar 00 desc = $desc;
foreach ($desc->getField() as $field) {
$setter = $field->getSetter();
$this->$setter($this->defaultValue($field));
}
return;
}
$pool = DescriptorPool::getGeneratedPool();
$this->desc = $pool->getDescriptorByClassName(get_class($this));
if (is_null($this->desc)) {
user_error(get_class($this) . "is not found in descriptor pool.");
}
foreach ($this->desc->getField() as $field) {
$setter = $field->getSetter();
if ($field->isMap()) {
$message_type = $field->getMessageType();
$key_field = $message_type->getFieldByNumber(1);
$value_field = $message_type->getFieldByNumber(2);
switch ($value_field->getType()) {
case GPBType::MESSAGE:
case GPBType::GROUP:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType(),
$value_field->getMessageType()->getClass());
$this->$setter($map_field);
break;
case GPBType::ENUM:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType(),
$value_field->getEnumType()->getClass());
$this->$setter($map_field);
break;
default:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType());
$this->$setter($map_field);
break;
}
} else if ($field->getLabel() === GPBLabel::REPEATED) {
switch ($field->getType()) {
case GPBType::MESSAGE:
case GPBType::GROUP:
$repeated_field = new RepeatedField(
$field->getType(),
$field->getMessageType()->getClass());
$this->$setter($repeated_field);
break;
case GPBType::ENUM:
$repeated_field = new RepeatedField(
$field->getType(),
$field->getEnumType()->getClass());
$this->$setter($repeated_field);
break;
default:
$repeated_field = new RepeatedField($field->getType());
$this->$setter($repeated_field);
break;
}
} else if ($field->getOneofIndex() !== -1) {
$oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()];
$oneof_name = $oneof->getName();
$this->$oneof_name = new OneofField($oneof);
} else if ($field->getLabel() === GPBLabel::OPTIONAL &&
PHP_INT_SIZE == 4) {
switch ($field->getType()) {
case GPBType::INT64:
case GPBType::UINT64:
case GPBType::FIXED64:
case GPBType::SFIXED64:
case GPBType::SINT64:
$this->$setter("0");
}
}
}
}
protected function readOneof($number)
{
$field = $this->desc->getFieldByNumber($number);
$oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()];
$oneof_name = $oneof->getName();
$oneof_field = $this->$oneof_name;
if ($number === $oneof_field->getNumber()) {
return $oneof_field->getValue();
} else {
return $this->defaultValue($field);
}
}
protected function writeOneof($number, $value)
{
$field = $this->desc->getFieldByNumber($number);
$oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()];
$oneof_name = $oneof->getName();
$oneof_field = $this->$oneof_name;
$oneof_field->setValue($value);
$oneof_field->setFieldName($field->getName());
$oneof_field->setNumber($number);
}
protected function whichOneof($oneof_name)
{
$oneof_field = $this->$oneof_name;
$number = $oneof_field->getNumber();
if ($number == 0) {
return "";
}
$field = $this->desc->getFieldByNumber($number);
return $field->getName();
}
/**
* @ignore
*/
private function defaultValue($field)
{
$value = null;
switch ($field->getType()) {
case GPBType::DOUBLE:
case GPBType::FLOAT:
return 0.0;
case GPBType::UINT32:
case GPBType::INT32:
case GPBType::FIXED32:
case GPBType::SFIXED32:
case GPBType::SINT32:
case GPBType::ENUM:
return 0;
case GPBType::INT64:
case GPBType::UINT64:
case GPBType::FIXED64:
case GPBType::SFIXED64:
case GPBType::SINT64:
if (PHP_INT_SIZE === 4) {
return '0';
} else {
return 0;
}
case GPBType::BOOL:
return false;
case GPBType::STRING:
case GPBType::BYTES:
return "";
case GPBType::GROUP:
case GPBType::MESSAGE:
return null;
default:
user_error("Unsupported type.");
return false;
}
}
/**
* @ignore
*/
private static function skipField($input, $tag)
{
$number = GPBWire::getTagFieldNumber($tag);
if ($number === 0) {
throw new GPBDecodeException("Illegal field number zero.");
}
switch (GPBWire::getTagWireType($tag)) {
case GPBWireType::VARINT:
$uint64 = 0;
if (!$input->readVarint64($uint64)) {
throw new GPBDecodeException(
"Unexpected EOF inside varint.");
}
return;
case GPBWireType::FIXED64:
$uint64 = 0;
if (!$input->readLittleEndian64($uint64)) {
throw new GPBDecodeException(
"Unexpected EOF inside fixed64.");
}
return;
case GPBWireType::FIXED32:
$uint32 = 0;
if (!$input->readLittleEndian32($uint32)) {
throw new GPBDecodeException(
"Unexpected EOF inside fixed32.");
}
return;
case GPBWireType::LENGTH_DELIMITED:
$length = 0;
if (!$input->readVarint32($length)) {
throw new GPBDecodeException(
"Unexpected EOF inside length.");
}
$data = NULL;
if (!$input->readRaw($length, $data)) {
throw new GPBDecodeException(
"Unexpected EOF inside length delimited data.");
}
return;
case GPBWireType::START_GROUP:
case GPBWireType::END_GROUP:
throw new GPBDecodeException("Unexpected wire type.");
default:
throw new GPBDecodeException("Unexpected wire type.");
}
}
/**
* @ignore
*/
private static function parseFieldFromStreamNoTag($input, $field, &$value)
{
switch ($field->getType()) {
case GPBType::DOUBLE:
if (!GPBWire::readDouble($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside double field.");
}
break;
case GPBType::FLOAT:
if (!GPBWire::readFloat($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside float field.");
}
break;
case GPBType::INT64:
if (!GPBWire::readInt64($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside int64 field.");
}
break;
case GPBType::UINT64:
if (!GPBWire::readUint64($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside uint64 field.");
}
break;
case GPBType::INT32:
if (!GPBWire::readInt32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside int32 field.");
}
break;
case GPBType::FIXED64:
if (!GPBWire::readFixed64($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside fixed64 field.");
}
break;
case GPBType::FIXED32:
if (!GPBWire::readFixed32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside fixed32 field.");
}
break;
case GPBType::BOOL:
if (!GPBWire::readBool($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside bool field.");
}
break;
case GPBType::STRING:
// TODO(teboring): Add utf-8 check.
if (!GPBWire::readString($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside string field.");
}
break;
case GPBType::GROUP:
trigger_error("Not implemented.", E_ERROR);
break;
case GPBType::MESSAGE:
if ($field->isMap()) {
$value = new MapEntry($field->getMessageType());
} else {
$klass = $field->getMessageType()->getClass();
$value = new $klass;
}
if (!GPBWire::readMessage($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside message.");
}
break;
case GPBType::BYTES:
if (!GPBWire::readString($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside bytes field.");
}
break;
case GPBType::UINT32:
if (!GPBWire::readUint32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside uint32 field.");
}
break;
case GPBType::ENUM:
// TODO(teboring): Check unknown enum value.
if (!GPBWire::readInt32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside enum field.");
}
break;
case GPBType::SFIXED32:
if (!GPBWire::readSfixed32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside sfixed32 field.");
}
break;
case GPBType::SFIXED64:
if (!GPBWire::readSfixed64($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside sfixed64 field.");
}
break;
case GPBType::SINT32:
if (!GPBWire::readSint32($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside sint32 field.");
}
break;
case GPBType::SINT64:
if (!GPBWire::readSint64($input, $value)) {
throw new GPBDecodeException(
"Unexpected EOF inside sint64 field.");
}
break;
default:
user_error("Unsupported type.");
return false;
}
return true;
}
/**
* @ignore
*/
private function parseFieldFromStream($tag, $input, $field)
{
$value = null;
if (is_null($field)) {
$value_format = GPBWire::UNKNOWN;
} elseif (GPBWire::getTagWireType($tag) ===
GPBWire::getWireType($field->getType())) {
$value_format = GPBWire::NORMAL_FORMAT;
} elseif ($field->isPackable() &&
GPBWire::getTagWireType($tag) ===
GPBWire::WIRETYPE_LENGTH_DELIMITED) {
$value_format = GPBWire::PACKED_FORMAT;
} else {
// the wire type doesn't match. Put it in our unknown field set.
$value_format = GPBWire::UNKNOWN;
}
if ($value_format === GPBWire::UNKNOWN) {
self::skipField($input, $tag);
return;
} elseif ($value_format === GPBWire::NORMAL_FORMAT) {
self::parseFieldFromStreamNoTag($input, $field, $value);
} elseif ($value_format === GPBWire::PACKED_FORMAT) {
$length = 0;
if (!GPBWire::readInt32($input, $length)) {
throw new GPBDecodeException(
"Unexpected EOF inside packed length.");
}
$limit = $input->pushLimit($length);
$getter = $field->getGetter();
while ($input->bytesUntilLimit() > 0) {
self::parseFieldFromStreamNoTag($input, $field, $value);
$this->appendHelper($field, $value);
}
$input->popLimit($limit);
return;
} else {
return;
}
if ($field->isMap()) {
$this->kvUpdateHelper($field, $value->getKey(), $value->getValue());
} else if ($field->isRepeated()) {
$this->appendHelper($field, $value);
} else {
$setter = $field->getSetter();
$this->$setter($value);
}
}
/**
* Clear all containing fields.
* @return null.
*/
public function clear()
{
foreach ($this->desc->getField() as $field) {
$setter = $field->getSetter();
if ($field->isMap()) {
$message_type = $field->getMessageType();
$key_field = $message_type->getFieldByNumber(1);
$value_field = $message_type->getFieldByNumber(2);
switch ($value_field->getType()) {
case GPBType::MESSAGE:
case GPBType::GROUP:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType(),
$value_field->getMessageType()->getClass());
$this->$setter($map_field);
break;
case GPBType::ENUM:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType(),
$value_field->getEnumType()->getClass());
$this->$setter($map_field);
break;
default:
$map_field = new MapField(
$key_field->getType(),
$value_field->getType());
$this->$setter($map_field);
break;
}
} else if ($field->getLabel() === GPBLabel::REPEATED) {
switch ($field->getType()) {
case GPBType::MESSAGE:
case GPBType::GROUP:
$repeated_field = new RepeatedField(
$field->getType(),
$field->getMessageType()->getClass());
$this->$setter($repeated_field);
break;
case GPBType::ENUM:
$repeated_field = new RepeatedField(
$field->getType(),
$field->getEnumType()->getClass());
$this->$setter($repeated_field);
break;
default:
$repeated_field = new RepeatedField($field->getType());
$this->$setter($repeated_field);
break;
}
} else if ($field->getOneofIndex() !== -1) {
$oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()];
$oneof_name = $oneof->getName();
$this->$oneof_name = new OneofField($oneof);
} else if ($field->getLabel() === GPBLabel::OPTIONAL) {
switch ($field->getType()) {
case GPBType::DOUBLE :
case GPBType::FLOAT :
$this->$setter(0.0);
break;
case GPBType::INT32 :
case GPBType::FIXED32 :
case GPBType::UINT32 :
case GPBType::SFIXED32 :
case GPBType::SINT32 :
case GPBType::ENUM :
$this->$setter(0);
break;
case GPBType::BOOL :
$this->$setter(false);
break;
case GPBType::STRING :
case GPBType::BYTES :
$this->$setter("");
break;
case GPBType::GROUP :
case GPBType::MESSAGE :
$null = null;
$this->$setter($null);
break;
}
if (PHP_INT_SIZE == 4) {
switch ($field->getType()) {
case GPBType::INT64:
case GPBType::UINT64:
case GPBType::FIXED64:
case GPBType::SFIXED64:
case GPBType::SINT64:
$this->$setter("0");
}
} else {
switch ($field->getType()) {
case GPBType::INT64:
case GPBType::UINT64:
case GPBType::FIXED64:
case GPBType::SFIXED64:
case GPBType::SINT64:
$this->$setter(0);
}
}
}
}
}
/**
* Merges the contents of the specified message into current message.
*
* This method merges the contents of the specified message into the
* current message. Singular fields that are set in the specified message
* overwrite the corresponding fields in the current message. Repeated
* fields are appended. Map fields key-value pairs are overritten.
* Singular/Oneof sub-messages are recursively merged. All overritten
* sub-messages are deep-copied.
*
* @param object $msg Protobuf message to be merged from.
* @return null.
*/
public function mergeFrom($msg)
{
if (get_class($this) !== get_class($msg)) {
user_error("Cannot merge messages with different class.");
return;
}
foreach ($this->desc->getField() as $field) {
$setter = $field->getSetter();
$getter = $field->getGetter();
if ($field->isMap()) {
if (count($msg->$getter()) != 0) {
$value_field = $field->getMessageType()->getFieldByNumber(2);
foreach ($msg->$getter() as $key => $value) {
if ($value_field->getType() == GPBType::MESSAGE) {
$klass = $value_field->getMessageType()->getClass();
$copy = new $klass;
$copy->mergeFrom($value);
$this->kvUpdateHelper($field, $key, $copy);
} else {
$this->kvUpdateHelper($field, $key, $value);
}
}
}
} else if ($field->getLabel() === GPBLabel::REPEATED) {
if (count($msg->$getter()) != 0) {
foreach ($msg->$getter() as $tmp) {
if ($field->getType() == GPBType::MESSAGE) {
$klass = $field->getMessageType()->getClass();
$copy = new $klass;
$copy->mergeFrom($tmp);
$this->appendHelper($field, $copy);
} else {
$this->appendHelper($field, $tmp);
}
}
}
} else if ($field->getLabel() === GPBLabel::OPTIONAL) {
if($msg->$getter() !== $this->defaultValue($field)) {
$tmp = $msg->$getter();
if ($field->getType() == GPBType::MESSAGE) {
if (is_null($this->$getter())) {
$klass = $field->getMessageType()->getClass();
$new_msg = new $klass;
$this->$setter($new_msg);
}
$this->$getter()->mergeFrom($tmp);
} else {
$this->$setter($tmp);
}
}
}
}
}
/**
* Parses a protocol buffer contained in a string.
*
* This function takes a string in the (non-human-readable) binary wire
* format, matching the encoding output by serializeToString().
* See mergeFrom() for merging behavior, if the field is already set in the
* specified message.
*
* @param string $data Binary protobuf data.
* @return null.
* @throws Exception Invalid data.
*/
public function mergeFromString($data)
{
$input = new CodedInputStream($data);
$this->parseFromStream($input);
}
/**
* Parses a json string to protobuf message.
*
* This function takes a string in the json wire format, matching the
* encoding output by serializeToJsonString().
* See mergeFrom() for merging behavior, if the field is already set in the
* specified message.
*
* @param string $data Json protobuf data.
* @return null.
* @throws Exception Invalid data.
*/
public function mergeFromJsonString($data)
{
$input = new RawInputStream($data);
$this->parseFromJsonStream($input);
}
/**
* @ignore
*/
public function parseFromStream($input)
{
while (true) {
$tag = $input->readTag();
// End of input. This is a valid place to end, so return true.
if ($tag === 0) {
return true;
}
$number = GPBWire::getTagFieldNumber($tag);
$field = $this->desc->getFieldByNumber($number);
$this->parseFieldFromStream($tag, $input, $field);
}
}
private function convertJsonValueToProtoValue(
$value,
$field,
$is_map_key = false)
{
if (is_null($value)) {
return $this->defaultValue($field);
}
switch ($field->getType()) {
case GPBType::MESSAGE:
$klass = $field->getMessageType()->getClass();
if (!is_object($value) && !is_array($value)) {
throw new \Exception("Expect message.");
}
$submsg = new $klass;
if (!is_null($value) &&
$klass !== "Google\Protobuf\Any") {
$submsg->mergeFromJsonArray($value);
}
return $submsg;
case GPBType::ENUM:
if (is_integer($value)) {
return $value;
} else {
$enum_value =
$field->getEnumType()->getValueByName($value);
}
if (!is_null($enum_value)) {
return $enum_value->getNumber();
}
case GPBType::STRING:
if (!is_string($value)) {
throw new GPBDecodeException("Expect string");
}
return $value;
case GPBType::BYTES:
if (!is_string($value)) {
throw new GPBDecodeException("Expect string");
}
$proto_value = base64_decode($value, true);
if ($proto_value === false) {
throw new GPBDecodeException(
"Invalid base64 characters");
}
return $proto_value;
case GPBType::BOOL:
if ($is_map_key) {
if ($value === "true") {
return true;
}
if ($value === "false") {
return false;
}
throw new GPBDecodeException(
"Bool field only accept bool value");
}
if (!is_bool($value)) {
throw new GPBDecodeException(
"Bool field only accept bool value");
}
return $value;
case GPBType::FLOAT:
if ($value === "Infinity") {
return INF;
}
if ($value === "-Infinity") {
return -INF;
}
if ($value === "NaN") {
return NAN;
}
return $value;
case GPBType::DOUBLE:
if ($value === "Infinity") {
return INF;
}
if ($value === "-Infinity") {
return -INF;
}
if ($value === "NaN") {
return NAN;
}
return $value;
case GPBType::INT32:
if (!is_numeric($value)) {
throw new GPBDecodeException(
"Invalid data type for int32 field");
}
if (bccomp($value, "2147483647") > 0) {
throw new GPBDecodeException(
"Int32 too large");
}
if (bccomp($value, "-2147483648") < 0) {
throw new GPBDecodeException(
"Int32 too small");
}
return $value;
case GPBType::UINT32:
if (!is_numeric($value)) {
throw new GPBDecodeException(
"Invalid data type for uint32 field");
}
if (bccomp($value, 4294967295) > 0) {
throw new GPBDecodeException(
"Uint32 too large");
}
return $value;
case GPBType::INT64:
if (!is_numeric($value)) {
throw new GPBDecodeException(
"Invalid data type for int64 field");
}
if (bccomp($value, "9223372036854775807") > 0) {
throw new GPBDecodeException(
"Int64 too large");
}
if (bccomp($value, "-9223372036854775808") < 0) {
throw new GPBDecodeException(
"Int64 too small");
}
return $value;
case GPBType::UINT64:
if (!is_numeric($value)) {
throw new GPBDecodeException(
"Invalid data type for int64 field");
}
if (bccomp($value, "18446744073709551615") > 0) {
throw new GPBDecodeException(
"Uint64 too large");
}
if (bccomp($value, "9223372036854775807") > 0) {
$value = bcsub($value, "18446744073709551616");
}
return $value;
case GPBType::FIXED64:
return $value;
default:
return $value;
}
}
private function mergeFromJsonArray($array)
{
foreach ($array as $key => $value) {
$field = $this->desc->getFieldByJsonName($key);
if (is_null($field)) {
$field = $this->desc->getFieldByName($key);
if (is_null($field)) {
continue;
}
}
$setter = $field->getSetter();
if ($field->isMap()) {
if (is_null($value)) {
continue;
}
$key_field = $field->getMessageType()->getFieldByNumber(1);
$value_field = $field->getMessageType()->getFieldByNumber(2);
foreach ($value as $tmp_key => $tmp_value) {
if (is_null($tmp_value)) {
throw new \Exception(
"Map value field element cannot be null.");
}
$proto_key =
$this->convertJsonValueToProtoValue(
$tmp_key,
$key_field,
true);
$proto_value =
$this->convertJsonValueToProtoValue(
$tmp_value,
$value_field);
self::kvUpdateHelper($field, $proto_key, $proto_value);
}
} else if ($field->isRepeated()) {
if (is_null($value)) {
continue;
}
foreach ($value as $tmp) {
if (is_null($tmp)) {
throw new \Exception(
"Repeated field elements cannot be null.");
}
$proto_value =
$this->convertJsonValueToProtoValue($tmp, $field);
self::appendHelper($field, $proto_value);
}
} else {
$setter = $field->getSetter();
$proto_value =
$this->convertJsonValueToProtoValue($value, $field);
if ($field->getType() === GPBType::MESSAGE) {
if (is_null($proto_value)) {
continue;
}
$getter = $field->getGetter();
$submsg = $this->$getter();
if (!is_null($submsg)) {
$submsg->mergeFrom($proto_value);
continue;
}
}
$this->$setter($proto_value);
}
}
}
/**
* @ignore
*/
public function parseFromJsonStream($input)
{
$array = json_decode($input->getData(), JSON_BIGINT_AS_STRING);
if (is_null($array)) {
throw new GPBDecodeException(
"Cannot decode json string.");
}
try {
$this->mergeFromJsonArray($array);
} catch (Exception $e) {
throw new GPBDecodeException($e->getMessage());
}
}
/**
* @ignore
*/
private function serializeSingularFieldToStream($field, &$output)
{
if (!$this->existField($field)) {
return true;
}
$getter = $field->getGetter();
$value = $this->$getter();
if (!GPBWire::serializeFieldToStream($value, $field, true, $output)) {
return false;
}
return true;
}
/**
* @ignore
*/
private function serializeRepeatedFieldToStream($field, &$output)
{
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count === 0) {
return true;
}
$packed = $field->getPacked();
if ($packed) {
if (!GPBWire::writeTag(
$output,
GPBWire::makeTag($field->getNumber(), GPBType::STRING))) {
return false;
}
$size = 0;
foreach ($values as $value) {
$size += $this->fieldDataOnlyByteSize($field, $value);
}
if (!$output->writeVarint32($size, true)) {
return false;
}
}
foreach ($values as $value) {
if (!GPBWire::serializeFieldToStream(
$value,
$field,
!$packed,
$output)) {
return false;
}
}
return true;
}
/**
* @ignore
*/
private function serializeMapFieldToStream($field, $output)
{
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count === 0) {
return true;
}
foreach ($values as $key => $value) {
$map_entry = new MapEntry($field->getMessageType());
$map_entry->setKey($key);
$map_entry->setValue($value);
if (!GPBWire::serializeFieldToStream(
$map_entry,
$field,
true,
$output)) {
return false;
}
}
return true;
}
/**
* @ignore
*/
private function serializeFieldToStream(&$output, $field)
{
if ($field->isMap()) {
return $this->serializeMapFieldToStream($field, $output);
} elseif ($field->isRepeated()) {
return $this->serializeRepeatedFieldToStream($field, $output);
} else {
return $this->serializeSingularFieldToStream($field, $output);
}
}
/**
* @ignore
*/
private function serializeFieldToJsonStream(&$output, $field)
{
$getter = $field->getGetter();
$values = $this->$getter();
return GPBJsonWire::serializeFieldToStream($values, $field, $output);
}
/**
* @ignore
*/
public function serializeToStream(&$output)
{
$fields = $this->desc->getField();
foreach ($fields as $field) {
if (!$this->serializeFieldToStream($output, $field)) {
return false;
}
}
return true;
}
/**
* @ignore
*/
public function serializeToJsonStream(&$output)
{
$output->writeRaw("{", 1);
$fields = $this->desc->getField();
$first = true;
foreach ($fields as $field) {
if ($this->existField($field)) {
if ($first) {
$first = false;
} else {
$output->writeRaw(",", 1);
}
if (!$this->serializeFieldToJsonStream($output, $field)) {
return false;
}
}
}
$output->writeRaw("}", 1);
return true;
}
/**
* Serialize the message to string.
* @return string Serialized binary protobuf data.
*/
public function serializeToString()
{
$output = new CodedOutputStream($this->byteSize());
$this->serializeToStream($output);
return $output->getData();
}
/**
* Serialize the message to json string.
* @return string Serialized json protobuf data.
*/
public function serializeToJsonString()
{
$output = new CodedOutputStream($this->jsonByteSize());
$this->serializeToJsonStream($output);
return $output->getData();
}
/**
* @ignore
*/
private function existField($field)
{
$oneof_index = $field->getOneofIndex();
if ($oneof_index !== -1) {
$oneof = $this->desc->getOneofDecl()[$oneof_index];
$oneof_name = $oneof->getName();
return $this->$oneof_name->getNumber() === $field->getNumber();
}
$getter = $field->getGetter();
$values = $this->$getter();
if ($field->isMap()) {
return count($values) !== 0;
} elseif ($field->isRepeated()) {
return count($values) !== 0;
} else {
return $values !== $this->defaultValue($field);
}
}
/**
* @ignore
*/
private function repeatedFieldDataOnlyByteSize($field)
{
$size = 0;
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count !== 0) {
$size += $count * GPBWire::tagSize($field);
foreach ($values as $value) {
$size += $this->singularFieldDataOnlyByteSize($field);
}
}
}
/**
* @ignore
*/
private function fieldDataOnlyByteSize($field, $value)
{
$size = 0;
switch ($field->getType()) {
case GPBType::BOOL:
$size += 1;
break;
case GPBType::FLOAT:
case GPBType::FIXED32:
case GPBType::SFIXED32:
$size += 4;
break;
case GPBType::DOUBLE:
case GPBType::FIXED64:
case GPBType::SFIXED64:
$size += 8;
break;
case GPBType::INT32:
case GPBType::ENUM:
$size += GPBWire::varint32Size($value, true);
break;
case GPBType::UINT32:
$size += GPBWire::varint32Size($value);
break;
case GPBType::UINT64:
case GPBType::INT64:
$size += GPBWire::varint64Size($value);
break;
case GPBType::SINT32:
$size += GPBWire::sint32Size($value);
break;
case GPBType::SINT64:
$size += GPBWire::sint64Size($value);
break;
case GPBType::STRING:
case GPBType::BYTES:
$size += strlen($value);
$size += GPBWire::varint32Size($size);
break;
case GPBType::MESSAGE:
$size += $value->byteSize();
$size += GPBWire::varint32Size($size);
break;
case GPBType::GROUP:
// TODO(teboring): Add support.
user_error("Unsupported type.");
break;
default:
user_error("Unsupported type.");
return 0;
}
return $size;
}
/**
* @ignore
*/
private function fieldDataOnlyJsonByteSize($field, $value)
{
$size = 0;
switch ($field->getType()) {
case GPBType::SFIXED32:
case GPBType::SINT32:
case GPBType::INT32:
$size += strlen(strval($value));
break;
case GPBType::FIXED32:
case GPBType::UINT32:
if ($value < 0) {
$value = bcadd($value, "4294967296");
}
$size += strlen(strval($value));
break;
case GPBType::FIXED64:
case GPBType::UINT64:
if ($value < 0) {
$value = bcadd($value, "18446744073709551616");
}
// Intentional fall through.
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
$size += 2; // size for ""
$size += strlen(strval($value));
break;
case GPBType::FLOAT:
if (is_nan($value)) {
$size += strlen("NaN") + 2;
} elseif ($value === INF) {
$size += strlen("Infinity") + 2;
} elseif ($value === -INF) {
$size += strlen("-Infinity") + 2;
} else {
$size += strlen(sprintf("%.8g", $value));
}
break;
case GPBType::DOUBLE:
if (is_nan($value)) {
$size += strlen("NaN") + 2;
} elseif ($value === INF) {
$size += strlen("Infinity") + 2;
} elseif ($value === -INF) {
$size += strlen("-Infinity") + 2;
} else {
$size += strlen(sprintf("%.17g", $value));
}
break;
case GPBType::ENUM:
$enum_desc = $field->getEnumType();
$enum_value_desc = $enum_desc->getValueByNumber($value);
if (!is_null($enum_value_desc)) {
$size += 2; // size for ""
$size += strlen($enum_value_desc->getName());
} else {
$str_value = strval($value);
$size += strlen($str_value);
}
break;
case GPBType::BOOL:
if ($value) {
$size += 4;
} else {
$size += 5;
}
break;
case GPBType::STRING:
$value = json_encode($value);
$size += strlen($value);
break;
case GPBType::BYTES:
$size += strlen(base64_encode($value));
$size += 2; // size for \"\"
break;
case GPBType::MESSAGE:
$size += $value->jsonByteSize();
break;
# case GPBType::GROUP:
# // TODO(teboring): Add support.
# user_error("Unsupported type.");
# break;
default:
user_error("Unsupported type " . $field->getType());
return 0;
}
return $size;
}
/**
* @ignore
*/
private function fieldByteSize($field)
{
$size = 0;
if ($field->isMap()) {
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count !== 0) {
$size += $count * GPBWire::tagSize($field);
$message_type = $field->getMessageType();
$key_field = $message_type->getFieldByNumber(1);
$value_field = $message_type->getFieldByNumber(2);
foreach ($values as $key => $value) {
$data_size = 0;
if ($key != $this->defaultValue($key_field)) {
$data_size += $this->fieldDataOnlyByteSize(
$key_field,
$key);
$data_size += GPBWire::tagSize($key_field);
}
if ($value != $this->defaultValue($value_field)) {
$data_size += $this->fieldDataOnlyByteSize(
$value_field,
$value);
$data_size += GPBWire::tagSize($value_field);
}
$size += GPBWire::varint32Size($data_size) + $data_size;
}
}
} elseif ($field->isRepeated()) {
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count !== 0) {
if ($field->getPacked()) {
$data_size = 0;
foreach ($values as $value) {
$data_size += $this->fieldDataOnlyByteSize($field, $value);
}
$size += GPBWire::tagSize($field);
$size += GPBWire::varint32Size($data_size);
$size += $data_size;
} else {
$size += $count * GPBWire::tagSize($field);
foreach ($values as $value) {
$size += $this->fieldDataOnlyByteSize($field, $value);
}
}
}
} elseif ($this->existField($field)) {
$size += GPBWire::tagSize($field);
$getter = $field->getGetter();
$value = $this->$getter();
$size += $this->fieldDataOnlyByteSize($field, $value);
}
return $size;
}
/**
* @ignore
*/
private function fieldJsonByteSize($field)
{
$size = 0;
if ($field->isMap()) {
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count !== 0) {
$size += 5; // size for "\"\":{}".
$size += strlen($field->getJsonName()); // size for field name
$size += $count - 1; // size for commas
$getter = $field->getGetter();
$map_entry = $field->getMessageType();
$key_field = $map_entry->getFieldByNumber(1);
$value_field = $map_entry->getFieldByNumber(2);
switch ($key_field->getType()) {
case GPBType::STRING:
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
case GPBType::FIXED64:
case GPBType::UINT64:
$additional_quote = false;
break;
default:
$additional_quote = true;
}
foreach ($values as $key => $value) {
if ($additional_quote) {
$size += 2; // size for ""
}
$size += $this->fieldDataOnlyJsonByteSize($key_field, $key);
$size += $this->fieldDataOnlyJsonByteSize($value_field, $value);
$size += 1; // size for :
}
}
} elseif ($field->isRepeated()) {
$getter = $field->getGetter();
$values = $this->$getter();
$count = count($values);
if ($count !== 0) {
$size += 5; // size for "\"\":[]".
$size += strlen($field->getJsonName()); // size for field name
$size += $count - 1; // size for commas
$getter = $field->getGetter();
foreach ($values as $value) {
$size += $this->fieldDataOnlyJsonByteSize($field, $value);
}
}
} elseif ($this->existField($field)) {
$size += 3; // size for "\"\":".
$size += strlen($field->getJsonName()); // size for field name
$getter = $field->getGetter();
$value = $this->$getter();
$size += $this->fieldDataOnlyJsonByteSize($field, $value);
}
return $size;
}
/**
* @ignore
*/
public function byteSize()
{
$size = 0;
$fields = $this->desc->getField();
foreach ($fields as $field) {
$size += $this->fieldByteSize($field);
}
return $size;
}
private function appendHelper($field, $append_value)
{
$getter = $field->getGetter();
$setter = $field->getSetter();
$field_arr_value = $this->$getter();
$field_arr_value[] = $append_value;
if (!is_object($field_arr_value)) {
$this->$setter($field_arr_value);
}
}
private function kvUpdateHelper($field, $update_key, $update_value)
{
$getter = $field->getGetter();
$setter = $field->getSetter();
$field_arr_value = $this->$getter();
$field_arr_value[$update_key] = $update_value;
if (!is_object($field_arr_value)) {
$this->$setter($field_arr_value);
}
}
/**
* @ignore
*/
public function jsonByteSize()
{
$size = 0;
// Size for "{}".
$size += 2;
$fields = $this->desc->getField();
$count = 0;
foreach ($fields as $field) {
$field_size = $this->fieldJsonByteSize($field);
$size += $field_size;
if ($field_size != 0) {
$count++;
}
}
// size for comma
$size += $count > 0 ? ($count - 1) : 0;
return $size;
}
}
src/Google/Protobuf/Internal/MessageBuilderContext.php 0000644 00000010036 14641212622 0017074 0 ustar 00 descriptor = new Descriptor();
$this->descriptor->setFullName($full_name);
$this->descriptor->setClass($klass);
$this->pool = $pool;
}
private function getFieldDescriptor($name, $label, $type,
$number, $type_name = null)
{
$field = new FieldDescriptor();
$field->setName($name);
$camel_name = implode('', array_map('ucwords', explode('_', $name)));
$field->setGetter('get' . $camel_name);
$field->setSetter('set' . $camel_name);
$field->setType($type);
$field->setNumber($number);
$field->setLabel($label);
// At this time, the message/enum type may have not been added to pool.
// So we use the type name as place holder and will replace it with the
// actual descriptor in cross building.
switch ($type) {
case GPBType::MESSAGE:
$field->setMessageType($type_name);
break;
case GPBType::ENUM:
$field->setEnumType($type_name);
break;
default:
break;
}
return $field;
}
public function optional($name, $type, $number, $type_name = null)
{
$this->descriptor->addField($this->getFieldDescriptor(
$name,
GPBLabel::OPTIONAL,
$type,
$number,
$type_name));
return $this;
}
public function repeated($name, $type, $number, $type_name = null)
{
$this->descriptor->addField($this->getFieldDescriptor(
$name,
GPBLabel::REPEATED,
$type,
$number,
$type_name));
return $this;
}
public function required($name, $type, $number, $type_name = null)
{
$this->descriptor->addField($this->getFieldDescriptor(
$name,
GPBLabel::REQUIRED,
$type,
$number,
$type_name));
return $this;
}
public function finalizeToPool()
{
$this->pool->addDescriptor($this->descriptor);
}
}
src/Google/Protobuf/Internal/MessageOptions.php 0000644 00000030063 14641212622 0015576 0 ustar 00 google.protobuf.MessageOptions
*/
class MessageOptions extends \Google\Protobuf\Internal\Message
{
/**
* Set true to use the old proto1 MessageSet wire format for extensions.
* This is provided for backwards-compatibility with the MessageSet wire
* format. You should not use this for any other reason: It's less
* efficient, has fewer features, and is more complicated.
* The message must be defined exactly as follows:
* message Foo {
* option message_set_wire_format = true;
* extensions 4 to max;
* }
* Note that the message cannot have any defined fields; MessageSets only
* have extensions.
* All extensions of your type must be singular messages; e.g. they cannot
* be int32s, enums, or repeated messages.
* Because this is an option, the above two restrictions are not enforced by
* the protocol compiler.
*
* Generated from protobuf field optional bool message_set_wire_format = 1 [default = false];
*/
private $message_set_wire_format = false;
private $has_message_set_wire_format = false;
/**
* Disables the generation of the standard "descriptor()" accessor, which can
* conflict with a field of the same name. This is meant to make migration
* from proto1 easier; new code should avoid fields named "descriptor".
*
* Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false];
*/
private $no_standard_descriptor_accessor = false;
private $has_no_standard_descriptor_accessor = false;
/**
* Is this message deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the message, or it will be completely ignored; in the very least,
* this is a formalization for deprecating messages.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* Whether the message is an automatically generated map entry type for the
* maps field.
* For maps fields:
* map map_field = 1;
* The parsed descriptor looks like:
* message MapFieldEntry {
* option map_entry = true;
* optional KeyType key = 1;
* optional ValueType value = 2;
* }
* repeated MapFieldEntry map_field = 1;
* Implementations may choose not to generate the map_entry=true message, but
* use a native map in the target language to hold the keys and values.
* The reflection APIs in such implementions still need to work as
* if the field is a repeated message field.
* NOTE: Do not set the option in .proto files. Always use the maps syntax
* instead. The option should only be implicitly set by the proto compiler
* parser.
*
* Generated from protobuf field optional bool map_entry = 7;
*/
private $map_entry = false;
private $has_map_entry = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Set true to use the old proto1 MessageSet wire format for extensions.
* This is provided for backwards-compatibility with the MessageSet wire
* format. You should not use this for any other reason: It's less
* efficient, has fewer features, and is more complicated.
* The message must be defined exactly as follows:
* message Foo {
* option message_set_wire_format = true;
* extensions 4 to max;
* }
* Note that the message cannot have any defined fields; MessageSets only
* have extensions.
* All extensions of your type must be singular messages; e.g. they cannot
* be int32s, enums, or repeated messages.
* Because this is an option, the above two restrictions are not enforced by
* the protocol compiler.
*
* Generated from protobuf field optional bool message_set_wire_format = 1 [default = false];
* @return bool
*/
public function getMessageSetWireFormat()
{
return $this->message_set_wire_format;
}
/**
* Set true to use the old proto1 MessageSet wire format for extensions.
* This is provided for backwards-compatibility with the MessageSet wire
* format. You should not use this for any other reason: It's less
* efficient, has fewer features, and is more complicated.
* The message must be defined exactly as follows:
* message Foo {
* option message_set_wire_format = true;
* extensions 4 to max;
* }
* Note that the message cannot have any defined fields; MessageSets only
* have extensions.
* All extensions of your type must be singular messages; e.g. they cannot
* be int32s, enums, or repeated messages.
* Because this is an option, the above two restrictions are not enforced by
* the protocol compiler.
*
* Generated from protobuf field optional bool message_set_wire_format = 1 [default = false];
* @param bool $var
* @return $this
*/
public function setMessageSetWireFormat($var)
{
GPBUtil::checkBool($var);
$this->message_set_wire_format = $var;
$this->has_message_set_wire_format = true;
return $this;
}
public function hasMessageSetWireFormat()
{
return $this->has_message_set_wire_format;
}
/**
* Disables the generation of the standard "descriptor()" accessor, which can
* conflict with a field of the same name. This is meant to make migration
* from proto1 easier; new code should avoid fields named "descriptor".
*
* Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false];
* @return bool
*/
public function getNoStandardDescriptorAccessor()
{
return $this->no_standard_descriptor_accessor;
}
/**
* Disables the generation of the standard "descriptor()" accessor, which can
* conflict with a field of the same name. This is meant to make migration
* from proto1 easier; new code should avoid fields named "descriptor".
*
* Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false];
* @param bool $var
* @return $this
*/
public function setNoStandardDescriptorAccessor($var)
{
GPBUtil::checkBool($var);
$this->no_standard_descriptor_accessor = $var;
$this->has_no_standard_descriptor_accessor = true;
return $this;
}
public function hasNoStandardDescriptorAccessor()
{
return $this->has_no_standard_descriptor_accessor;
}
/**
* Is this message deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the message, or it will be completely ignored; in the very least,
* this is a formalization for deprecating messages.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this message deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the message, or it will be completely ignored; in the very least,
* this is a formalization for deprecating messages.
*
* Generated from protobuf field optional bool deprecated = 3 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* Whether the message is an automatically generated map entry type for the
* maps field.
* For maps fields:
* map map_field = 1;
* The parsed descriptor looks like:
* message MapFieldEntry {
* option map_entry = true;
* optional KeyType key = 1;
* optional ValueType value = 2;
* }
* repeated MapFieldEntry map_field = 1;
* Implementations may choose not to generate the map_entry=true message, but
* use a native map in the target language to hold the keys and values.
* The reflection APIs in such implementions still need to work as
* if the field is a repeated message field.
* NOTE: Do not set the option in .proto files. Always use the maps syntax
* instead. The option should only be implicitly set by the proto compiler
* parser.
*
* Generated from protobuf field optional bool map_entry = 7;
* @return bool
*/
public function getMapEntry()
{
return $this->map_entry;
}
/**
* Whether the message is an automatically generated map entry type for the
* maps field.
* For maps fields:
* map map_field = 1;
* The parsed descriptor looks like:
* message MapFieldEntry {
* option map_entry = true;
* optional KeyType key = 1;
* optional ValueType value = 2;
* }
* repeated MapFieldEntry map_field = 1;
* Implementations may choose not to generate the map_entry=true message, but
* use a native map in the target language to hold the keys and values.
* The reflection APIs in such implementions still need to work as
* if the field is a repeated message field.
* NOTE: Do not set the option in .proto files. Always use the maps syntax
* instead. The option should only be implicitly set by the proto compiler
* parser.
*
* Generated from protobuf field optional bool map_entry = 7;
* @param bool $var
* @return $this
*/
public function setMapEntry($var)
{
GPBUtil::checkBool($var);
$this->map_entry = $var;
$this->has_map_entry = true;
return $this;
}
public function hasMapEntry()
{
return $this->has_map_entry;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/MethodDescriptorProto.php 0000644 00000014722 14641212622 0017145 0 ustar 00 google.protobuf.MethodDescriptorProto
*/
class MethodDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Input and output type names. These are resolved in the same way as
* FieldDescriptorProto.type_name, but must refer to a message type.
*
* Generated from protobuf field optional string input_type = 2;
*/
private $input_type = '';
private $has_input_type = false;
/**
* Generated from protobuf field optional string output_type = 3;
*/
private $output_type = '';
private $has_output_type = false;
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions options = 4;
*/
private $options = null;
private $has_options = false;
/**
* Identifies if client streams multiple client messages
*
* Generated from protobuf field optional bool client_streaming = 5 [default = false];
*/
private $client_streaming = false;
private $has_client_streaming = false;
/**
* Identifies if server streams multiple server messages
*
* Generated from protobuf field optional bool server_streaming = 6 [default = false];
*/
private $server_streaming = false;
private $has_server_streaming = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Input and output type names. These are resolved in the same way as
* FieldDescriptorProto.type_name, but must refer to a message type.
*
* Generated from protobuf field optional string input_type = 2;
* @return string
*/
public function getInputType()
{
return $this->input_type;
}
/**
* Input and output type names. These are resolved in the same way as
* FieldDescriptorProto.type_name, but must refer to a message type.
*
* Generated from protobuf field optional string input_type = 2;
* @param string $var
* @return $this
*/
public function setInputType($var)
{
GPBUtil::checkString($var, True);
$this->input_type = $var;
$this->has_input_type = true;
return $this;
}
public function hasInputType()
{
return $this->has_input_type;
}
/**
* Generated from protobuf field optional string output_type = 3;
* @return string
*/
public function getOutputType()
{
return $this->output_type;
}
/**
* Generated from protobuf field optional string output_type = 3;
* @param string $var
* @return $this
*/
public function setOutputType($var)
{
GPBUtil::checkString($var, True);
$this->output_type = $var;
$this->has_output_type = true;
return $this;
}
public function hasOutputType()
{
return $this->has_output_type;
}
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions options = 4;
* @return \Google\Protobuf\Internal\MethodOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions options = 4;
* @param \Google\Protobuf\Internal\MethodOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MethodOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
/**
* Identifies if client streams multiple client messages
*
* Generated from protobuf field optional bool client_streaming = 5 [default = false];
* @return bool
*/
public function getClientStreaming()
{
return $this->client_streaming;
}
/**
* Identifies if client streams multiple client messages
*
* Generated from protobuf field optional bool client_streaming = 5 [default = false];
* @param bool $var
* @return $this
*/
public function setClientStreaming($var)
{
GPBUtil::checkBool($var);
$this->client_streaming = $var;
$this->has_client_streaming = true;
return $this;
}
public function hasClientStreaming()
{
return $this->has_client_streaming;
}
/**
* Identifies if server streams multiple server messages
*
* Generated from protobuf field optional bool server_streaming = 6 [default = false];
* @return bool
*/
public function getServerStreaming()
{
return $this->server_streaming;
}
/**
* Identifies if server streams multiple server messages
*
* Generated from protobuf field optional bool server_streaming = 6 [default = false];
* @param bool $var
* @return $this
*/
public function setServerStreaming($var)
{
GPBUtil::checkBool($var);
$this->server_streaming = $var;
$this->has_server_streaming = true;
return $this;
}
public function hasServerStreaming()
{
return $this->has_server_streaming;
}
}
src/Google/Protobuf/Internal/MethodOptions.php 0000644 00000011331 14641212622 0015427 0 ustar 00 google.protobuf.MethodOptions
*/
class MethodOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this method deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the method, or it will be completely ignored; in the very least,
* this is a formalization for deprecating methods.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
*/
private $idempotency_level = 0;
private $has_idempotency_level = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Is this method deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the method, or it will be completely ignored; in the very least,
* this is a formalization for deprecating methods.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this method deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the method, or it will be completely ignored; in the very least,
* this is a formalization for deprecating methods.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
* @return int
*/
public function getIdempotencyLevel()
{
return $this->idempotency_level;
}
/**
* Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
* @param int $var
* @return $this
*/
public function setIdempotencyLevel($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\MethodOptions_IdempotencyLevel::class);
$this->idempotency_level = $var;
$this->has_idempotency_level = true;
return $this;
}
public function hasIdempotencyLevel()
{
return $this->has_idempotency_level;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/MethodOptions_IdempotencyLevel.php 0000644 00000001625 14641212622 0020764 0 ustar 00 Google\Protobuf\Internal
*/
class MethodOptions_IdempotencyLevel
{
/**
* Generated from protobuf enum IDEMPOTENCY_UNKNOWN = 0;
*/
const IDEMPOTENCY_UNKNOWN = 0;
/**
* implies idempotent
*
* Generated from protobuf enum NO_SIDE_EFFECTS = 1;
*/
const NO_SIDE_EFFECTS = 1;
/**
* idempotent, but may have side effects
*
* Generated from protobuf enum IDEMPOTENT = 2;
*/
const IDEMPOTENT = 2;
}
src/Google/Protobuf/Internal/OneofDescriptor.php 0000644 00000005065 14641212622 0015747 0 ustar 00 public_desc = new \Google\Protobuf\OneofDescriptor($this);
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function addField(FieldDescriptor $field)
{
$this->fields[] = $field;
}
public function getFields()
{
return $this->fields;
}
public static function buildFromProto($oneof_proto, $desc, $index)
{
$oneof = new OneofDescriptor();
$oneof->setName($oneof_proto->getName());
foreach ($desc->getField() as $field) {
if ($field->getOneofIndex() == $index) {
$oneof->addField($field);
}
}
return $oneof;
}
}
src/Google/Protobuf/Internal/OneofDescriptorProto.php 0000644 00000004435 14641212622 0016773 0 ustar 00 google.protobuf.OneofDescriptorProto
*/
class OneofDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field optional .google.protobuf.OneofOptions options = 2;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field optional .google.protobuf.OneofOptions options = 2;
* @return \Google\Protobuf\Internal\OneofOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.OneofOptions options = 2;
* @param \Google\Protobuf\Internal\OneofOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\OneofOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/OneofField.php 0000644 00000004530 14641212622 0014650 0 ustar 00 desc = $desc;
}
public function setValue($value)
{
$this->value = $value;
}
public function getValue()
{
return $this->value;
}
public function setFieldName($field_name)
{
$this->field_name = $field_name;
}
public function getFieldName()
{
return $this->field_name;
}
public function setNumber($number)
{
$this->number = $number;
}
public function getNumber()
{
return $this->number;
}
}
src/Google/Protobuf/Internal/OneofOptions.php 0000644 00000004057 14641212622 0015264 0 ustar 00 google.protobuf.OneofOptions
*/
class OneofOptions extends \Google\Protobuf\Internal\Message
{
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/RawInputStream.php 0000644 00000003570 14641212622 0015566 0 ustar 00 buffer = $buffer;
}
public function getData()
{
return $this->buffer;
}
}
src/Google/Protobuf/Internal/RepeatedField.php 0000644 00000015567 14641212622 0015347 0 ustar 00 container = [];
$this->type = $type;
$this->klass = $klass;
}
/**
* @ignore
*/
public function getType()
{
return $this->type;
}
/**
* @ignore
*/
public function getClass()
{
return $this->klass;
}
/**
* Return the element at the given index.
*
* This will also be called for: $ele = $arr[0]
*
* @param long $offset The index of the element to be fetched.
* @return object The stored element at given index.
* @throws ErrorException Invalid type for index.
* @throws ErrorException Non-existing index.
*/
public function offsetGet($offset)
{
return $this->container[$offset];
}
/**
* Assign the element at the given index.
*
* This will also be called for: $arr []= $ele and $arr[0] = ele
*
* @param long $offset The index of the element to be assigned.
* @param object $value The element to be assigned.
* @return void
* @throws ErrorException Invalid type for index.
* @throws ErrorException Non-existing index.
* @throws ErrorException Incorrect type of the element.
*/
public function offsetSet($offset, $value)
{
switch ($this->type) {
case GPBType::INT32:
GPBUtil::checkInt32($value);
break;
case GPBType::UINT32:
GPBUtil::checkUint32($value);
break;
case GPBType::INT64:
GPBUtil::checkInt64($value);
break;
case GPBType::UINT64:
GPBUtil::checkUint64($value);
break;
case GPBType::FLOAT:
GPBUtil::checkFloat($value);
break;
case GPBType::DOUBLE:
GPBUtil::checkDouble($value);
break;
case GPBType::BOOL:
GPBUtil::checkBool($value);
break;
case GPBType::STRING:
GPBUtil::checkString($value, true);
break;
case GPBType::MESSAGE:
if (is_null($value)) {
trigger_error("RepeatedField element cannot be null.",
E_USER_ERROR);
}
GPBUtil::checkMessage($value, $this->klass);
break;
default:
break;
}
if (is_null($offset)) {
$this->container[] = $value;
} else {
$count = count($this->container);
if (!is_numeric($offset) || $offset < 0 || $offset >= $count) {
trigger_error(
"Cannot modify element at the given index",
E_USER_ERROR);
return;
}
$this->container[$offset] = $value;
}
}
/**
* Remove the element at the given index.
*
* This will also be called for: unset($arr)
*
* @param long $offset The index of the element to be removed.
* @return void
* @throws ErrorException Invalid type for index.
* @throws ErrorException The element to be removed is not at the end of the
* RepeatedField.
*/
public function offsetUnset($offset)
{
$count = count($this->container);
if (!is_numeric($offset) || $count === 0 || $offset !== $count - 1) {
trigger_error(
"Cannot remove element at the given index",
E_USER_ERROR);
return;
}
array_pop($this->container);
}
/**
* Check the existence of the element at the given index.
*
* This will also be called for: isset($arr)
*
* @param long $offset The index of the element to be removed.
* @return bool True if the element at the given offset exists.
* @throws ErrorException Invalid type for index.
*/
public function offsetExists($offset)
{
return isset($this->container[$offset]);
}
/**
* @ignore
*/
public function getIterator()
{
return new RepeatedFieldIter($this->container);
}
/**
* Return the number of stored elements.
*
* This will also be called for: count($arr)
*
* @return integer The number of stored elements.
*/
public function count()
{
return count($this->container);
}
}
src/Google/Protobuf/Internal/RepeatedFieldIter.php 0000644 00000006427 14641212622 0016166 0 ustar 00 position = 0;
$this->container = $container;
}
/**
* Reset the status of the iterator
*
* @return void
*/
public function rewind()
{
$this->position = 0;
}
/**
* Return the element at the current position.
*
* @return object The element at the current position.
*/
public function current()
{
return $this->container[$this->position];
}
/**
* Return the current position.
*
* @return integer The current position.
*/
public function key()
{
return $this->position;
}
/**
* Move to the next position.
*
* @return void
*/
public function next()
{
++$this->position;
}
/**
* Check whether there are more elements to iterate.
*
* @return bool True if there are more elements to iterate.
*/
public function valid()
{
return isset($this->container[$this->position]);
}
}
src/Google/Protobuf/Internal/ServiceDescriptorProto.php 0000644 00000006520 14641212622 0017322 0 ustar 00 google.protobuf.ServiceDescriptorProto
*/
class ServiceDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2;
*/
private $method;
private $has_method = false;
/**
* Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field optional string name = 1;
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field optional string name = 1;
* @param string $var
* @return $this
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getMethod()
{
return $this->method;
}
/**
* Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2;
* @param \Google\Protobuf\Internal\MethodDescriptorProto[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setMethod($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\MethodDescriptorProto::class);
$this->method = $arr;
$this->has_method = true;
return $this;
}
public function hasMethod()
{
return $this->has_method;
}
/**
* Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3;
* @return \Google\Protobuf\Internal\ServiceOptions
*/
public function getOptions()
{
return $this->options;
}
/**
* Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3;
* @param \Google\Protobuf\Internal\ServiceOptions $var
* @return $this
*/
public function setOptions($var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\ServiceOptions::class);
$this->options = $var;
$this->has_options = true;
return $this;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/ServiceOptions.php 0000644 00000007155 14641212622 0015620 0 ustar 00 google.protobuf.ServiceOptions
*/
class ServiceOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this service deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the service, or it will be completely ignored; in the very least,
* this is a formalization for deprecating services.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
private $uninterpreted_option;
private $has_uninterpreted_option = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Is this service deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the service, or it will be completely ignored; in the very least,
* this is a formalization for deprecating services.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
* @return bool
*/
public function getDeprecated()
{
return $this->deprecated;
}
/**
* Is this service deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the service, or it will be completely ignored; in the very least,
* this is a formalization for deprecating services.
*
* Generated from protobuf field optional bool deprecated = 33 [default = false];
* @param bool $var
* @return $this
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
return $this;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
* The parser stores options it doesn't recognize here. See above.
*
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
* @param \Google\Protobuf\Internal\UninterpretedOption[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setUninterpretedOption($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $arr;
$this->has_uninterpreted_option = true;
return $this;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/SourceCodeInfo.php 0000644 00000021605 14641212622 0015507 0 ustar 00 google.protobuf.SourceCodeInfo
*/
class SourceCodeInfo extends \Google\Protobuf\Internal\Message
{
/**
* A Location identifies a piece of source code in a .proto file which
* corresponds to a particular definition. This information is intended
* to be useful to IDEs, code indexers, documentation generators, and similar
* tools.
* For example, say we have a file like:
* message Foo {
* optional string foo = 1;
* }
* Let's look at just the field definition:
* optional string foo = 1;
* ^ ^^ ^^ ^ ^^^
* a bc de f ghi
* We have the following locations:
* span path represents
* [a,i) [ 4, 0, 2, 0 ] The whole field definition.
* [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
* [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
* [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
* [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
* Notes:
* - A location may refer to a repeated field itself (i.e. not to any
* particular index within it). This is used whenever a set of elements are
* logically enclosed in a single code segment. For example, an entire
* extend block (possibly containing multiple extension definitions) will
* have an outer location whose path refers to the "extensions" repeated
* field without an index.
* - Multiple locations may have the same path. This happens when a single
* logical declaration is spread out across multiple places. The most
* obvious example is the "extend" block again -- there may be multiple
* extend blocks in the same scope, each of which will have the same path.
* - A location's span is not always a subset of its parent's span. For
* example, the "extendee" of an extension declaration appears at the
* beginning of the "extend" block and is shared by all extensions within
* the block.
* - Just because a location's span is a subset of some other location's span
* does not mean that it is a descendent. For example, a "group" defines
* both a type and a field in a single declaration. Thus, the locations
* corresponding to the type and field and their components will overlap.
* - Code which tries to interpret locations should probably be designed to
* ignore those that it doesn't understand, as more types of locations could
* be recorded in the future.
*
* Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1;
*/
private $location;
private $has_location = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* A Location identifies a piece of source code in a .proto file which
* corresponds to a particular definition. This information is intended
* to be useful to IDEs, code indexers, documentation generators, and similar
* tools.
* For example, say we have a file like:
* message Foo {
* optional string foo = 1;
* }
* Let's look at just the field definition:
* optional string foo = 1;
* ^ ^^ ^^ ^ ^^^
* a bc de f ghi
* We have the following locations:
* span path represents
* [a,i) [ 4, 0, 2, 0 ] The whole field definition.
* [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
* [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
* [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
* [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
* Notes:
* - A location may refer to a repeated field itself (i.e. not to any
* particular index within it). This is used whenever a set of elements are
* logically enclosed in a single code segment. For example, an entire
* extend block (possibly containing multiple extension definitions) will
* have an outer location whose path refers to the "extensions" repeated
* field without an index.
* - Multiple locations may have the same path. This happens when a single
* logical declaration is spread out across multiple places. The most
* obvious example is the "extend" block again -- there may be multiple
* extend blocks in the same scope, each of which will have the same path.
* - A location's span is not always a subset of its parent's span. For
* example, the "extendee" of an extension declaration appears at the
* beginning of the "extend" block and is shared by all extensions within
* the block.
* - Just because a location's span is a subset of some other location's span
* does not mean that it is a descendent. For example, a "group" defines
* both a type and a field in a single declaration. Thus, the locations
* corresponding to the type and field and their components will overlap.
* - Code which tries to interpret locations should probably be designed to
* ignore those that it doesn't understand, as more types of locations could
* be recorded in the future.
*
* Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getLocation()
{
return $this->location;
}
/**
* A Location identifies a piece of source code in a .proto file which
* corresponds to a particular definition. This information is intended
* to be useful to IDEs, code indexers, documentation generators, and similar
* tools.
* For example, say we have a file like:
* message Foo {
* optional string foo = 1;
* }
* Let's look at just the field definition:
* optional string foo = 1;
* ^ ^^ ^^ ^ ^^^
* a bc de f ghi
* We have the following locations:
* span path represents
* [a,i) [ 4, 0, 2, 0 ] The whole field definition.
* [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
* [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
* [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
* [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
* Notes:
* - A location may refer to a repeated field itself (i.e. not to any
* particular index within it). This is used whenever a set of elements are
* logically enclosed in a single code segment. For example, an entire
* extend block (possibly containing multiple extension definitions) will
* have an outer location whose path refers to the "extensions" repeated
* field without an index.
* - Multiple locations may have the same path. This happens when a single
* logical declaration is spread out across multiple places. The most
* obvious example is the "extend" block again -- there may be multiple
* extend blocks in the same scope, each of which will have the same path.
* - A location's span is not always a subset of its parent's span. For
* example, the "extendee" of an extension declaration appears at the
* beginning of the "extend" block and is shared by all extensions within
* the block.
* - Just because a location's span is a subset of some other location's span
* does not mean that it is a descendent. For example, a "group" defines
* both a type and a field in a single declaration. Thus, the locations
* corresponding to the type and field and their components will overlap.
* - Code which tries to interpret locations should probably be designed to
* ignore those that it doesn't understand, as more types of locations could
* be recorded in the future.
*
* Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1;
* @param \Google\Protobuf\Internal\SourceCodeInfo_Location[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setLocation($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\SourceCodeInfo_Location::class);
$this->location = $arr;
$this->has_location = true;
return $this;
}
public function hasLocation()
{
return $this->has_location;
}
}
src/Google/Protobuf/Internal/SourceCodeInfo_Location.php 0000644 00000034561 14641212622 0017344 0 ustar 00 google.protobuf.SourceCodeInfo.Location
*/
class SourceCodeInfo_Location extends \Google\Protobuf\Internal\Message
{
/**
* Identifies which part of the FileDescriptorProto was defined at this
* location.
* Each element is a field number or an index. They form a path from
* the root FileDescriptorProto to the place where the definition. For
* example, this path:
* [ 4, 3, 2, 7, 1 ]
* refers to:
* file.message_type(3) // 4, 3
* .field(7) // 2, 7
* .name() // 1
* This is because FileDescriptorProto.message_type has field number 4:
* repeated DescriptorProto message_type = 4;
* and DescriptorProto.field has field number 2:
* repeated FieldDescriptorProto field = 2;
* and FieldDescriptorProto.name has field number 1:
* optional string name = 1;
* Thus, the above path gives the location of a field name. If we removed
* the last element:
* [ 4, 3, 2, 7 ]
* this path refers to the whole field declaration (from the beginning
* of the label to the terminating semicolon).
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
*/
private $path;
private $has_path = false;
/**
* Always has exactly three or four elements: start line, start column,
* end line (optional, otherwise assumed same as start line), end column.
* These are packed into a single field for efficiency. Note that line
* and column numbers are zero-based -- typically you will want to add
* 1 to each before displaying to a user.
*
* Generated from protobuf field repeated int32 span = 2 [packed = true];
*/
private $span;
private $has_span = false;
/**
* If this SourceCodeInfo represents a complete declaration, these are any
* comments appearing before and after the declaration which appear to be
* attached to the declaration.
* A series of line comments appearing on consecutive lines, with no other
* tokens appearing on those lines, will be treated as a single comment.
* leading_detached_comments will keep paragraphs of comments that appear
* before (but not connected to) the current element. Each paragraph,
* separated by empty lines, will be one comment element in the repeated
* field.
* Only the comment content is provided; comment markers (e.g. //) are
* stripped out. For block comments, leading whitespace and an asterisk
* will be stripped from the beginning of each line other than the first.
* Newlines are included in the output.
* Examples:
* optional int32 foo = 1; // Comment attached to foo.
* // Comment attached to bar.
* optional int32 bar = 2;
* optional string baz = 3;
* // Comment attached to baz.
* // Another line attached to baz.
* // Comment attached to qux.
* //
* // Another line attached to qux.
* optional double qux = 4;
* // Detached comment for corge. This is not leading or trailing comments
* // to qux or corge because there are blank lines separating it from
* // both.
* // Detached comment for corge paragraph 2.
* optional string corge = 5;
* /* Block comment attached
* * to corge. Leading asterisks
* * will be removed. */
* /* Block comment attached to
* * grault. */
* optional int32 grault = 6;
* // ignored detached comments.
*
* Generated from protobuf field optional string leading_comments = 3;
*/
private $leading_comments = '';
private $has_leading_comments = false;
/**
* Generated from protobuf field optional string trailing_comments = 4;
*/
private $trailing_comments = '';
private $has_trailing_comments = false;
/**
* Generated from protobuf field repeated string leading_detached_comments = 6;
*/
private $leading_detached_comments;
private $has_leading_detached_comments = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Identifies which part of the FileDescriptorProto was defined at this
* location.
* Each element is a field number or an index. They form a path from
* the root FileDescriptorProto to the place where the definition. For
* example, this path:
* [ 4, 3, 2, 7, 1 ]
* refers to:
* file.message_type(3) // 4, 3
* .field(7) // 2, 7
* .name() // 1
* This is because FileDescriptorProto.message_type has field number 4:
* repeated DescriptorProto message_type = 4;
* and DescriptorProto.field has field number 2:
* repeated FieldDescriptorProto field = 2;
* and FieldDescriptorProto.name has field number 1:
* optional string name = 1;
* Thus, the above path gives the location of a field name. If we removed
* the last element:
* [ 4, 3, 2, 7 ]
* this path refers to the whole field declaration (from the beginning
* of the label to the terminating semicolon).
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getPath()
{
return $this->path;
}
/**
* Identifies which part of the FileDescriptorProto was defined at this
* location.
* Each element is a field number or an index. They form a path from
* the root FileDescriptorProto to the place where the definition. For
* example, this path:
* [ 4, 3, 2, 7, 1 ]
* refers to:
* file.message_type(3) // 4, 3
* .field(7) // 2, 7
* .name() // 1
* This is because FileDescriptorProto.message_type has field number 4:
* repeated DescriptorProto message_type = 4;
* and DescriptorProto.field has field number 2:
* repeated FieldDescriptorProto field = 2;
* and FieldDescriptorProto.name has field number 1:
* optional string name = 1;
* Thus, the above path gives the location of a field name. If we removed
* the last element:
* [ 4, 3, 2, 7 ]
* this path refers to the whole field declaration (from the beginning
* of the label to the terminating semicolon).
*
* Generated from protobuf field repeated int32 path = 1 [packed = true];
* @param int[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setPath($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->path = $arr;
$this->has_path = true;
return $this;
}
public function hasPath()
{
return $this->has_path;
}
/**
* Always has exactly three or four elements: start line, start column,
* end line (optional, otherwise assumed same as start line), end column.
* These are packed into a single field for efficiency. Note that line
* and column numbers are zero-based -- typically you will want to add
* 1 to each before displaying to a user.
*
* Generated from protobuf field repeated int32 span = 2 [packed = true];
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getSpan()
{
return $this->span;
}
/**
* Always has exactly three or four elements: start line, start column,
* end line (optional, otherwise assumed same as start line), end column.
* These are packed into a single field for efficiency. Note that line
* and column numbers are zero-based -- typically you will want to add
* 1 to each before displaying to a user.
*
* Generated from protobuf field repeated int32 span = 2 [packed = true];
* @param int[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setSpan($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->span = $arr;
$this->has_span = true;
return $this;
}
public function hasSpan()
{
return $this->has_span;
}
/**
* If this SourceCodeInfo represents a complete declaration, these are any
* comments appearing before and after the declaration which appear to be
* attached to the declaration.
* A series of line comments appearing on consecutive lines, with no other
* tokens appearing on those lines, will be treated as a single comment.
* leading_detached_comments will keep paragraphs of comments that appear
* before (but not connected to) the current element. Each paragraph,
* separated by empty lines, will be one comment element in the repeated
* field.
* Only the comment content is provided; comment markers (e.g. //) are
* stripped out. For block comments, leading whitespace and an asterisk
* will be stripped from the beginning of each line other than the first.
* Newlines are included in the output.
* Examples:
* optional int32 foo = 1; // Comment attached to foo.
* // Comment attached to bar.
* optional int32 bar = 2;
* optional string baz = 3;
* // Comment attached to baz.
* // Another line attached to baz.
* // Comment attached to qux.
* //
* // Another line attached to qux.
* optional double qux = 4;
* // Detached comment for corge. This is not leading or trailing comments
* // to qux or corge because there are blank lines separating it from
* // both.
* // Detached comment for corge paragraph 2.
* optional string corge = 5;
* /* Block comment attached
* * to corge. Leading asterisks
* * will be removed. */
* /* Block comment attached to
* * grault. */
* optional int32 grault = 6;
* // ignored detached comments.
*
* Generated from protobuf field optional string leading_comments = 3;
* @return string
*/
public function getLeadingComments()
{
return $this->leading_comments;
}
/**
* If this SourceCodeInfo represents a complete declaration, these are any
* comments appearing before and after the declaration which appear to be
* attached to the declaration.
* A series of line comments appearing on consecutive lines, with no other
* tokens appearing on those lines, will be treated as a single comment.
* leading_detached_comments will keep paragraphs of comments that appear
* before (but not connected to) the current element. Each paragraph,
* separated by empty lines, will be one comment element in the repeated
* field.
* Only the comment content is provided; comment markers (e.g. //) are
* stripped out. For block comments, leading whitespace and an asterisk
* will be stripped from the beginning of each line other than the first.
* Newlines are included in the output.
* Examples:
* optional int32 foo = 1; // Comment attached to foo.
* // Comment attached to bar.
* optional int32 bar = 2;
* optional string baz = 3;
* // Comment attached to baz.
* // Another line attached to baz.
* // Comment attached to qux.
* //
* // Another line attached to qux.
* optional double qux = 4;
* // Detached comment for corge. This is not leading or trailing comments
* // to qux or corge because there are blank lines separating it from
* // both.
* // Detached comment for corge paragraph 2.
* optional string corge = 5;
* /* Block comment attached
* * to corge. Leading asterisks
* * will be removed. */
* /* Block comment attached to
* * grault. */
* optional int32 grault = 6;
* // ignored detached comments.
*
* Generated from protobuf field optional string leading_comments = 3;
* @param string $var
* @return $this
*/
public function setLeadingComments($var)
{
GPBUtil::checkString($var, True);
$this->leading_comments = $var;
$this->has_leading_comments = true;
return $this;
}
public function hasLeadingComments()
{
return $this->has_leading_comments;
}
/**
* Generated from protobuf field optional string trailing_comments = 4;
* @return string
*/
public function getTrailingComments()
{
return $this->trailing_comments;
}
/**
* Generated from protobuf field optional string trailing_comments = 4;
* @param string $var
* @return $this
*/
public function setTrailingComments($var)
{
GPBUtil::checkString($var, True);
$this->trailing_comments = $var;
$this->has_trailing_comments = true;
return $this;
}
public function hasTrailingComments()
{
return $this->has_trailing_comments;
}
/**
* Generated from protobuf field repeated string leading_detached_comments = 6;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getLeadingDetachedComments()
{
return $this->leading_detached_comments;
}
/**
* Generated from protobuf field repeated string leading_detached_comments = 6;
* @param string[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setLeadingDetachedComments($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->leading_detached_comments = $arr;
$this->has_leading_detached_comments = true;
return $this;
}
public function hasLeadingDetachedComments()
{
return $this->has_leading_detached_comments;
}
}
src/Google/Protobuf/Internal/UninterpretedOption.php 0000644 00000016775 14641212622 0016675 0 ustar 00 google.protobuf.UninterpretedOption
*/
class UninterpretedOption extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
*/
private $name;
private $has_name = false;
/**
* The value of the uninterpreted option, in whatever type the tokenizer
* identified it as during parsing. Exactly one of these should be set.
*
* Generated from protobuf field optional string identifier_value = 3;
*/
private $identifier_value = '';
private $has_identifier_value = false;
/**
* Generated from protobuf field optional uint64 positive_int_value = 4;
*/
private $positive_int_value = 0;
private $has_positive_int_value = false;
/**
* Generated from protobuf field optional int64 negative_int_value = 5;
*/
private $negative_int_value = 0;
private $has_negative_int_value = false;
/**
* Generated from protobuf field optional double double_value = 6;
*/
private $double_value = 0.0;
private $has_double_value = false;
/**
* Generated from protobuf field optional bytes string_value = 7;
*/
private $string_value = '';
private $has_string_value = false;
/**
* Generated from protobuf field optional string aggregate_value = 8;
*/
private $aggregate_value = '';
private $has_aggregate_value = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
* @return \Google\Protobuf\Internal\RepeatedField
*/
public function getName()
{
return $this->name;
}
/**
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
* @param \Google\Protobuf\Internal\UninterpretedOption_NamePart[]|\Google\Protobuf\Internal\RepeatedField $var
* @return $this
*/
public function setName($var)
{
$arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption_NamePart::class);
$this->name = $arr;
$this->has_name = true;
return $this;
}
public function hasName()
{
return $this->has_name;
}
/**
* The value of the uninterpreted option, in whatever type the tokenizer
* identified it as during parsing. Exactly one of these should be set.
*
* Generated from protobuf field optional string identifier_value = 3;
* @return string
*/
public function getIdentifierValue()
{
return $this->identifier_value;
}
/**
* The value of the uninterpreted option, in whatever type the tokenizer
* identified it as during parsing. Exactly one of these should be set.
*
* Generated from protobuf field optional string identifier_value = 3;
* @param string $var
* @return $this
*/
public function setIdentifierValue($var)
{
GPBUtil::checkString($var, True);
$this->identifier_value = $var;
$this->has_identifier_value = true;
return $this;
}
public function hasIdentifierValue()
{
return $this->has_identifier_value;
}
/**
* Generated from protobuf field optional uint64 positive_int_value = 4;
* @return int|string
*/
public function getPositiveIntValue()
{
return $this->positive_int_value;
}
/**
* Generated from protobuf field optional uint64 positive_int_value = 4;
* @param int|string $var
* @return $this
*/
public function setPositiveIntValue($var)
{
GPBUtil::checkUint64($var);
$this->positive_int_value = $var;
$this->has_positive_int_value = true;
return $this;
}
public function hasPositiveIntValue()
{
return $this->has_positive_int_value;
}
/**
* Generated from protobuf field optional int64 negative_int_value = 5;
* @return int|string
*/
public function getNegativeIntValue()
{
return $this->negative_int_value;
}
/**
* Generated from protobuf field optional int64 negative_int_value = 5;
* @param int|string $var
* @return $this
*/
public function setNegativeIntValue($var)
{
GPBUtil::checkInt64($var);
$this->negative_int_value = $var;
$this->has_negative_int_value = true;
return $this;
}
public function hasNegativeIntValue()
{
return $this->has_negative_int_value;
}
/**
* Generated from protobuf field optional double double_value = 6;
* @return float
*/
public function getDoubleValue()
{
return $this->double_value;
}
/**
* Generated from protobuf field optional double double_value = 6;
* @param float $var
* @return $this
*/
public function setDoubleValue($var)
{
GPBUtil::checkDouble($var);
$this->double_value = $var;
$this->has_double_value = true;
return $this;
}
public function hasDoubleValue()
{
return $this->has_double_value;
}
/**
* Generated from protobuf field optional bytes string_value = 7;
* @return string
*/
public function getStringValue()
{
return $this->string_value;
}
/**
* Generated from protobuf field optional bytes string_value = 7;
* @param string $var
* @return $this
*/
public function setStringValue($var)
{
GPBUtil::checkString($var, False);
$this->string_value = $var;
$this->has_string_value = true;
return $this;
}
public function hasStringValue()
{
return $this->has_string_value;
}
/**
* Generated from protobuf field optional string aggregate_value = 8;
* @return string
*/
public function getAggregateValue()
{
return $this->aggregate_value;
}
/**
* Generated from protobuf field optional string aggregate_value = 8;
* @param string $var
* @return $this
*/
public function setAggregateValue($var)
{
GPBUtil::checkString($var, True);
$this->aggregate_value = $var;
$this->has_aggregate_value = true;
return $this;
}
public function hasAggregateValue()
{
return $this->has_aggregate_value;
}
}
src/Google/Protobuf/Internal/UninterpretedOption_NamePart.php 0000644 00000005015 14641212622 0020445 0 ustar 00 google.protobuf.UninterpretedOption.NamePart
*/
class UninterpretedOption_NamePart extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field required string name_part = 1;
*/
private $name_part = '';
private $has_name_part = false;
/**
* Generated from protobuf field required bool is_extension = 2;
*/
private $is_extension = false;
private $has_is_extension = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* Generated from protobuf field required string name_part = 1;
* @return string
*/
public function getNamePart()
{
return $this->name_part;
}
/**
* Generated from protobuf field required string name_part = 1;
* @param string $var
* @return $this
*/
public function setNamePart($var)
{
GPBUtil::checkString($var, True);
$this->name_part = $var;
$this->has_name_part = true;
return $this;
}
public function hasNamePart()
{
return $this->has_name_part;
}
/**
* Generated from protobuf field required bool is_extension = 2;
* @return bool
*/
public function getIsExtension()
{
return $this->is_extension;
}
/**
* Generated from protobuf field required bool is_extension = 2;
* @param bool $var
* @return $this
*/
public function setIsExtension($var)
{
GPBUtil::checkBool($var);
$this->is_extension = $var;
$this->has_is_extension = true;
return $this;
}
public function hasIsExtension()
{
return $this->has_is_extension;
}
}
src/Google/Protobuf/OneofDescriptor.php 0000644 00000004762 14641212622 0014176 0 ustar 00 internal_desc = $internal_desc;
}
/**
* @return string The name of the oneof
*/
public function getName()
{
return $this->internal_desc->getName();
}
/**
* @param int $index Must be >= 0 and < getFieldCount()
* @return FieldDescriptor
*/
public function getField($index)
{
return $this->getPublicDescriptor($this->internal_desc->getFields()[$index]);
}
/**
* @return int Number of fields in the oneof
*/
public function getFieldCount()
{
return count($this->internal_desc->getFields());
}
}
src/phpdoc.dist.xml 0000644 00000000624 14641212622 0010276 0 ustar 00
doc
doc
Google/Protobuf/Internal/MapField.php
Google/Protobuf/Internal/Message.php
Google/Protobuf/Internal/RepeatedField.php