LICENSE 0000644 00000002754 14641212465 0005566 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 14641212465 0006033 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 00000001107 14641212465 0007272 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"
},
"autoload": {
"psr-4": {
"Google\\Protobuf\\Internal\\": "src/Google/Protobuf/Internal",
"GPBMetadata\\Google\\Protobuf\\Internal\\": "src/GPBMetadata/Google/Protobuf/Internal"
},
"files": [
"src/Google/Protobuf/descriptor.php"
]
}
}
src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php 0000644 00000043270 14641212465 0017036 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)
->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.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('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)
->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/Internal/DescriptorPool.php 0000644 00000012367 14641212465 0015622 0 ustar 00 decode($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);
}
}
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(&$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 00000021042 14641212465 0016002 0 ustar 00
* Describes a message type.
*
*
* Protobuf type google.protobuf.DescriptorProto
*/
class DescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* repeated .google.protobuf.FieldDescriptorProto field = 2;
*/
private $field;
private $has_field = false;
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 6;
*/
private $extension;
private $has_extension = false;
/**
* repeated .google.protobuf.DescriptorProto nested_type = 3;
*/
private $nested_type;
private $has_nested_type = false;
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
*/
private $enum_type;
private $has_enum_type = false;
/**
* repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
*/
private $extension_range;
private $has_extension_range = false;
/**
* repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
*/
private $oneof_decl;
private $has_oneof_decl = false;
/**
* optional .google.protobuf.MessageOptions options = 7;
*/
private $options = null;
private $has_options = false;
/**
* 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.
*
*
* repeated string reserved_name = 10;
*/
private $reserved_name;
private $has_reserved_name = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* repeated .google.protobuf.FieldDescriptorProto field = 2;
*/
public function getField()
{
return $this->field;
}
/**
* repeated .google.protobuf.FieldDescriptorProto field = 2;
*/
public function setField(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->field = $var;
$this->has_field = true;
}
public function hasField()
{
return $this->has_field;
}
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 6;
*/
public function getExtension()
{
return $this->extension;
}
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 6;
*/
public function setExtension(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->extension = $var;
$this->has_extension = true;
}
public function hasExtension()
{
return $this->has_extension;
}
/**
* repeated .google.protobuf.DescriptorProto nested_type = 3;
*/
public function getNestedType()
{
return $this->nested_type;
}
/**
* repeated .google.protobuf.DescriptorProto nested_type = 3;
*/
public function setNestedType(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class);
$this->nested_type = $var;
$this->has_nested_type = true;
}
public function hasNestedType()
{
return $this->has_nested_type;
}
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
*/
public function getEnumType()
{
return $this->enum_type;
}
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
*/
public function setEnumType(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class);
$this->enum_type = $var;
$this->has_enum_type = true;
}
public function hasEnumType()
{
return $this->has_enum_type;
}
/**
* repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
*/
public function getExtensionRange()
{
return $this->extension_range;
}
/**
* repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
*/
public function setExtensionRange(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto_ExtensionRange::class);
$this->extension_range = $var;
$this->has_extension_range = true;
}
public function hasExtensionRange()
{
return $this->has_extension_range;
}
/**
* repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
*/
public function getOneofDecl()
{
return $this->oneof_decl;
}
/**
* repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
*/
public function setOneofDecl(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\OneofDescriptorProto::class);
$this->oneof_decl = $var;
$this->has_oneof_decl = true;
}
public function hasOneofDecl()
{
return $this->has_oneof_decl;
}
/**
* optional .google.protobuf.MessageOptions options = 7;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.MessageOptions options = 7;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MessageOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
/**
* repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
*/
public function getReservedRange()
{
return $this->reserved_range;
}
/**
* repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
*/
public function setReservedRange(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto_ReservedRange::class);
$this->reserved_range = $var;
$this->has_reserved_range = true;
}
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.
*
*
* repeated string reserved_name = 10;
*/
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.
*
*
* repeated string reserved_name = 10;
*/
public function setReservedName(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->reserved_name = $var;
$this->has_reserved_name = true;
}
public function hasReservedName()
{
return $this->has_reserved_name;
}
}
src/Google/Protobuf/Internal/DescriptorProto_ExtensionRange.php 0000644 00000003260 14641212465 0021015 0 ustar 00 google.protobuf.DescriptorProto.ExtensionRange
*/
class DescriptorProto_ExtensionRange extends \Google\Protobuf\Internal\Message
{
/**
* optional int32 start = 1;
*/
private $start = 0;
private $has_start = false;
/**
* optional int32 end = 2;
*/
private $end = 0;
private $has_end = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional int32 start = 1;
*/
public function getStart()
{
return $this->start;
}
/**
* optional int32 start = 1;
*/
public function setStart($var)
{
GPBUtil::checkInt32($var);
$this->start = $var;
$this->has_start = true;
}
public function hasStart()
{
return $this->has_start;
}
/**
* optional int32 end = 2;
*/
public function getEnd()
{
return $this->end;
}
/**
* optional int32 end = 2;
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
}
public function hasEnd()
{
return $this->has_end;
}
}
src/Google/Protobuf/Internal/DescriptorProto_ReservedRange.php 0000644 00000004235 14641212465 0020623 0 ustar 00
* Range of reserved tag numbers. Reserved tag numbers may not be used by
* fields or extension ranges in the same message. Reserved ranges may
* not overlap.
*
*
* Protobuf type google.protobuf.DescriptorProto.ReservedRange
*/
class DescriptorProto_ReservedRange extends \Google\Protobuf\Internal\Message
{
/**
*
* Inclusive.
*
*
* optional int32 start = 1;
*/
private $start = 0;
private $has_start = false;
/**
*
* Exclusive.
*
*
* optional int32 end = 2;
*/
private $end = 0;
private $has_end = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
*
* Inclusive.
*
*
* optional int32 start = 1;
*/
public function getStart()
{
return $this->start;
}
/**
*
* Inclusive.
*
*
* optional int32 start = 1;
*/
public function setStart($var)
{
GPBUtil::checkInt32($var);
$this->start = $var;
$this->has_start = true;
}
public function hasStart()
{
return $this->has_start;
}
/**
*
* Exclusive.
*
*
* optional int32 end = 2;
*/
public function getEnd()
{
return $this->end;
}
/**
*
* Exclusive.
*
*
* optional int32 end = 2;
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
}
public function hasEnd()
{
return $this->has_end;
}
}
src/Google/Protobuf/Internal/EnumBuilderContext.php 0000644 00000004546 14641212465 0016432 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();
$this->descriptor->addValue($number, $value);
return $this;
}
public function finalizeToPool()
{
$this->pool->addEnumDescriptor($this->descriptor);
}
}
src/Google/Protobuf/Internal/EnumDescriptorProto.php 0000644 00000005144 14641212465 0016634 0 ustar 00
* Describes an enum type.
*
*
* Protobuf type google.protobuf.EnumDescriptorProto
*/
class EnumDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* repeated .google.protobuf.EnumValueDescriptorProto value = 2;
*/
private $value;
private $has_value = false;
/**
* optional .google.protobuf.EnumOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* repeated .google.protobuf.EnumValueDescriptorProto value = 2;
*/
public function getValue()
{
return $this->value;
}
/**
* repeated .google.protobuf.EnumValueDescriptorProto value = 2;
*/
public function setValue(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumValueDescriptorProto::class);
$this->value = $var;
$this->has_value = true;
}
public function hasValue()
{
return $this->has_value;
}
/**
* optional .google.protobuf.EnumOptions options = 3;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.EnumOptions options = 3;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/EnumOptions.php 0000644 00000010330 14641212465 0015116 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.
*
*
* 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.
*
*
* optional bool deprecated = 3 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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.
*
*
* optional bool allow_alias = 2;
*/
public function getAllowAlias()
{
return $this->allow_alias;
}
/**
*
* Set this option to true to allow mapping different tag names to the same
* value.
*
*
* optional bool allow_alias = 2;
*/
public function setAllowAlias($var)
{
GPBUtil::checkBool($var);
$this->allow_alias = $var;
$this->has_allow_alias = true;
}
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/EnumValueDescriptorProto.php 0000644 00000004700 14641212465 0017626 0 ustar 00
* Describes a value within an enum.
*
*
* Protobuf type google.protobuf.EnumValueDescriptorProto
*/
class EnumValueDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* optional int32 number = 2;
*/
private $number = 0;
private $has_number = false;
/**
* optional .google.protobuf.EnumValueOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* optional int32 number = 2;
*/
public function getNumber()
{
return $this->number;
}
/**
* optional int32 number = 2;
*/
public function setNumber($var)
{
GPBUtil::checkInt32($var);
$this->number = $var;
$this->has_number = true;
}
public function hasNumber()
{
return $this->has_number;
}
/**
* optional .google.protobuf.EnumValueOptions options = 3;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.EnumValueOptions options = 3;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumValueOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/EnumValueOptions.php 0000644 00000006472 14641212465 0016127 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.
*
*
* optional bool deprecated = 1 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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.
*
*
* optional bool deprecated = 1 [default = false];
*/
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.
*
*
* optional bool deprecated = 1 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FieldDescriptorProto.php 0000644 00000026301 14641212465 0016751 0 ustar 00
* Describes a field within a message.
*
*
* Protobuf type google.protobuf.FieldDescriptorProto
*/
class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* optional int32 number = 3;
*/
private $number = 0;
private $has_number = false;
/**
* 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.
*
*
* 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).
*
*
* 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.
*
*
* 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?
*
*
* 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.
*
*
* 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.
*
*
* optional string json_name = 10;
*/
private $json_name = '';
private $has_json_name = false;
/**
* optional .google.protobuf.FieldOptions options = 8;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* optional int32 number = 3;
*/
public function getNumber()
{
return $this->number;
}
/**
* optional int32 number = 3;
*/
public function setNumber($var)
{
GPBUtil::checkInt32($var);
$this->number = $var;
$this->has_number = true;
}
public function hasNumber()
{
return $this->has_number;
}
/**
* optional .google.protobuf.FieldDescriptorProto.Label label = 4;
*/
public function getLabel()
{
return $this->label;
}
/**
* optional .google.protobuf.FieldDescriptorProto.Label label = 4;
*/
public function setLabel($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto_Label::class);
$this->label = $var;
$this->has_label = true;
}
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.
*
*
* optional .google.protobuf.FieldDescriptorProto.Type type = 5;
*/
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.
*
*
* optional .google.protobuf.FieldDescriptorProto.Type type = 5;
*/
public function setType($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto_Type::class);
$this->type = $var;
$this->has_type = true;
}
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).
*
*
* optional string type_name = 6;
*/
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).
*
*
* optional string type_name = 6;
*/
public function setTypeName($var)
{
GPBUtil::checkString($var, True);
$this->type_name = $var;
$this->has_type_name = true;
}
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.
*
*
* optional string extendee = 2;
*/
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.
*
*
* optional string extendee = 2;
*/
public function setExtendee($var)
{
GPBUtil::checkString($var, True);
$this->extendee = $var;
$this->has_extendee = true;
}
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?
*
*
* optional string default_value = 7;
*/
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?
*
*
* optional string default_value = 7;
*/
public function setDefaultValue($var)
{
GPBUtil::checkString($var, True);
$this->default_value = $var;
$this->has_default_value = true;
}
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.
*
*
* optional int32 oneof_index = 9;
*/
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.
*
*
* optional int32 oneof_index = 9;
*/
public function setOneofIndex($var)
{
GPBUtil::checkInt32($var);
$this->oneof_index = $var;
$this->has_oneof_index = true;
}
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.
*
*
* optional string json_name = 10;
*/
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.
*
*
* optional string json_name = 10;
*/
public function setJsonName($var)
{
GPBUtil::checkString($var, True);
$this->json_name = $var;
$this->has_json_name = true;
}
public function hasJsonName()
{
return $this->has_json_name;
}
/**
* optional .google.protobuf.FieldOptions options = 8;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.FieldOptions options = 8;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FieldOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/FieldDescriptorProto_Label.php 0000644 00000001115 14641212465 0020044 0 ustar 00 google.protobuf.FieldDescriptorProto.Label
*/
namespace Google\Protobuf\Internal;
class FieldDescriptorProto_Label
{
/**
*
* 0 is reserved for errors
*
*
* LABEL_OPTIONAL = 1;
*/
const LABEL_OPTIONAL = 1;
/**
* LABEL_REQUIRED = 2;
*/
const LABEL_REQUIRED = 2;
/**
* LABEL_REPEATED = 3;
*/
const LABEL_REPEATED = 3;
}
src/Google/Protobuf/Internal/FieldDescriptorProto_Type.php 0000644 00000004620 14641212465 0017752 0 ustar 00 google.protobuf.FieldDescriptorProto.Type
*/
namespace Google\Protobuf\Internal;
class FieldDescriptorProto_Type
{
/**
*
* 0 is reserved for errors.
* Order is weird for historical reasons.
*
*
* TYPE_DOUBLE = 1;
*/
const TYPE_DOUBLE = 1;
/**
* TYPE_FLOAT = 2;
*/
const TYPE_FLOAT = 2;
/**
*
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
* negative values are likely.
*
*
* TYPE_INT64 = 3;
*/
const TYPE_INT64 = 3;
/**
* TYPE_UINT64 = 4;
*/
const TYPE_UINT64 = 4;
/**
*
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
* negative values are likely.
*
*
* TYPE_INT32 = 5;
*/
const TYPE_INT32 = 5;
/**
* TYPE_FIXED64 = 6;
*/
const TYPE_FIXED64 = 6;
/**
* TYPE_FIXED32 = 7;
*/
const TYPE_FIXED32 = 7;
/**
* TYPE_BOOL = 8;
*/
const TYPE_BOOL = 8;
/**
* TYPE_STRING = 9;
*/
const TYPE_STRING = 9;
/**
*
* Tag-delimited aggregate.
*
*
* TYPE_GROUP = 10;
*/
const TYPE_GROUP = 10;
/**
*
* Length-delimited aggregate.
*
*
* TYPE_MESSAGE = 11;
*/
const TYPE_MESSAGE = 11;
/**
*
* New in version 2.
*
*
* TYPE_BYTES = 12;
*/
const TYPE_BYTES = 12;
/**
* TYPE_UINT32 = 13;
*/
const TYPE_UINT32 = 13;
/**
* TYPE_ENUM = 14;
*/
const TYPE_ENUM = 14;
/**
* TYPE_SFIXED32 = 15;
*/
const TYPE_SFIXED32 = 15;
/**
* TYPE_SFIXED64 = 16;
*/
const TYPE_SFIXED64 = 16;
/**
*
* Uses ZigZag encoding.
*
*
* TYPE_SINT32 = 17;
*/
const TYPE_SINT32 = 17;
/**
*
* Uses ZigZag encoding.
*
*
* TYPE_SINT64 = 18;
*/
const TYPE_SINT64 = 18;
}
src/Google/Protobuf/Internal/FieldOptions.php 0000644 00000040123 14641212465 0015240 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!
*
*
* 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.
*
*
* 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). By default these types are
* represented as JavaScript strings. This avoids loss of precision that can
* happen when a large value is converted to a floating point JavaScript
* numbers. Specifying JS_NUMBER for the jstype causes the generated
* JavaScript code to use the JavaScript "number" type instead of strings.
* This option is an enum to permit additional types to be added,
* e.g. goog.math.Integer.
*
*
* 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.
*
*
* 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.
*
*
* optional bool deprecated = 3 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
*
* For Google-internal migration only. Do not use.
*
*
* optional bool weak = 10 [default = false];
*/
private $weak = false;
private $has_weak = false;
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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!
*
*
* optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
*/
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!
*
*
* optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
*/
public function setCtype($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions_CType::class);
$this->ctype = $var;
$this->has_ctype = true;
}
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.
*
*
* optional bool packed = 2;
*/
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.
*
*
* optional bool packed = 2;
*/
public function setPacked($var)
{
GPBUtil::checkBool($var);
$this->packed = $var;
$this->has_packed = true;
}
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). By default these types are
* represented as JavaScript strings. This avoids loss of precision that can
* happen when a large value is converted to a floating point JavaScript
* numbers. Specifying JS_NUMBER for the jstype causes the generated
* JavaScript code to use the JavaScript "number" type instead of strings.
* This option is an enum to permit additional types to be added,
* e.g. goog.math.Integer.
*
*
* optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
*/
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). By default these types are
* represented as JavaScript strings. This avoids loss of precision that can
* happen when a large value is converted to a floating point JavaScript
* numbers. Specifying JS_NUMBER for the jstype causes the generated
* JavaScript code to use the JavaScript "number" type instead of strings.
* This option is an enum to permit additional types to be added,
* e.g. goog.math.Integer.
*
*
* optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
*/
public function setJstype($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions_JSType::class);
$this->jstype = $var;
$this->has_jstype = true;
}
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.
*
*
* optional bool lazy = 5 [default = false];
*/
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.
*
*
* optional bool lazy = 5 [default = false];
*/
public function setLazy($var)
{
GPBUtil::checkBool($var);
$this->lazy = $var;
$this->has_lazy = true;
}
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
*
* For Google-internal migration only. Do not use.
*
*
* optional bool weak = 10 [default = false];
*/
public function getWeak()
{
return $this->weak;
}
/**
*
* For Google-internal migration only. Do not use.
*
*
* optional bool weak = 10 [default = false];
*/
public function setWeak($var)
{
GPBUtil::checkBool($var);
$this->weak = $var;
$this->has_weak = true;
}
public function hasWeak()
{
return $this->has_weak;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FieldOptions_CType.php 0000644 00000001012 14641212465 0016336 0 ustar 00 google.protobuf.FieldOptions.CType
*/
namespace Google\Protobuf\Internal;
class FieldOptions_CType
{
/**
*
* Default mode.
*
*
* STRING = 0;
*/
const STRING = 0;
/**
* CORD = 1;
*/
const CORD = 1;
/**
* STRING_PIECE = 2;
*/
const STRING_PIECE = 2;
}
src/Google/Protobuf/Internal/FieldOptions_JSType.php 0000644 00000001240 14641212465 0016473 0 ustar 00 google.protobuf.FieldOptions.JSType
*/
namespace Google\Protobuf\Internal;
class FieldOptions_JSType
{
/**
*
* Use the default type.
*
*
* JS_NORMAL = 0;
*/
const JS_NORMAL = 0;
/**
*
* Use JavaScript strings.
*
*
* JS_STRING = 1;
*/
const JS_STRING = 1;
/**
*
* Use JavaScript numbers.
*
*
* JS_NUMBER = 2;
*/
const JS_NUMBER = 2;
}
src/Google/Protobuf/Internal/FileDescriptorProto.php 0000644 00000027374 14641212465 0016620 0 ustar 00
* Describes a complete .proto file.
*
*
* Protobuf type google.protobuf.FileDescriptorProto
*/
class FileDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
*
* file name, relative to root of source tree
*
*
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
*
* e.g. "foo", "foo.bar", etc.
*
*
* optional string package = 2;
*/
private $package = '';
private $has_package = false;
/**
*
* Names of files imported by this file.
*
*
* repeated string dependency = 3;
*/
private $dependency;
private $has_dependency = false;
/**
*
* Indexes of the public imported files in the dependency list above.
*
*
* 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.
*
*
* repeated int32 weak_dependency = 11;
*/
private $weak_dependency;
private $has_weak_dependency = false;
/**
*
* All top-level definitions in this file.
*
*
* repeated .google.protobuf.DescriptorProto message_type = 4;
*/
private $message_type;
private $has_message_type = false;
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
*/
private $enum_type;
private $has_enum_type = false;
/**
* repeated .google.protobuf.ServiceDescriptorProto service = 6;
*/
private $service;
private $has_service = false;
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 7;
*/
private $extension;
private $has_extension = false;
/**
* 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.
*
*
* 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".
*
*
* 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
*
*
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
*
* file name, relative to root of source tree
*
*
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
*
* e.g. "foo", "foo.bar", etc.
*
*
* optional string package = 2;
*/
public function getPackage()
{
return $this->package;
}
/**
*
* e.g. "foo", "foo.bar", etc.
*
*
* optional string package = 2;
*/
public function setPackage($var)
{
GPBUtil::checkString($var, True);
$this->package = $var;
$this->has_package = true;
}
public function hasPackage()
{
return $this->has_package;
}
/**
*
* Names of files imported by this file.
*
*
* repeated string dependency = 3;
*/
public function getDependency()
{
return $this->dependency;
}
/**
*
* Names of files imported by this file.
*
*
* repeated string dependency = 3;
*/
public function setDependency(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->dependency = $var;
$this->has_dependency = true;
}
public function hasDependency()
{
return $this->has_dependency;
}
/**
*
* Indexes of the public imported files in the dependency list above.
*
*
* repeated int32 public_dependency = 10;
*/
public function getPublicDependency()
{
return $this->public_dependency;
}
/**
*
* Indexes of the public imported files in the dependency list above.
*
*
* repeated int32 public_dependency = 10;
*/
public function setPublicDependency(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->public_dependency = $var;
$this->has_public_dependency = true;
}
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.
*
*
* repeated int32 weak_dependency = 11;
*/
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.
*
*
* repeated int32 weak_dependency = 11;
*/
public function setWeakDependency(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->weak_dependency = $var;
$this->has_weak_dependency = true;
}
public function hasWeakDependency()
{
return $this->has_weak_dependency;
}
/**
*
* All top-level definitions in this file.
*
*
* repeated .google.protobuf.DescriptorProto message_type = 4;
*/
public function getMessageType()
{
return $this->message_type;
}
/**
*
* All top-level definitions in this file.
*
*
* repeated .google.protobuf.DescriptorProto message_type = 4;
*/
public function setMessageType(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class);
$this->message_type = $var;
$this->has_message_type = true;
}
public function hasMessageType()
{
return $this->has_message_type;
}
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
*/
public function getEnumType()
{
return $this->enum_type;
}
/**
* repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
*/
public function setEnumType(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class);
$this->enum_type = $var;
$this->has_enum_type = true;
}
public function hasEnumType()
{
return $this->has_enum_type;
}
/**
* repeated .google.protobuf.ServiceDescriptorProto service = 6;
*/
public function getService()
{
return $this->service;
}
/**
* repeated .google.protobuf.ServiceDescriptorProto service = 6;
*/
public function setService(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\ServiceDescriptorProto::class);
$this->service = $var;
$this->has_service = true;
}
public function hasService()
{
return $this->has_service;
}
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 7;
*/
public function getExtension()
{
return $this->extension;
}
/**
* repeated .google.protobuf.FieldDescriptorProto extension = 7;
*/
public function setExtension(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class);
$this->extension = $var;
$this->has_extension = true;
}
public function hasExtension()
{
return $this->has_extension;
}
/**
* optional .google.protobuf.FileOptions options = 8;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.FileOptions options = 8;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FileOptions::class);
$this->options = $var;
$this->has_options = true;
}
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.
*
*
* optional .google.protobuf.SourceCodeInfo source_code_info = 9;
*/
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.
*
*
* optional .google.protobuf.SourceCodeInfo source_code_info = 9;
*/
public function setSourceCodeInfo(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\SourceCodeInfo::class);
$this->source_code_info = $var;
$this->has_source_code_info = true;
}
public function hasSourceCodeInfo()
{
return $this->has_source_code_info;
}
/**
*
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*
*
* optional string syntax = 12;
*/
public function getSyntax()
{
return $this->syntax;
}
/**
*
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*
*
* optional string syntax = 12;
*/
public function setSyntax($var)
{
GPBUtil::checkString($var, True);
$this->syntax = $var;
$this->has_syntax = true;
}
public function hasSyntax()
{
return $this->has_syntax;
}
}
src/Google/Protobuf/Internal/FileDescriptorSet.php 0000644 00000002705 14641212465 0016237 0 ustar 00
* The protocol compiler can output a FileDescriptorSet containing the .proto
* files it parses.
*
*
* Protobuf type google.protobuf.FileDescriptorSet
*/
class FileDescriptorSet extends \Google\Protobuf\Internal\Message
{
/**
* repeated .google.protobuf.FileDescriptorProto file = 1;
*/
private $file;
private $has_file = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* repeated .google.protobuf.FileDescriptorProto file = 1;
*/
public function getFile()
{
return $this->file;
}
/**
* repeated .google.protobuf.FileDescriptorProto file = 1;
*/
public function setFile(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FileDescriptorProto::class);
$this->file = $var;
$this->has_file = true;
}
public function hasFile()
{
return $this->has_file;
}
}
src/Google/Protobuf/Internal/FileOptions.php 0000644 00000056523 14641212465 0015107 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.
*
*
* 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).
*
*
* 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.
*
*
* optional bool java_multiple_files = 10 [default = false];
*/
private $java_multiple_files = false;
private $has_java_multiple_files = false;
/**
*
* This option does nothing.
*
*
* 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.
*
*
* optional bool java_string_check_utf8 = 27 [default = false];
*/
private $java_string_check_utf8 = false;
private $has_java_string_check_utf8 = false;
/**
* 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.
*
*
* 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.
*
*
* optional bool cc_generic_services = 16 [default = false];
*/
private $cc_generic_services = false;
private $has_cc_generic_services = false;
/**
* optional bool java_generic_services = 17 [default = false];
*/
private $java_generic_services = false;
private $has_java_generic_services = false;
/**
* optional bool py_generic_services = 18 [default = false];
*/
private $py_generic_services = false;
private $has_py_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.
*
*
* 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++.
*
*
* 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.
*
*
* optional string objc_class_prefix = 36;
*/
private $objc_class_prefix = '';
private $has_objc_class_prefix = false;
/**
*
* Namespace for generated classes; defaults to the package.
*
*
* 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.
*
*
* optional string swift_prefix = 39;
*/
private $swift_prefix = '';
private $has_swift_prefix = false;
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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.
*
*
* optional string java_package = 1;
*/
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.
*
*
* optional string java_package = 1;
*/
public function setJavaPackage($var)
{
GPBUtil::checkString($var, True);
$this->java_package = $var;
$this->has_java_package = true;
}
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).
*
*
* optional string java_outer_classname = 8;
*/
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).
*
*
* optional string java_outer_classname = 8;
*/
public function setJavaOuterClassname($var)
{
GPBUtil::checkString($var, True);
$this->java_outer_classname = $var;
$this->has_java_outer_classname = true;
}
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.
*
*
* optional bool java_multiple_files = 10 [default = false];
*/
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.
*
*
* optional bool java_multiple_files = 10 [default = false];
*/
public function setJavaMultipleFiles($var)
{
GPBUtil::checkBool($var);
$this->java_multiple_files = $var;
$this->has_java_multiple_files = true;
}
public function hasJavaMultipleFiles()
{
return $this->has_java_multiple_files;
}
/**
*
* This option does nothing.
*
*
* optional bool java_generate_equals_and_hash = 20 [deprecated = true];
*/
public function getJavaGenerateEqualsAndHash()
{
return $this->java_generate_equals_and_hash;
}
/**
*
* This option does nothing.
*
*
* optional bool java_generate_equals_and_hash = 20 [deprecated = true];
*/
public function setJavaGenerateEqualsAndHash($var)
{
GPBUtil::checkBool($var);
$this->java_generate_equals_and_hash = $var;
$this->has_java_generate_equals_and_hash = true;
}
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.
*
*
* optional bool java_string_check_utf8 = 27 [default = false];
*/
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.
*
*
* optional bool java_string_check_utf8 = 27 [default = false];
*/
public function setJavaStringCheckUtf8($var)
{
GPBUtil::checkBool($var);
$this->java_string_check_utf8 = $var;
$this->has_java_string_check_utf8 = true;
}
public function hasJavaStringCheckUtf8()
{
return $this->has_java_string_check_utf8;
}
/**
* optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
*/
public function getOptimizeFor()
{
return $this->optimize_for;
}
/**
* optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
*/
public function setOptimizeFor($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FileOptions_OptimizeMode::class);
$this->optimize_for = $var;
$this->has_optimize_for = true;
}
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.
*
*
* optional string go_package = 11;
*/
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.
*
*
* optional string go_package = 11;
*/
public function setGoPackage($var)
{
GPBUtil::checkString($var, True);
$this->go_package = $var;
$this->has_go_package = true;
}
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.
*
*
* optional bool cc_generic_services = 16 [default = false];
*/
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.
*
*
* optional bool cc_generic_services = 16 [default = false];
*/
public function setCcGenericServices($var)
{
GPBUtil::checkBool($var);
$this->cc_generic_services = $var;
$this->has_cc_generic_services = true;
}
public function hasCcGenericServices()
{
return $this->has_cc_generic_services;
}
/**
* optional bool java_generic_services = 17 [default = false];
*/
public function getJavaGenericServices()
{
return $this->java_generic_services;
}
/**
* optional bool java_generic_services = 17 [default = false];
*/
public function setJavaGenericServices($var)
{
GPBUtil::checkBool($var);
$this->java_generic_services = $var;
$this->has_java_generic_services = true;
}
public function hasJavaGenericServices()
{
return $this->has_java_generic_services;
}
/**
* optional bool py_generic_services = 18 [default = false];
*/
public function getPyGenericServices()
{
return $this->py_generic_services;
}
/**
* optional bool py_generic_services = 18 [default = false];
*/
public function setPyGenericServices($var)
{
GPBUtil::checkBool($var);
$this->py_generic_services = $var;
$this->has_py_generic_services = true;
}
public function hasPyGenericServices()
{
return $this->has_py_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.
*
*
* optional bool deprecated = 23 [default = false];
*/
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.
*
*
* optional bool deprecated = 23 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
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++.
*
*
* optional bool cc_enable_arenas = 31 [default = false];
*/
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++.
*
*
* optional bool cc_enable_arenas = 31 [default = false];
*/
public function setCcEnableArenas($var)
{
GPBUtil::checkBool($var);
$this->cc_enable_arenas = $var;
$this->has_cc_enable_arenas = true;
}
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.
*
*
* optional string objc_class_prefix = 36;
*/
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.
*
*
* optional string objc_class_prefix = 36;
*/
public function setObjcClassPrefix($var)
{
GPBUtil::checkString($var, True);
$this->objc_class_prefix = $var;
$this->has_objc_class_prefix = true;
}
public function hasObjcClassPrefix()
{
return $this->has_objc_class_prefix;
}
/**
*
* Namespace for generated classes; defaults to the package.
*
*
* optional string csharp_namespace = 37;
*/
public function getCsharpNamespace()
{
return $this->csharp_namespace;
}
/**
*
* Namespace for generated classes; defaults to the package.
*
*
* optional string csharp_namespace = 37;
*/
public function setCsharpNamespace($var)
{
GPBUtil::checkString($var, True);
$this->csharp_namespace = $var;
$this->has_csharp_namespace = true;
}
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.
*
*
* optional string swift_prefix = 39;
*/
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.
*
*
* optional string swift_prefix = 39;
*/
public function setSwiftPrefix($var)
{
GPBUtil::checkString($var, True);
$this->swift_prefix = $var;
$this->has_swift_prefix = true;
}
public function hasSwiftPrefix()
{
return $this->has_swift_prefix;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/FileOptions_OptimizeMode.php 0000644 00000001444 14641212465 0017564 0 ustar 00
* Generated classes can be optimized for speed or code size.
*
*
* Protobuf enum google.protobuf.FileOptions.OptimizeMode
*/
namespace Google\Protobuf\Internal;
class FileOptions_OptimizeMode
{
/**
*
* Generate complete code for parsing, serialization,
*
*
* SPEED = 1;
*/
const SPEED = 1;
/**
*
* etc.
*
*
* CODE_SIZE = 2;
*/
const CODE_SIZE = 2;
/**
*
* Generate code using MessageLite and the lite runtime.
*
*
* LITE_RUNTIME = 3;
*/
const LITE_RUNTIME = 3;
}
src/Google/Protobuf/Internal/GPBLabel.php 0000644 00000003403 14641212465 0014211 0 ustar 00 0) {
$low = (int) bcsub($low, 4294967296);
} else {
$low = (int) $low;
}
if ($isNeg) {
$high = ~$high;
$low = ~$low;
$low++;
if (!$low) {
$high++;
}
}
if ($trim) {
$high = 0;
}
}
public static function checkString(&$var, $check_utf8)
{
if (is_array($var) || is_object($var)) {
trigger_error("Expect string.", E_USER_ERROR);
return;
}
if (!is_string($var)) {
$var = strval($var);
}
if ($check_utf8 && !preg_match('//u', $var)) {
trigger_error("Expect utf-8 encoding.", E_USER_ERROR);
return;
}
}
public static function checkEnum(&$var)
{
static::checkInt32($var);
}
public static function checkInt32(&$var)
{
if (is_numeric($var)) {
$var = intval($var);
} else {
trigger_error("Expect integer.", E_USER_ERROR);
}
}
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 {
trigger_error("Expect integer.", E_USER_ERROR);
}
}
public static function checkInt64(&$var)
{
if (is_numeric($var)) {
if (PHP_INT_SIZE == 8) {
$var = intval($var);
} else {
$var = bcdiv($var, 1, 0);
}
} else {
trigger_error("Expect integer.", E_USER_ERROR);
}
}
public static function checkUint64(&$var)
{
if (is_numeric($var)) {
if (PHP_INT_SIZE == 8) {
$var = intval($var);
} else {
$var = bcdiv($var, 1, 0);
}
} else {
trigger_error("Expect integer.", E_USER_ERROR);
}
}
public static function checkFloat(&$var)
{
if (is_float($var) || is_numeric($var)) {
$var = floatval($var);
} else {
trigger_error("Expect float.", E_USER_ERROR);
}
}
public static function checkDouble(&$var)
{
if (is_float($var) || is_numeric($var)) {
$var = floatval($var);
} else {
trigger_error("Expect float.", E_USER_ERROR);
}
}
public static function checkBool(&$var)
{
if (is_array($var) || is_object($var)) {
trigger_error("Expect boolean.", E_USER_ERROR);
return;
}
$var = boolval($var);
}
public static function checkMessage(&$var, $klass)
{
if (!$var instanceof $klass && !is_null($var)) {
trigger_error("Expect message.", E_USER_ERROR);
}
}
public static function checkRepeatedField(&$var, $type, $klass = null)
{
if (!$var instanceof RepeatedField) {
trigger_error("Expect repeated field.", E_USER_ERROR);
}
if ($var->getType() != $type) {
trigger_error(
"Expect repeated field of different type.",
E_USER_ERROR);
}
if ($var->getType() === GPBType::MESSAGE &&
$var->getClass() !== $klass) {
trigger_error(
"Expect repeated field of different message.",
E_USER_ERROR);
}
}
public static function Int64($value)
{
return new Int64($value);
}
public static function Uint64($value)
{
return new Uint64($value);
}
}
src/Google/Protobuf/Internal/GPBWire.php 0000644 00000042225 14641212465 0014105 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)
{
// Fill high 32 bits.
if (PHP_INT_SIZE === 8) {
$int32 |= ((($int32 << 32) >> 31) & (0xFFFFFFFF << 32));
}
$uint32 = ($int32 << 1) ^ ($int32 >> 31);
// Fill high 32 bits.
if (PHP_INT_SIZE === 8) {
$uint32 |= ((($uint32 << 32) >> 31) & (0xFFFFFFFF << 32));
}
return $uint32;
}
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)
{
return $input->readVarint64($value);
}
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)
{
return $input->readLittleEndian64($value);
}
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);
}
public static function writeInt64(&$output, $value)
{
return $output->writeVarint64($value);
}
public static function writeUint32(&$output, $value)
{
return $output->writeVarint32($value);
}
public static function writeUint64(&$output, $value)
{
return $output->writeVarint64($value);
}
public static function writeSint32(&$output, $value)
{
$value = GPBWire::zigZagEncode32($value);
return $output->writeVarint64($value);
}
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);
} else {
return $output->writeVarint32(0);
}
}
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)) {
return false;
}
return $output->writeRaw($value, $size);
}
public static function writeMessage(&$output, $value)
{
$size = $value->byteSize();
if (!$output->writeVarint32($size)) {
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)
{
if ($value < 0) {
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) {
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 (!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/GeneratedCodeInfo.php 0000644 00000004174 14641212465 0016154 0 ustar 00
* Describes the relationship between generated code and its original source
* file. A GeneratedCodeInfo message is associated with only one generated
* source file, but may contain references to different source .proto files.
*
*
* Protobuf type 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.
*
*
* 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.
*
*
* repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
*/
public function getAnnotation()
{
return $this->annotation;
}
/**
*
* An Annotation connects some span of text in generated code to an element
* of its generating .proto file.
*
*
* repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
*/
public function setAnnotation(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation::class);
$this->annotation = $var;
$this->has_annotation = true;
}
public function hasAnnotation()
{
return $this->has_annotation;
}
}
src/Google/Protobuf/Internal/GeneratedCodeInfo_Annotation.php 0000644 00000011566 14641212465 0020351 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.
*
*
* repeated int32 path = 1 [packed = true];
*/
private $path;
private $has_path = false;
/**
*
* Identifies the filesystem path to the original source .proto.
*
*
* 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.
*
*
* 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).
*
*
* 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.
*
*
* repeated int32 path = 1 [packed = true];
*/
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.
*
*
* repeated int32 path = 1 [packed = true];
*/
public function setPath(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->path = $var;
$this->has_path = true;
}
public function hasPath()
{
return $this->has_path;
}
/**
*
* Identifies the filesystem path to the original source .proto.
*
*
* optional string source_file = 2;
*/
public function getSourceFile()
{
return $this->source_file;
}
/**
*
* Identifies the filesystem path to the original source .proto.
*
*
* optional string source_file = 2;
*/
public function setSourceFile($var)
{
GPBUtil::checkString($var, True);
$this->source_file = $var;
$this->has_source_file = true;
}
public function hasSourceFile()
{
return $this->has_source_file;
}
/**
*
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*
*
* optional int32 begin = 3;
*/
public function getBegin()
{
return $this->begin;
}
/**
*
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*
*
* optional int32 begin = 3;
*/
public function setBegin($var)
{
GPBUtil::checkInt32($var);
$this->begin = $var;
$this->has_begin = true;
}
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).
*
*
* optional int32 end = 4;
*/
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).
*
*
* optional int32 end = 4;
*/
public function setEnd($var)
{
GPBUtil::checkInt32($var);
$this->end = $var;
$this->has_end = true;
}
public function hasEnd()
{
return $this->has_end;
}
}
src/Google/Protobuf/Internal/InputStream.php 0000644 00000030035 14641212465 0015115 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;
}
private 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 = combineInt32ToInt64($high, $low);
} 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 = 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
*/
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) {
$this->current_limit = $current_position + $byte_limit;
} else {
// Negative or overflow.
$this->current_limit = PHP_INT_MAX;
}
// We need to enforce all limits, not just the new one, so if the previous
// limit was before the new requested limit, we continue to enforce the
// previous limit.
$this->current_limit = min($this->current_limit, $old_limit);
$this->recomputeBufferLimits();
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/MapEntry.php 0000644 00000004050 14641212465 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 00000021136 14641212465 0014325 0 ustar 00 container = $container;
}
/**
* 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()
{
return key($this->container);
}
/**
* 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;
}
}
/**
* @ignore
*/
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:
var_dump($key_type);
trigger_error(
"Given type cannot be map key.",
E_USER_ERROR);
break;
}
}
/**
* MapField is used by generated protocol message classes to manipulate map
* fields. It can be used like native PHP array.
*/
class MapField implements \ArrayAccess, \IteratorAggregate, \Countable
{
/**
* @ignore
*/
private $container;
/**
* @ignore
*/
private $key_type;
/**
* @ignore
*/
private $value_type;
/**
* @ignore
*/
private $value_klass;
/**
* Constructs an instance of MapField.
*
* @param long $key_type Type of the stored key element.
* @param long $value_type Type of the stored value element.
* @param string $klass Message/Enum class name of value instance
* (message/enum fields only).
* @ignore
*/
public function __construct($key_type, $value_type, $klass = null)
{
$this->container = [];
$this->key_type = $key_type;
$this->value_type = $value_type;
$this->klass = $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)
{
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:
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)
{
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)
{
checkKey($this->key_type, $key);
return isset($this->container[$key]);
}
/**
* @ignore
*/
public function getIterator()
{
return new MapFieldIter($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/Message.php 0000644 00000054177 14641212465 0014243 0 ustar 00 desc = $desc;
return;
}
$pool = DescriptorPool::getGeneratedPool();
$this->desc = $pool->getDescriptorByClassName(get_class($this));
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);
}
/**
* @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 parseFieldFromStreamNoTag($input, $field, &$value)
{
switch ($field->getType()) {
case GPBType::DOUBLE:
if (!GPBWire::readDouble($input, $value)) {
return false;
}
break;
case GPBType::FLOAT:
if (!GPBWire::readFloat($input, $value)) {
return false;
}
break;
case GPBType::INT64:
if (!GPBWire::readInt64($input, $value)) {
return false;
}
break;
case GPBType::UINT64:
if (!GPBWire::readUint64($input, $value)) {
return false;
}
break;
case GPBType::INT32:
if (!GPBWire::readInt32($input, $value)) {
return false;
}
break;
case GPBType::FIXED64:
if (!GPBWire::readFixed64($input, $value)) {
return false;
}
break;
case GPBType::FIXED32:
if (!GPBWire::readFixed32($input, $value)) {
return false;
}
break;
case GPBType::BOOL:
if (!GPBWire::readBool($input, $value)) {
return false;
}
break;
case GPBType::STRING:
// TODO(teboring): Add utf-8 check.
if (!GPBWire::readString($input, $value)) {
return false;
}
break;
case GPBType::GROUP:
echo "GROUP\xA";
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)) {
return false;
}
break;
case GPBType::BYTES:
if (!GPBWire::readString($input, $value)) {
return false;
}
break;
case GPBType::UINT32:
if (!GPBWire::readUint32($input, $value)) {
return false;
}
break;
case GPBType::ENUM:
// TODO(teboring): Check unknown enum value.
if (!GPBWire::readInt32($input, $value)) {
return false;
}
break;
case GPBType::SFIXED32:
if (!GPBWire::readSfixed32($input, $value)) {
return false;
}
break;
case GPBType::SFIXED64:
if (!GPBWire::readSfixed64($input, $value)) {
return false;
}
break;
case GPBType::SINT32:
if (!GPBWire::readSint32($input, $value)) {
return false;
}
break;
case GPBType::SINT64:
if (!GPBWire::readSint64($input, $value)) {
return false;
}
break;
default:
user_error("Unsupported type.");
return false;
}
return true;
}
/**
* @ignore
*/
private function parseFieldFromStream($tag, $input, $field)
{
$value = null;
$field_type = $field->getType();
$value_format = GPBWire::UNKNOWN;
if (GPBWire::getTagWireType($tag) ===
GPBWire::getWireType($field_type)) {
$value_format = GPBWire::NORMAL_FORMAT;
} elseif ($field->isPackable() &&
GPBWire::getTagWireType($tag) ===
GPBWire::WIRETYPE_LENGTH_DELIMITED) {
$value_format = GPBWire::PACKED_FORMAT;
}
if ($value_format === GPBWire::NORMAL_FORMAT) {
if (!self::parseFieldFromStreamNoTag($input, $field, $value)) {
return false;
}
} elseif ($value_format === GPBWire::PACKED_FORMAT) {
$length = 0;
if (!GPBWire::readInt32($input, $length)) {
return false;
}
$limit = $input->pushLimit($length);
$getter = $field->getGetter();
while ($input->bytesUntilLimit() > 0) {
if (!self::parseFieldFromStreamNoTag($input, $field, $value)) {
return false;
}
$this->$getter()[] = $value;
}
$input->popLimit($limit);
return true;
} else {
return false;
}
if ($field->isMap()) {
$getter = $field->getGetter();
$this->$getter()[$value->getKey()] = $value->getValue();
} else if ($field->isRepeated()) {
$getter = $field->getGetter();
$this->$getter()[] = $value;
} else {
$setter = $field->getSetter();
$this->$setter($value);
}
return true;
}
/**
* 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 encode().
*
* @param string $data Binary protobuf data.
* @return bool Return true on success.
*/
public function decode($data)
{
$input = new InputStream($data);
$this->parseFromStream($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);
// Check whether we retrieved a known field
if ($field === NULL) {
continue;
}
if (!$this->parseFieldFromStream($tag, $input, $field)) {
return false;
}
}
}
/**
* @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)) {
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
*/
public function serializeToStream(&$output)
{
$fields = $this->desc->getField();
foreach ($fields as $field) {
if (!$this->serializeFieldToStream($output, $field)) {
return false;
}
}
return true;
}
/**
* Serialize the message to string.
* @return string Serialized binary protobuf data.
*/
public function encode()
{
$output = new OutputStream($this->byteSize());
$this->serializeToStream($output);
return $output->getData();
}
/**
* @ignore
*/
private function existField($field)
{
$getter = $field->getGetter();
$value = $this->$getter();
return $value !== $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::UINT32:
case GPBType::INT32:
case GPBType::ENUM:
$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 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;
$data_size += $this->fieldDataOnlyByteSize($key_field, $key);
$data_size += $this->fieldDataOnlyByteSize(
$value_field,
$value);
$data_size += GPBWire::tagSize($key_field);
$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
*/
public function byteSize()
{
$size = 0;
$fields = $this->desc->getField();
foreach ($fields as $field) {
$size += $this->fieldByteSize($field);
}
return $size;
}
}
src/Google/Protobuf/Internal/MessageBuilderContext.php 0000644 00000010036 14641212465 0017101 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 00000026723 14641212465 0015613 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.
*
*
* 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".
*
*
* 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.
*
*
* 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<KeyType, ValueType> 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.
*
*
* 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.
*
*
* 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.
*
*
* optional bool message_set_wire_format = 1 [default = false];
*/
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.
*
*
* optional bool message_set_wire_format = 1 [default = false];
*/
public function setMessageSetWireFormat($var)
{
GPBUtil::checkBool($var);
$this->message_set_wire_format = $var;
$this->has_message_set_wire_format = true;
}
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".
*
*
* optional bool no_standard_descriptor_accessor = 2 [default = false];
*/
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".
*
*
* optional bool no_standard_descriptor_accessor = 2 [default = false];
*/
public function setNoStandardDescriptorAccessor($var)
{
GPBUtil::checkBool($var);
$this->no_standard_descriptor_accessor = $var;
$this->has_no_standard_descriptor_accessor = true;
}
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
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.
*
*
* optional bool deprecated = 3 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
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<KeyType, ValueType> 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.
*
*
* optional bool map_entry = 7;
*/
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<KeyType, ValueType> 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.
*
*
* optional bool map_entry = 7;
*/
public function setMapEntry($var)
{
GPBUtil::checkBool($var);
$this->map_entry = $var;
$this->has_map_entry = true;
}
public function hasMapEntry()
{
return $this->has_map_entry;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/MethodDescriptorProto.php 0000644 00000013112 14641212465 0017142 0 ustar 00
* Describes a method of a service.
*
*
* Protobuf type google.protobuf.MethodDescriptorProto
*/
class MethodDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* 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.
*
*
* optional string input_type = 2;
*/
private $input_type = '';
private $has_input_type = false;
/**
* optional string output_type = 3;
*/
private $output_type = '';
private $has_output_type = false;
/**
* optional .google.protobuf.MethodOptions options = 4;
*/
private $options = null;
private $has_options = false;
/**
*
* Identifies if client streams multiple client messages
*
*
* optional bool client_streaming = 5 [default = false];
*/
private $client_streaming = false;
private $has_client_streaming = false;
/**
*
* Identifies if server streams multiple server messages
*
*
* 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();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
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.
*
*
* optional string input_type = 2;
*/
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.
*
*
* optional string input_type = 2;
*/
public function setInputType($var)
{
GPBUtil::checkString($var, True);
$this->input_type = $var;
$this->has_input_type = true;
}
public function hasInputType()
{
return $this->has_input_type;
}
/**
* optional string output_type = 3;
*/
public function getOutputType()
{
return $this->output_type;
}
/**
* optional string output_type = 3;
*/
public function setOutputType($var)
{
GPBUtil::checkString($var, True);
$this->output_type = $var;
$this->has_output_type = true;
}
public function hasOutputType()
{
return $this->has_output_type;
}
/**
* optional .google.protobuf.MethodOptions options = 4;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.MethodOptions options = 4;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MethodOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
/**
*
* Identifies if client streams multiple client messages
*
*
* optional bool client_streaming = 5 [default = false];
*/
public function getClientStreaming()
{
return $this->client_streaming;
}
/**
*
* Identifies if client streams multiple client messages
*
*
* optional bool client_streaming = 5 [default = false];
*/
public function setClientStreaming($var)
{
GPBUtil::checkBool($var);
$this->client_streaming = $var;
$this->has_client_streaming = true;
}
public function hasClientStreaming()
{
return $this->has_client_streaming;
}
/**
*
* Identifies if server streams multiple server messages
*
*
* optional bool server_streaming = 6 [default = false];
*/
public function getServerStreaming()
{
return $this->server_streaming;
}
/**
*
* Identifies if server streams multiple server messages
*
*
* optional bool server_streaming = 6 [default = false];
*/
public function setServerStreaming($var)
{
GPBUtil::checkBool($var);
$this->server_streaming = $var;
$this->has_server_streaming = true;
}
public function hasServerStreaming()
{
return $this->has_server_streaming;
}
}
src/Google/Protobuf/Internal/MethodOptions.php 0000644 00000010332 14641212465 0015434 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.
*
*
* optional bool deprecated = 33 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
* 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.
*
*
* 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.
*
*
* optional bool deprecated = 33 [default = false];
*/
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.
*
*
* optional bool deprecated = 33 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
* optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
*/
public function getIdempotencyLevel()
{
return $this->idempotency_level;
}
/**
* optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
*/
public function setIdempotencyLevel($var)
{
GPBUtil::checkEnum($var, \Google\Protobuf\Internal\MethodOptions_IdempotencyLevel::class);
$this->idempotency_level = $var;
$this->has_idempotency_level = true;
}
public function hasIdempotencyLevel()
{
return $this->has_idempotency_level;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/MethodOptions_IdempotencyLevel.php 0000644 00000001635 14641212465 0020772 0 ustar 00
* Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
* or neither? HTTP based RPC implementation may choose GET verb for safe
* methods, and PUT verb for idempotent methods instead of the default POST.
*
*
* Protobuf enum google.protobuf.MethodOptions.IdempotencyLevel
*/
namespace Google\Protobuf\Internal;
class MethodOptions_IdempotencyLevel
{
/**
* IDEMPOTENCY_UNKNOWN = 0;
*/
const IDEMPOTENCY_UNKNOWN = 0;
/**
*
* implies idempotent
*
*
* NO_SIDE_EFFECTS = 1;
*/
const NO_SIDE_EFFECTS = 1;
/**
*
* idempotent, but may have side effects
*
*
* IDEMPOTENT = 2;
*/
const IDEMPOTENT = 2;
}
src/Google/Protobuf/Internal/OneofDescriptorProto.php 0000644 00000003564 14641212465 0017002 0 ustar 00
* Describes a oneof.
*
*
* Protobuf type google.protobuf.OneofDescriptorProto
*/
class OneofDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* optional .google.protobuf.OneofOptions options = 2;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* optional .google.protobuf.OneofOptions options = 2;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.OneofOptions options = 2;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\OneofOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/OneofField.php 0000644 00000004530 14641212465 0014655 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 00000003501 14641212465 0015262 0 ustar 00 google.protobuf.OneofOptions
*/
class OneofOptions extends \Google\Protobuf\Internal\Message
{
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/OutputStream.php 0000644 00000012545 14641212465 0015324 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)
{
$bytes = str_repeat(chr(0), self::MAX_VARINT32_BYTES);
$size = self::writeVarintToArray($value, $bytes, true);
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);
}
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 {
if ($trim) {
$low = $value & 0xFFFFFFFF;
} else {
$low = $value;
}
}
while ($low >= 0x80 || $low < 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/RepeatedField.php 0000644 00000020265 14641212465 0015343 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]);
}
}
/**
* RepeatedField is used by generated protocol message classes to manipulate
* repeated fields. It can be used like native PHP array.
*/
class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable
{
/**
* @ignore
*/
private $container;
/**
* @ignore
*/
private $type;
/**
* @ignore
*/
private $klass;
/**
* Constructs an instance of RepeatedField.
*
* @param long $type Type of the stored element.
* @param string $klass Message/Enum class name (message/enum fields only).
* @ignore
*/
public function __construct($type, $klass = null)
{
$this->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:
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/ServiceDescriptorProto.php 0000644 00000005163 14641212465 0017331 0 ustar 00
* Describes a service.
*
*
* Protobuf type google.protobuf.ServiceDescriptorProto
*/
class ServiceDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* optional string name = 1;
*/
private $name = '';
private $has_name = false;
/**
* repeated .google.protobuf.MethodDescriptorProto method = 2;
*/
private $method;
private $has_method = false;
/**
* optional .google.protobuf.ServiceOptions options = 3;
*/
private $options = null;
private $has_options = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* optional string name = 1;
*/
public function getName()
{
return $this->name;
}
/**
* optional string name = 1;
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
$this->has_name = true;
}
public function hasName()
{
return $this->has_name;
}
/**
* repeated .google.protobuf.MethodDescriptorProto method = 2;
*/
public function getMethod()
{
return $this->method;
}
/**
* repeated .google.protobuf.MethodDescriptorProto method = 2;
*/
public function setMethod(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\MethodDescriptorProto::class);
$this->method = $var;
$this->has_method = true;
}
public function hasMethod()
{
return $this->has_method;
}
/**
* optional .google.protobuf.ServiceOptions options = 3;
*/
public function getOptions()
{
return $this->options;
}
/**
* optional .google.protobuf.ServiceOptions options = 3;
*/
public function setOptions(&$var)
{
GPBUtil::checkMessage($var, \Google\Protobuf\Internal\ServiceOptions::class);
$this->options = $var;
$this->has_options = true;
}
public function hasOptions()
{
return $this->has_options;
}
}
src/Google/Protobuf/Internal/ServiceOptions.php 0000644 00000006436 14641212465 0015626 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.
*
*
* optional bool deprecated = 33 [default = false];
*/
private $deprecated = false;
private $has_deprecated = false;
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* 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.
*
*
* optional bool deprecated = 33 [default = false];
*/
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.
*
*
* optional bool deprecated = 33 [default = false];
*/
public function setDeprecated($var)
{
GPBUtil::checkBool($var);
$this->deprecated = $var;
$this->has_deprecated = true;
}
public function hasDeprecated()
{
return $this->has_deprecated;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function getUninterpretedOption()
{
return $this->uninterpreted_option;
}
/**
*
* The parser stores options it doesn't recognize here. See above.
*
*
* repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
*/
public function setUninterpretedOption(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
$this->uninterpreted_option = $var;
$this->has_uninterpreted_option = true;
}
public function hasUninterpretedOption()
{
return $this->has_uninterpreted_option;
}
}
src/Google/Protobuf/Internal/SourceCodeInfo.php 0000644 00000021246 14641212465 0015515 0 ustar 00
* Encapsulates information about the original source file from which a
* FileDescriptorProto was generated.
*
*
* Protobuf type 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.
*
*
* 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.
*
*
* repeated .google.protobuf.SourceCodeInfo.Location location = 1;
*/
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.
*
*
* repeated .google.protobuf.SourceCodeInfo.Location location = 1;
*/
public function setLocation(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\SourceCodeInfo_Location::class);
$this->location = $var;
$this->has_location = true;
}
public function hasLocation()
{
return $this->has_location;
}
}
src/Google/Protobuf/Internal/SourceCodeInfo_Location.php 0000644 00000032730 14641212465 0017345 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).
*
*
* 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.
*
*
* 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.
*
*
* optional string leading_comments = 3;
*/
private $leading_comments = '';
private $has_leading_comments = false;
/**
* optional string trailing_comments = 4;
*/
private $trailing_comments = '';
private $has_trailing_comments = false;
/**
* 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).
*
*
* repeated int32 path = 1 [packed = true];
*/
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).
*
*
* repeated int32 path = 1 [packed = true];
*/
public function setPath(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->path = $var;
$this->has_path = true;
}
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.
*
*
* repeated int32 span = 2 [packed = true];
*/
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.
*
*
* repeated int32 span = 2 [packed = true];
*/
public function setSpan(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->span = $var;
$this->has_span = true;
}
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.
*
*
* optional string leading_comments = 3;
*/
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.
*
*
* optional string leading_comments = 3;
*/
public function setLeadingComments($var)
{
GPBUtil::checkString($var, True);
$this->leading_comments = $var;
$this->has_leading_comments = true;
}
public function hasLeadingComments()
{
return $this->has_leading_comments;
}
/**
* optional string trailing_comments = 4;
*/
public function getTrailingComments()
{
return $this->trailing_comments;
}
/**
* optional string trailing_comments = 4;
*/
public function setTrailingComments($var)
{
GPBUtil::checkString($var, True);
$this->trailing_comments = $var;
$this->has_trailing_comments = true;
}
public function hasTrailingComments()
{
return $this->has_trailing_comments;
}
/**
* repeated string leading_detached_comments = 6;
*/
public function getLeadingDetachedComments()
{
return $this->leading_detached_comments;
}
/**
* repeated string leading_detached_comments = 6;
*/
public function setLeadingDetachedComments(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->leading_detached_comments = $var;
$this->has_leading_detached_comments = true;
}
public function hasLeadingDetachedComments()
{
return $this->has_leading_detached_comments;
}
}
src/Google/Protobuf/Internal/UninterpretedOption.php 0000644 00000014307 14641212465 0016667 0 ustar 00
* A message representing a option the parser does not recognize. This only
* appears in options protos created by the compiler::Parser class.
* DescriptorPool resolves these when building Descriptor objects. Therefore,
* options protos in descriptor objects (e.g. returned by Descriptor::options(),
* or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
* in them.
*
*
* Protobuf type google.protobuf.UninterpretedOption
*/
class UninterpretedOption extends \Google\Protobuf\Internal\Message
{
/**
* 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.
*
*
* optional string identifier_value = 3;
*/
private $identifier_value = '';
private $has_identifier_value = false;
/**
* optional uint64 positive_int_value = 4;
*/
private $positive_int_value = 0;
private $has_positive_int_value = false;
/**
* optional int64 negative_int_value = 5;
*/
private $negative_int_value = 0;
private $has_negative_int_value = false;
/**
* optional double double_value = 6;
*/
private $double_value = 0.0;
private $has_double_value = false;
/**
* optional bytes string_value = 7;
*/
private $string_value = '';
private $has_string_value = false;
/**
* optional string aggregate_value = 8;
*/
private $aggregate_value = '';
private $has_aggregate_value = false;
public function __construct() {
\GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
parent::__construct();
}
/**
* repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
*/
public function getName()
{
return $this->name;
}
/**
* repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
*/
public function setName(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption_NamePart::class);
$this->name = $var;
$this->has_name = true;
}
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.
*
*
* optional string identifier_value = 3;
*/
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.
*
*
* optional string identifier_value = 3;
*/
public function setIdentifierValue($var)
{
GPBUtil::checkString($var, True);
$this->identifier_value = $var;
$this->has_identifier_value = true;
}
public function hasIdentifierValue()
{
return $this->has_identifier_value;
}
/**
* optional uint64 positive_int_value = 4;
*/
public function getPositiveIntValue()
{
return $this->positive_int_value;
}
/**
* optional uint64 positive_int_value = 4;
*/
public function setPositiveIntValue($var)
{
GPBUtil::checkUint64($var);
$this->positive_int_value = $var;
$this->has_positive_int_value = true;
}
public function hasPositiveIntValue()
{
return $this->has_positive_int_value;
}
/**
* optional int64 negative_int_value = 5;
*/
public function getNegativeIntValue()
{
return $this->negative_int_value;
}
/**
* optional int64 negative_int_value = 5;
*/
public function setNegativeIntValue($var)
{
GPBUtil::checkInt64($var);
$this->negative_int_value = $var;
$this->has_negative_int_value = true;
}
public function hasNegativeIntValue()
{
return $this->has_negative_int_value;
}
/**
* optional double double_value = 6;
*/
public function getDoubleValue()
{
return $this->double_value;
}
/**
* optional double double_value = 6;
*/
public function setDoubleValue($var)
{
GPBUtil::checkDouble($var);
$this->double_value = $var;
$this->has_double_value = true;
}
public function hasDoubleValue()
{
return $this->has_double_value;
}
/**
* optional bytes string_value = 7;
*/
public function getStringValue()
{
return $this->string_value;
}
/**
* optional bytes string_value = 7;
*/
public function setStringValue($var)
{
GPBUtil::checkString($var, False);
$this->string_value = $var;
$this->has_string_value = true;
}
public function hasStringValue()
{
return $this->has_string_value;
}
/**
* optional string aggregate_value = 8;
*/
public function getAggregateValue()
{
return $this->aggregate_value;
}
/**
* optional string aggregate_value = 8;
*/
public function setAggregateValue($var)
{
GPBUtil::checkString($var, True);
$this->aggregate_value = $var;
$this->has_aggregate_value = true;
}
public function hasAggregateValue()
{
return $this->has_aggregate_value;
}
}
src/Google/Protobuf/Internal/UninterpretedOption_NamePart.php 0000644 00000004247 14641212465 0020460 0 ustar 00
* The name of the uninterpreted option. Each string represents a segment in
* a dot-separated name. is_extension is true iff a segment represents an
* extension (denoted with parentheses in options specs in .proto files).
* E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
* "foo.(bar.baz).qux".
*
*
* Protobuf type google.protobuf.UninterpretedOption.NamePart
*/
class UninterpretedOption_NamePart extends \Google\Protobuf\Internal\Message
{
/**
* required string name_part = 1;
*/
private $name_part = '';
private $has_name_part = false;
/**
* 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();
}
/**
* required string name_part = 1;
*/
public function getNamePart()
{
return $this->name_part;
}
/**
* required string name_part = 1;
*/
public function setNamePart($var)
{
GPBUtil::checkString($var, True);
$this->name_part = $var;
$this->has_name_part = true;
}
public function hasNamePart()
{
return $this->has_name_part;
}
/**
* required bool is_extension = 2;
*/
public function getIsExtension()
{
return $this->is_extension;
}
/**
* required bool is_extension = 2;
*/
public function setIsExtension($var)
{
GPBUtil::checkBool($var);
$this->is_extension = $var;
$this->has_is_extension = true;
}
public function hasIsExtension()
{
return $this->has_is_extension;
}
}
src/Google/Protobuf/descriptor.php 0000644 00000031643 14641212465 0013252 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, $file->getPackage(), ""));
}
foreach ($proto->getEnumType() as $enum_proto) {
$file->getEnumType()[] =
$file->addEnumType(
EnumDescriptor::buildFromProto(
$enum_proto,
$file->getPackage(),
""));
}
return $file;
}
}
class Descriptor
{
private $full_name;
private $field = [];
private $nested_type = [];
private $enum_type = [];
private $klass;
private $options;
private $oneof_decl = [];
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;
}
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 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, $package, $containing)
{
$desc = new Descriptor();
$message_name_without_package = "";
$classname = "";
$fullname = "";
getFullClassName(
$proto,
$containing,
$package,
$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, $package, $message_name_without_package));
}
// Handle oneof fields.
foreach ($proto->getOneofDecl() as $oneof_proto) {
$desc->addOneofDecl(
OneofDescriptor::buildFromProto($oneof_proto, $desc));
}
return $desc;
}
}
function addPrefixIfSpecial(
$name,
$package)
{
if ($name === "Empty" && $package === "google.protobuf") {
return "GPBEmpty";
} else {
return $name;
}
}
function getFullClassName(
$proto,
$containing,
$package,
&$message_name_without_package,
&$classname,
&$fullname)
{
// Full name needs to start with '.'.
$message_name_without_package =
addPrefixIfSpecial($proto->getName(), $package);
if ($containing !== "") {
$message_name_without_package =
$containing . "." . $message_name_without_package;
}
if ($package === "") {
$fullname = "." . $message_name_without_package;
} else {
$fullname = "." . $package . "." . $message_name_without_package;
}
// Nested message class names are seperated by '_', and package names are
// seperated by '\'.
$class_name_without_package =
implode('_', array_map('ucwords',
explode('.', $message_name_without_package)));
if ($package === "") {
$classname = $class_name_without_package;
} else {
$classname =
implode('\\', array_map('ucwords', explode('.', $package))).
"\\".$class_name_without_package;
}
}
class OneofDescriptor
{
private $name;
private $fields;
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function addField(&$field)
{
$this->fields[] = $field;
}
public function getFields()
{
return $this->fields;
}
public static function buildFromProto($oneof_proto)
{
$oneof = new OneofDescriptor();
$oneof->setName($oneof_proto->getName());
return $oneof;
}
}
class EnumDescriptor
{
private $klass;
private $full_name;
private $value;
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;
}
public function setClass($klass)
{
$this->klass = $klass;
}
public function getClass()
{
return $this->klass;
}
public static function buildFromProto($proto, $package, $containing)
{
$desc = new EnumDescriptor();
$enum_name_without_package = "";
$classname = "";
$fullname = "";
getFullClassName(
$proto,
$containing,
$package,
$enum_name_without_package,
$classname,
$fullname);
$desc->setFullName($fullname);
$desc->setClass($classname);
return $desc;
}
}
class EnumValueDescriptor
{
}
class FieldDescriptor
{
private $name;
private $setter;
private $getter;
private $number;
private $label;
private $type;
private $message_type;
private $enum_type;
private $packed;
private $is_map;
private $oneof_index = -1;
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 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(
$name,
$label,
$type,
$number,
$oneof_index,
$packed,
$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);
$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)
{
$type_name = null;
switch ($proto->getType()) {
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();
}
return FieldDescriptor::getFieldDescriptor(
$proto->getName(), $proto->getLabel(), $proto->getType(),
$proto->getNumber(), $oneof_index, $packed, $type_name);
}
}
src/phpdoc.dist.xml 0000644 00000000624 14641212465 0010303 0 ustar 00