LICENSE000064400000002754147133775460005602 0ustar00BSD 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.md000064400000000571147133775460006047 0ustar00# 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.json000064400000001055147133775460007310 0ustar00{ "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": ">=7.0.0" }, "require-dev": { "phpunit/phpunit": ">=5.0.0" }, "suggest": { "ext-bcmath": "Need to support JSON deserialization" }, "autoload": { "psr-4": { "Google\\Protobuf\\": "src/Google/Protobuf", "GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf" } } } src/GPBMetadata/Google/Protobuf/Any.php000064400000001332147133775460013700 0ustar00internalAddGeneratedFile( ' Ô google/protobuf/any.protogoogle.protobuf"& Any type_url (  value ( Bv com.google.protobufBAnyProtoPZ,google.golang.org/protobuf/types/known/anypb¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Api.php000064400000002510147133775460013661 0ustar00internalAddGeneratedFile( ' É google/protobuf/api.protogoogle.protobufgoogle/protobuf/type.proto"� Api name ( ( methods ( 2.google.protobuf.Method( options ( 2.google.protobuf.Option version ( 6 source_context ( 2.google.protobuf.SourceContext& mixins ( 2.google.protobuf.Mixin\' syntax (2.google.protobuf.Syntax"Õ Method name (  request_type_url (  request_streaming ( response_type_url (  response_streaming (( options ( 2.google.protobuf.Option\' syntax (2.google.protobuf.Syntax"# Mixin name (  root ( Bv com.google.protobufBApiProtoPZ,google.golang.org/protobuf/types/known/apipb¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Duration.php000064400000001373147133775460014743 0ustar00internalAddGeneratedFile( ' ë google/protobuf/duration.protogoogle.protobuf"* Duration seconds ( nanos (Bƒ com.google.protobufB DurationProtoPZ1google.golang.org/protobuf/types/known/durationpbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/FieldMask.php000064400000001362147133775460015013 0ustar00internalAddGeneratedFile( ' ß google/protobuf/field_mask.protogoogle.protobuf" FieldMask paths ( B… com.google.protobufBFieldMaskProtoPZ2google.golang.org/protobuf/types/known/fieldmaskpbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/GPBEmpty.php000064400000001313147133775460014577 0ustar00internalAddGeneratedFile( ' ¾ google/protobuf/empty.protogoogle.protobuf" EmptyB} com.google.protobufB EmptyProtoPZ.google.golang.org/protobuf/types/known/emptypbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php000064400000047132147133775460017053 0ustar00addMessage('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) ->optional('edition', \Google\Protobuf\Internal\GPBType::STRING, 13) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.DescriptorProto', \Google\Protobuf\Internal\DescriptorProto::class) ->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1) ->repeated('field', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.FieldDescriptorProto') ->repeated('extension', \Google\Protobuf\Internal\GPBType::MESSAGE, 6, 'google.protobuf.internal.FieldDescriptorProto') ->repeated('nested_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.DescriptorProto') ->repeated('enum_type', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.EnumDescriptorProto') ->repeated('extension_range', \Google\Protobuf\Internal\GPBType::MESSAGE, 5, 'google.protobuf.internal.DescriptorProto.ExtensionRange') ->repeated('oneof_decl', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.OneofDescriptorProto') ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 7, 'google.protobuf.internal.MessageOptions') ->repeated('reserved_range', \Google\Protobuf\Internal\GPBType::MESSAGE, 9, 'google.protobuf.internal.DescriptorProto.ReservedRange') ->repeated('reserved_name', \Google\Protobuf\Internal\GPBType::STRING, 10) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.DescriptorProto.ExtensionRange', \Google\Protobuf\Internal\DescriptorProto\ExtensionRange::class) ->optional('start', \Google\Protobuf\Internal\GPBType::INT32, 1) ->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 2) ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.ExtensionRangeOptions') ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.DescriptorProto.ReservedRange', \Google\Protobuf\Internal\DescriptorProto\ReservedRange::class) ->optional('start', \Google\Protobuf\Internal\GPBType::INT32, 1) ->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 2) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.ExtensionRangeOptions', \Google\Protobuf\Internal\ExtensionRangeOptions::class) ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption') ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.FieldDescriptorProto', \Google\Protobuf\Internal\FieldDescriptorProto::class) ->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1) ->optional('number', \Google\Protobuf\Internal\GPBType::INT32, 3) ->optional('label', \Google\Protobuf\Internal\GPBType::ENUM, 4, 'google.protobuf.internal.FieldDescriptorProto.Label') ->optional('type', \Google\Protobuf\Internal\GPBType::ENUM, 5, 'google.protobuf.internal.FieldDescriptorProto.Type') ->optional('type_name', \Google\Protobuf\Internal\GPBType::STRING, 6) ->optional('extendee', \Google\Protobuf\Internal\GPBType::STRING, 2) ->optional('default_value', \Google\Protobuf\Internal\GPBType::STRING, 7) ->optional('oneof_index', \Google\Protobuf\Internal\GPBType::INT32, 9) ->optional('json_name', \Google\Protobuf\Internal\GPBType::STRING, 10) ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.FieldOptions') ->optional('proto3_optional', \Google\Protobuf\Internal\GPBType::BOOL, 17) ->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') ->repeated('reserved_range', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.EnumDescriptorProto.EnumReservedRange') ->repeated('reserved_name', \Google\Protobuf\Internal\GPBType::STRING, 5) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.EnumDescriptorProto.EnumReservedRange', \Google\Protobuf\Internal\EnumDescriptorProto\EnumReservedRange::class) ->optional('start', \Google\Protobuf\Internal\GPBType::INT32, 1) ->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 2) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.EnumValueDescriptorProto', \Google\Protobuf\Internal\EnumValueDescriptorProto::class) ->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1) ->optional('number', \Google\Protobuf\Internal\GPBType::INT32, 2) ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.EnumValueOptions') ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.ServiceDescriptorProto', \Google\Protobuf\Internal\ServiceDescriptorProto::class) ->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1) ->repeated('method', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.MethodDescriptorProto') ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 3, 'google.protobuf.internal.ServiceOptions') ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.MethodDescriptorProto', \Google\Protobuf\Internal\MethodDescriptorProto::class) ->optional('name', \Google\Protobuf\Internal\GPBType::STRING, 1) ->optional('input_type', \Google\Protobuf\Internal\GPBType::STRING, 2) ->optional('output_type', \Google\Protobuf\Internal\GPBType::STRING, 3) ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.MethodOptions') ->optional('client_streaming', \Google\Protobuf\Internal\GPBType::BOOL, 5) ->optional('server_streaming', \Google\Protobuf\Internal\GPBType::BOOL, 6) ->finalizeToPool(); $pool->addMessage('google.protobuf.internal.FileOptions', \Google\Protobuf\Internal\FileOptions::class) ->optional('java_package', \Google\Protobuf\Internal\GPBType::STRING, 1) ->optional('java_outer_classname', \Google\Protobuf\Internal\GPBType::STRING, 8) ->optional('java_multiple_files', \Google\Protobuf\Internal\GPBType::BOOL, 10) ->optional('java_generate_equals_and_hash', \Google\Protobuf\Internal\GPBType::BOOL, 20) ->optional('java_string_check_utf8', \Google\Protobuf\Internal\GPBType::BOOL, 27) ->optional('optimize_for', \Google\Protobuf\Internal\GPBType::ENUM, 9, 'google.protobuf.internal.FileOptions.OptimizeMode') ->optional('go_package', \Google\Protobuf\Internal\GPBType::STRING, 11) ->optional('cc_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 16) ->optional('java_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 17) ->optional('py_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 18) ->optional('php_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 42) ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 23) ->optional('cc_enable_arenas', \Google\Protobuf\Internal\GPBType::BOOL, 31) ->optional('objc_class_prefix', \Google\Protobuf\Internal\GPBType::STRING, 36) ->optional('csharp_namespace', \Google\Protobuf\Internal\GPBType::STRING, 37) ->optional('swift_prefix', \Google\Protobuf\Internal\GPBType::STRING, 39) ->optional('php_class_prefix', \Google\Protobuf\Internal\GPBType::STRING, 40) ->optional('php_namespace', \Google\Protobuf\Internal\GPBType::STRING, 41) ->optional('php_metadata_namespace', \Google\Protobuf\Internal\GPBType::STRING, 44) ->optional('ruby_package', \Google\Protobuf\Internal\GPBType::STRING, 45) ->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) ->optional('deprecated_legacy_json_field_conflicts', \Google\Protobuf\Internal\GPBType::BOOL, 11) ->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('unverified_lazy', \Google\Protobuf\Internal\GPBType::BOOL, 15) ->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) ->optional('deprecated_legacy_json_field_conflicts', \Google\Protobuf\Internal\GPBType::BOOL, 6) ->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/GPBMetadata/Google/Protobuf/SourceContext.php000064400000001413147133775460015756 0ustar00internalAddGeneratedFile( ' ð $google/protobuf/source_context.protogoogle.protobuf"" SourceContext file_name ( BŠ com.google.protobufBSourceContextProtoPZ6google.golang.org/protobuf/types/known/sourcecontextpb¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Struct.php000064400000002212147133775460014433 0ustar00internalAddGeneratedFile( ' þ google/protobuf/struct.protogoogle.protobuf"„ Struct3 fields ( 2#.google.protobuf.Struct.FieldsEntryE FieldsEntry key ( % value ( 2.google.protobuf.Value:8"ê Value0 null_value (2.google.protobuf.NullValueH number_value (H string_value ( H bool_value (H/ struct_value ( 2.google.protobuf.StructH0 list_value ( 2.google.protobuf.ListValueHB kind"3 ListValue& values ( 2.google.protobuf.Value* NullValue NULL_VALUEB com.google.protobufB StructProtoPZ/google.golang.org/protobuf/types/known/structpbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Timestamp.php000064400000001401147133775460015111 0ustar00internalAddGeneratedFile( ' ï google/protobuf/timestamp.protogoogle.protobuf"+ Timestamp seconds ( nanos (B… com.google.protobufBTimestampProtoPZ2google.golang.org/protobuf/types/known/timestamppbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Type.php000064400000004235147133775460014077 0ustar00internalAddGeneratedFile( ' � google/protobuf/type.protogoogle.protobuf$google/protobuf/source_context.proto"× Type name ( & fields ( 2.google.protobuf.Field oneofs ( ( options ( 2.google.protobuf.Option6 source_context ( 2.google.protobuf.SourceContext\' syntax (2.google.protobuf.Syntax"Õ Field) kind (2.google.protobuf.Field.Kind7 cardinality (2".google.protobuf.Field.Cardinality number ( name (  type_url (  oneof_index ( packed (( options ( 2.google.protobuf.Option json_name (  default_value ( "È Kind TYPE_UNKNOWN TYPE_DOUBLE TYPE_FLOAT TYPE_INT64 TYPE_UINT64 TYPE_INT32 TYPE_FIXED64 TYPE_FIXED32 TYPE_BOOL TYPE_STRING  TYPE_GROUP  TYPE_MESSAGE  TYPE_BYTES  TYPE_UINT32  TYPE_ENUM TYPE_SFIXED32 TYPE_SFIXED64 TYPE_SINT32 TYPE_SINT64"t Cardinality CARDINALITY_UNKNOWN CARDINALITY_OPTIONAL CARDINALITY_REQUIRED CARDINALITY_REPEATED"Î Enum name ( - enumvalue ( 2.google.protobuf.EnumValue( options ( 2.google.protobuf.Option6 source_context ( 2.google.protobuf.SourceContext\' syntax (2.google.protobuf.Syntax"S EnumValue name (  number (( options ( 2.google.protobuf.Option"; Option name ( # value ( 2.google.protobuf.Any*. Syntax SYNTAX_PROTO2 SYNTAX_PROTO3B{ com.google.protobufB TypeProtoPZ-google.golang.org/protobuf/types/known/typepbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/GPBMetadata/Google/Protobuf/Wrappers.php000064400000001727147133775460014764 0ustar00internalAddGeneratedFile( ' Ç google/protobuf/wrappers.protogoogle.protobuf" DoubleValue value (" FloatValue value (" Int64Value value (" UInt64Value value (" Int32Value value (" UInt32Value value ( " BoolValue value (" StringValue value ( " BytesValue value ( Bƒ com.google.protobufB WrappersProtoPZ1google.golang.org/protobuf/types/known/wrapperspbø¢GPBªGoogle.Protobuf.WellKnownTypesbproto3' , true); static::$is_initialized = true; } } src/Google/Protobuf/Any.php000064400000025136147133775460011637 0ustar00, * "lastName": * } * If the embedded message type is well-known and has a custom JSON * representation, that representation will be embedded adding a field * `value` which holds the custom JSON in addition to the `@type` * field. Example (for message [google.protobuf.Duration][]): * { * "@type": "type.googleapis.com/google.protobuf.Duration", * "value": "1.212s" * } * * Generated from protobuf message google.protobuf.Any */ class Any extends \Google\Protobuf\Internal\AnyBase { /** * A URL/resource name that uniquely identifies the type of the serialized * protocol buffer message. This string must contain at least * one "/" character. The last segment of the URL's path must represent * the fully qualified name of the type (as in * `path/google.protobuf.Duration`). The name should be in a canonical form * (e.g., leading "." is not accepted). * In practice, teams usually precompile into the binary all types that they * expect it to use in the context of Any. However, for URLs which use the * scheme `http`, `https`, or no scheme, one can optionally set up a type * server that maps type URLs to message definitions as follows: * * If no scheme is provided, `https` is assumed. * * An HTTP GET on the URL must yield a [google.protobuf.Type][] * value in binary format, or produce an error. * * Applications are allowed to cache lookup results based on the * URL, or have them precompiled into a binary to avoid any * lookup. Therefore, binary compatibility needs to be preserved * on changes to types. (Use versioned type names to manage * breaking changes.) * Note: this functionality is not currently available in the official * protobuf release, and it is not used for type URLs beginning with * type.googleapis.com. * Schemes other than `http`, `https` (or the empty scheme) might be * used with implementation specific semantics. * * Generated from protobuf field string type_url = 1; */ protected $type_url = ''; /** * Must be a valid serialized protocol buffer of the above specified type. * * Generated from protobuf field bytes value = 2; */ protected $value = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $type_url * A URL/resource name that uniquely identifies the type of the serialized * protocol buffer message. This string must contain at least * one "/" character. The last segment of the URL's path must represent * the fully qualified name of the type (as in * `path/google.protobuf.Duration`). The name should be in a canonical form * (e.g., leading "." is not accepted). * In practice, teams usually precompile into the binary all types that they * expect it to use in the context of Any. However, for URLs which use the * scheme `http`, `https`, or no scheme, one can optionally set up a type * server that maps type URLs to message definitions as follows: * * If no scheme is provided, `https` is assumed. * * An HTTP GET on the URL must yield a [google.protobuf.Type][] * value in binary format, or produce an error. * * Applications are allowed to cache lookup results based on the * URL, or have them precompiled into a binary to avoid any * lookup. Therefore, binary compatibility needs to be preserved * on changes to types. (Use versioned type names to manage * breaking changes.) * Note: this functionality is not currently available in the official * protobuf release, and it is not used for type URLs beginning with * type.googleapis.com. * Schemes other than `http`, `https` (or the empty scheme) might be * used with implementation specific semantics. * @type string $value * Must be a valid serialized protocol buffer of the above specified type. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Any::initOnce(); parent::__construct($data); } /** * A URL/resource name that uniquely identifies the type of the serialized * protocol buffer message. This string must contain at least * one "/" character. The last segment of the URL's path must represent * the fully qualified name of the type (as in * `path/google.protobuf.Duration`). The name should be in a canonical form * (e.g., leading "." is not accepted). * In practice, teams usually precompile into the binary all types that they * expect it to use in the context of Any. However, for URLs which use the * scheme `http`, `https`, or no scheme, one can optionally set up a type * server that maps type URLs to message definitions as follows: * * If no scheme is provided, `https` is assumed. * * An HTTP GET on the URL must yield a [google.protobuf.Type][] * value in binary format, or produce an error. * * Applications are allowed to cache lookup results based on the * URL, or have them precompiled into a binary to avoid any * lookup. Therefore, binary compatibility needs to be preserved * on changes to types. (Use versioned type names to manage * breaking changes.) * Note: this functionality is not currently available in the official * protobuf release, and it is not used for type URLs beginning with * type.googleapis.com. * Schemes other than `http`, `https` (or the empty scheme) might be * used with implementation specific semantics. * * Generated from protobuf field string type_url = 1; * @return string */ public function getTypeUrl() { return $this->type_url; } /** * A URL/resource name that uniquely identifies the type of the serialized * protocol buffer message. This string must contain at least * one "/" character. The last segment of the URL's path must represent * the fully qualified name of the type (as in * `path/google.protobuf.Duration`). The name should be in a canonical form * (e.g., leading "." is not accepted). * In practice, teams usually precompile into the binary all types that they * expect it to use in the context of Any. However, for URLs which use the * scheme `http`, `https`, or no scheme, one can optionally set up a type * server that maps type URLs to message definitions as follows: * * If no scheme is provided, `https` is assumed. * * An HTTP GET on the URL must yield a [google.protobuf.Type][] * value in binary format, or produce an error. * * Applications are allowed to cache lookup results based on the * URL, or have them precompiled into a binary to avoid any * lookup. Therefore, binary compatibility needs to be preserved * on changes to types. (Use versioned type names to manage * breaking changes.) * Note: this functionality is not currently available in the official * protobuf release, and it is not used for type URLs beginning with * type.googleapis.com. * Schemes other than `http`, `https` (or the empty scheme) might be * used with implementation specific semantics. * * Generated from protobuf field string type_url = 1; * @param string $var * @return $this */ public function setTypeUrl($var) { GPBUtil::checkString($var, True); $this->type_url = $var; return $this; } /** * Must be a valid serialized protocol buffer of the above specified type. * * Generated from protobuf field bytes value = 2; * @return string */ public function getValue() { return $this->value; } /** * Must be a valid serialized protocol buffer of the above specified type. * * Generated from protobuf field bytes value = 2; * @param string $var * @return $this */ public function setValue($var) { GPBUtil::checkString($var, False); $this->value = $var; return $this; } } src/Google/Protobuf/Api.php000064400000032070147133775460011614 0ustar00google.protobuf.Api */ class Api extends \Google\Protobuf\Internal\Message { /** * The fully qualified name of this interface, including package name * followed by the interface's simple name. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * The methods of this interface, in unspecified order. * * Generated from protobuf field repeated .google.protobuf.Method methods = 2; */ private $methods; /** * Any metadata attached to the interface. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; */ private $options; /** * A version string for this interface. If specified, must have the form * `major-version.minor-version`, as in `1.10`. If the minor version is * omitted, it defaults to zero. If the entire version field is empty, the * major version is derived from the package name, as outlined below. If the * field is not empty, the version in the package name will be verified to be * consistent with what is provided here. * The versioning schema uses [semantic * versioning](http://semver.org) where the major version number * indicates a breaking change and the minor version an additive, * non-breaking change. Both version numbers are signals to users * what to expect from different versions, and should be carefully * chosen based on the product plan. * The major version is also reflected in the package name of the * interface, which must end in `v`, as in * `google.feature.v1`. For major versions 0 and 1, the suffix can * be omitted. Zero major versions must only be used for * experimental, non-GA interfaces. * * Generated from protobuf field string version = 4; */ protected $version = ''; /** * Source context for the protocol buffer service represented by this * message. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; */ protected $source_context = null; /** * Included interfaces. See [Mixin][]. * * Generated from protobuf field repeated .google.protobuf.Mixin mixins = 6; */ private $mixins; /** * The source syntax of the service. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; */ protected $syntax = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * The fully qualified name of this interface, including package name * followed by the interface's simple name. * @type array<\Google\Protobuf\Method>|\Google\Protobuf\Internal\RepeatedField $methods * The methods of this interface, in unspecified order. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * Any metadata attached to the interface. * @type string $version * A version string for this interface. If specified, must have the form * `major-version.minor-version`, as in `1.10`. If the minor version is * omitted, it defaults to zero. If the entire version field is empty, the * major version is derived from the package name, as outlined below. If the * field is not empty, the version in the package name will be verified to be * consistent with what is provided here. * The versioning schema uses [semantic * versioning](http://semver.org) where the major version number * indicates a breaking change and the minor version an additive, * non-breaking change. Both version numbers are signals to users * what to expect from different versions, and should be carefully * chosen based on the product plan. * The major version is also reflected in the package name of the * interface, which must end in `v`, as in * `google.feature.v1`. For major versions 0 and 1, the suffix can * be omitted. Zero major versions must only be used for * experimental, non-GA interfaces. * @type \Google\Protobuf\SourceContext $source_context * Source context for the protocol buffer service represented by this * message. * @type array<\Google\Protobuf\Mixin>|\Google\Protobuf\Internal\RepeatedField $mixins * Included interfaces. See [Mixin][]. * @type int $syntax * The source syntax of the service. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Api::initOnce(); parent::__construct($data); } /** * The fully qualified name of this interface, including package name * followed by the interface's simple name. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * The fully qualified name of this interface, including package name * followed by the interface's simple name. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * The methods of this interface, in unspecified order. * * Generated from protobuf field repeated .google.protobuf.Method methods = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getMethods() { return $this->methods; } /** * The methods of this interface, in unspecified order. * * Generated from protobuf field repeated .google.protobuf.Method methods = 2; * @param array<\Google\Protobuf\Method>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setMethods($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Method::class); $this->methods = $arr; return $this; } /** * Any metadata attached to the interface. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * Any metadata attached to the interface. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } /** * A version string for this interface. If specified, must have the form * `major-version.minor-version`, as in `1.10`. If the minor version is * omitted, it defaults to zero. If the entire version field is empty, the * major version is derived from the package name, as outlined below. If the * field is not empty, the version in the package name will be verified to be * consistent with what is provided here. * The versioning schema uses [semantic * versioning](http://semver.org) where the major version number * indicates a breaking change and the minor version an additive, * non-breaking change. Both version numbers are signals to users * what to expect from different versions, and should be carefully * chosen based on the product plan. * The major version is also reflected in the package name of the * interface, which must end in `v`, as in * `google.feature.v1`. For major versions 0 and 1, the suffix can * be omitted. Zero major versions must only be used for * experimental, non-GA interfaces. * * Generated from protobuf field string version = 4; * @return string */ public function getVersion() { return $this->version; } /** * A version string for this interface. If specified, must have the form * `major-version.minor-version`, as in `1.10`. If the minor version is * omitted, it defaults to zero. If the entire version field is empty, the * major version is derived from the package name, as outlined below. If the * field is not empty, the version in the package name will be verified to be * consistent with what is provided here. * The versioning schema uses [semantic * versioning](http://semver.org) where the major version number * indicates a breaking change and the minor version an additive, * non-breaking change. Both version numbers are signals to users * what to expect from different versions, and should be carefully * chosen based on the product plan. * The major version is also reflected in the package name of the * interface, which must end in `v`, as in * `google.feature.v1`. For major versions 0 and 1, the suffix can * be omitted. Zero major versions must only be used for * experimental, non-GA interfaces. * * Generated from protobuf field string version = 4; * @param string $var * @return $this */ public function setVersion($var) { GPBUtil::checkString($var, True); $this->version = $var; return $this; } /** * Source context for the protocol buffer service represented by this * message. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; * @return \Google\Protobuf\SourceContext|null */ public function getSourceContext() { return $this->source_context; } public function hasSourceContext() { return isset($this->source_context); } public function clearSourceContext() { unset($this->source_context); } /** * Source context for the protocol buffer service represented by this * message. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; * @param \Google\Protobuf\SourceContext $var * @return $this */ public function setSourceContext($var) { GPBUtil::checkMessage($var, \Google\Protobuf\SourceContext::class); $this->source_context = $var; return $this; } /** * Included interfaces. See [Mixin][]. * * Generated from protobuf field repeated .google.protobuf.Mixin mixins = 6; * @return \Google\Protobuf\Internal\RepeatedField */ public function getMixins() { return $this->mixins; } /** * Included interfaces. See [Mixin][]. * * Generated from protobuf field repeated .google.protobuf.Mixin mixins = 6; * @param array<\Google\Protobuf\Mixin>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setMixins($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Mixin::class); $this->mixins = $arr; return $this; } /** * The source syntax of the service. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; * @return int */ public function getSyntax() { return $this->syntax; } /** * The source syntax of the service. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; * @param int $var * @return $this */ public function setSyntax($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Syntax::class); $this->syntax = $var; return $this; } } src/Google/Protobuf/BoolValue.php000064400000002741147133775460012775 0ustar00google.protobuf.BoolValue */ class BoolValue extends \Google\Protobuf\Internal\Message { /** * The bool value. * * Generated from protobuf field bool value = 1; */ protected $value = false; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $value * The bool value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The bool value. * * Generated from protobuf field bool value = 1; * @return bool */ public function getValue() { return $this->value; } /** * The bool value. * * Generated from protobuf field bool value = 1; * @param bool $var * @return $this */ public function setValue($var) { GPBUtil::checkBool($var); $this->value = $var; return $this; } } src/Google/Protobuf/BytesValue.php000064400000002754147133775460013174 0ustar00google.protobuf.BytesValue */ class BytesValue extends \Google\Protobuf\Internal\Message { /** * The bytes value. * * Generated from protobuf field bytes value = 1; */ protected $value = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $value * The bytes value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The bytes value. * * Generated from protobuf field bytes value = 1; * @return string */ public function getValue() { return $this->value; } /** * The bytes value. * * Generated from protobuf field bytes value = 1; * @param string $var * @return $this */ public function setValue($var) { GPBUtil::checkString($var, False); $this->value = $var; return $this; } } src/Google/Protobuf/Descriptor.php000064400000003633147133775460013224 0ustar00internal_desc = $internal_desc; } /** * @return string Full protobuf message name */ public function getFullName() { return trim($this->internal_desc->getFullName(), "."); } /** * @return string PHP class name */ public function getClass() { return $this->internal_desc->getClass(); } /** * @param int $index Must be >= 0 and < getFieldCount() * @return FieldDescriptor */ public function getField($index) { return $this->getPublicDescriptor($this->internal_desc->getFieldByIndex($index)); } /** * @return int Number of fields in message */ public function getFieldCount() { return count($this->internal_desc->getField()); } /** * @param int $index Must be >= 0 and < getOneofDeclCount() * @return OneofDescriptor */ public function getOneofDecl($index) { return $this->getPublicDescriptor($this->internal_desc->getOneofDecl()[$index]); } /** * @return int Number of oneofs in message */ public function getOneofDeclCount() { return count($this->internal_desc->getOneofDecl()); } /** * @return int Number of real oneofs in message */ public function getRealOneofDeclCount() { return $this->internal_desc->getRealOneofDeclCount(); } } src/Google/Protobuf/DescriptorPool.php000064400000002656147133775460014062 0ustar00internal_pool = $internal_pool; } /** * @param string $className A fully qualified protobuf class name * @return Descriptor */ public function getDescriptorByClassName($className) { $desc = $this->internal_pool->getDescriptorByClassName($className); return is_null($desc) ? null : $desc->getPublicDescriptor(); } /** * @param string $className A fully qualified protobuf class name * @return EnumDescriptor */ public function getEnumDescriptorByClassName($className) { $desc = $this->internal_pool->getEnumDescriptorByClassName($className); return is_null($desc) ? null : $desc->getPublicDescriptor(); } } src/Google/Protobuf/DoubleValue.php000064400000002756147133775460013322 0ustar00google.protobuf.DoubleValue */ class DoubleValue extends \Google\Protobuf\Internal\Message { /** * The double value. * * Generated from protobuf field double value = 1; */ protected $value = 0.0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type float $value * The double value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The double value. * * Generated from protobuf field double value = 1; * @return float */ public function getValue() { return $this->value; } /** * The double value. * * Generated from protobuf field double value = 1; * @param float $var * @return $this */ public function setValue($var) { GPBUtil::checkDouble($var); $this->value = $var; return $this; } } src/Google/Protobuf/Duration.php000064400000015044147133775460012672 0ustar00 0) { * duration.seconds += 1; * duration.nanos -= 1000000000; * } else if (duration.seconds > 0 && duration.nanos < 0) { * duration.seconds -= 1; * duration.nanos += 1000000000; * } * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. * Timestamp start = ...; * Duration duration = ...; * Timestamp end = ...; * end.seconds = start.seconds + duration.seconds; * end.nanos = start.nanos + duration.nanos; * if (end.nanos < 0) { * end.seconds -= 1; * end.nanos += 1000000000; * } else if (end.nanos >= 1000000000) { * end.seconds += 1; * end.nanos -= 1000000000; * } * Example 3: Compute Duration from datetime.timedelta in Python. * td = datetime.timedelta(days=3, minutes=10) * duration = Duration() * duration.FromTimedelta(td) * # JSON Mapping * In JSON format, the Duration type is encoded as a string rather than an * object, where the string ends in the suffix "s" (indicating seconds) and * is preceded by the number of seconds, with nanoseconds expressed as * fractional seconds. For example, 3 seconds with 0 nanoseconds should be * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should * be expressed in JSON format as "3.000000001s", and 3 seconds and 1 * microsecond should be expressed in JSON format as "3.000001s". * * Generated from protobuf message google.protobuf.Duration */ class Duration extends \Google\Protobuf\Internal\Message { /** * Signed seconds of the span of time. Must be from -315,576,000,000 * to +315,576,000,000 inclusive. Note: these bounds are computed from: * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years * * Generated from protobuf field int64 seconds = 1; */ protected $seconds = 0; /** * Signed fractions of a second at nanosecond resolution of the span * of time. Durations less than one second are represented with a 0 * `seconds` field and a positive or negative `nanos` field. For durations * of one second or more, a non-zero value for the `nanos` field must be * of the same sign as the `seconds` field. Must be from -999,999,999 * to +999,999,999 inclusive. * * Generated from protobuf field int32 nanos = 2; */ protected $nanos = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int|string $seconds * Signed seconds of the span of time. Must be from -315,576,000,000 * to +315,576,000,000 inclusive. Note: these bounds are computed from: * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years * @type int $nanos * Signed fractions of a second at nanosecond resolution of the span * of time. Durations less than one second are represented with a 0 * `seconds` field and a positive or negative `nanos` field. For durations * of one second or more, a non-zero value for the `nanos` field must be * of the same sign as the `seconds` field. Must be from -999,999,999 * to +999,999,999 inclusive. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Duration::initOnce(); parent::__construct($data); } /** * Signed seconds of the span of time. Must be from -315,576,000,000 * to +315,576,000,000 inclusive. Note: these bounds are computed from: * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years * * Generated from protobuf field int64 seconds = 1; * @return int|string */ public function getSeconds() { return $this->seconds; } /** * Signed seconds of the span of time. Must be from -315,576,000,000 * to +315,576,000,000 inclusive. Note: these bounds are computed from: * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years * * Generated from protobuf field int64 seconds = 1; * @param int|string $var * @return $this */ public function setSeconds($var) { GPBUtil::checkInt64($var); $this->seconds = $var; return $this; } /** * Signed fractions of a second at nanosecond resolution of the span * of time. Durations less than one second are represented with a 0 * `seconds` field and a positive or negative `nanos` field. For durations * of one second or more, a non-zero value for the `nanos` field must be * of the same sign as the `seconds` field. Must be from -999,999,999 * to +999,999,999 inclusive. * * Generated from protobuf field int32 nanos = 2; * @return int */ public function getNanos() { return $this->nanos; } /** * Signed fractions of a second at nanosecond resolution of the span * of time. Durations less than one second are represented with a 0 * `seconds` field and a positive or negative `nanos` field. For durations * of one second or more, a non-zero value for the `nanos` field must be * of the same sign as the `seconds` field. Must be from -999,999,999 * to +999,999,999 inclusive. * * Generated from protobuf field int32 nanos = 2; * @param int $var * @return $this */ public function setNanos($var) { GPBUtil::checkInt32($var); $this->nanos = $var; return $this; } } src/Google/Protobuf/Enum.php000064400000012755147133775460012017 0ustar00google.protobuf.Enum */ class Enum extends \Google\Protobuf\Internal\Message { /** * Enum type name. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * Enum value definitions. * * Generated from protobuf field repeated .google.protobuf.EnumValue enumvalue = 2; */ private $enumvalue; /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; */ private $options; /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 4; */ protected $source_context = null; /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 5; */ protected $syntax = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * Enum type name. * @type array<\Google\Protobuf\EnumValue>|\Google\Protobuf\Internal\RepeatedField $enumvalue * Enum value definitions. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * Protocol buffer options. * @type \Google\Protobuf\SourceContext $source_context * The source context. * @type int $syntax * The source syntax. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Type::initOnce(); parent::__construct($data); } /** * Enum type name. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * Enum type name. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Enum value definitions. * * Generated from protobuf field repeated .google.protobuf.EnumValue enumvalue = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getEnumvalue() { return $this->enumvalue; } /** * Enum value definitions. * * Generated from protobuf field repeated .google.protobuf.EnumValue enumvalue = 2; * @param array<\Google\Protobuf\EnumValue>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setEnumvalue($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\EnumValue::class); $this->enumvalue = $arr; return $this; } /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 4; * @return \Google\Protobuf\SourceContext|null */ public function getSourceContext() { return $this->source_context; } public function hasSourceContext() { return isset($this->source_context); } public function clearSourceContext() { unset($this->source_context); } /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 4; * @param \Google\Protobuf\SourceContext $var * @return $this */ public function setSourceContext($var) { GPBUtil::checkMessage($var, \Google\Protobuf\SourceContext::class); $this->source_context = $var; return $this; } /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 5; * @return int */ public function getSyntax() { return $this->syntax; } /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 5; * @param int $var * @return $this */ public function setSyntax($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Syntax::class); $this->syntax = $var; return $this; } } src/Google/Protobuf/EnumDescriptor.php000064400000002275147133775460014052 0ustar00internal_desc = $internal_desc; } /** * @return string Full protobuf message name */ public function getFullName() { return $this->internal_desc->getFullName(); } /** * @return string PHP class name */ public function getClass() { return $this->internal_desc->getClass(); } /** * @param int $index Must be >= 0 and < getValueCount() * @return EnumValueDescriptor */ public function getValue($index) { return $this->internal_desc->getValueDescriptorByIndex($index); } /** * @return int Number of values in enum */ public function getValueCount() { return $this->internal_desc->getValueCount(); } } src/Google/Protobuf/EnumValue.php000064400000006246147133775460013012 0ustar00google.protobuf.EnumValue */ class EnumValue extends \Google\Protobuf\Internal\Message { /** * Enum value name. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * Enum value number. * * Generated from protobuf field int32 number = 2; */ protected $number = 0; /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; */ private $options; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * Enum value name. * @type int $number * Enum value number. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * Protocol buffer options. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Type::initOnce(); parent::__construct($data); } /** * Enum value name. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * Enum value name. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Enum value number. * * Generated from protobuf field int32 number = 2; * @return int */ public function getNumber() { return $this->number; } /** * Enum value number. * * Generated from protobuf field int32 number = 2; * @param int $var * @return $this */ public function setNumber($var) { GPBUtil::checkInt32($var); $this->number = $var; return $this; } /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * Protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 3; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } } src/Google/Protobuf/EnumValueDescriptor.php000064400000001366147133775460015047 0ustar00name = $name; $this->number = $number; } /** * @return string */ public function getName() { return $this->name; } /** * @return int */ public function getNumber() { return $this->number; } } src/Google/Protobuf/Field.php000064400000023672147133775460012136 0ustar00google.protobuf.Field */ class Field extends \Google\Protobuf\Internal\Message { /** * The field type. * * Generated from protobuf field .google.protobuf.Field.Kind kind = 1; */ protected $kind = 0; /** * The field cardinality. * * Generated from protobuf field .google.protobuf.Field.Cardinality cardinality = 2; */ protected $cardinality = 0; /** * The field number. * * Generated from protobuf field int32 number = 3; */ protected $number = 0; /** * The field name. * * Generated from protobuf field string name = 4; */ protected $name = ''; /** * The field type URL, without the scheme, for message or enumeration * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. * * Generated from protobuf field string type_url = 6; */ protected $type_url = ''; /** * The index of the field type in `Type.oneofs`, for message or enumeration * types. The first type has index 1; zero means the type is not in the list. * * Generated from protobuf field int32 oneof_index = 7; */ protected $oneof_index = 0; /** * Whether to use alternative packed wire representation. * * Generated from protobuf field bool packed = 8; */ protected $packed = false; /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 9; */ private $options; /** * The field JSON name. * * Generated from protobuf field string json_name = 10; */ protected $json_name = ''; /** * The string value of the default value of this field. Proto2 syntax only. * * Generated from protobuf field string default_value = 11; */ protected $default_value = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $kind * The field type. * @type int $cardinality * The field cardinality. * @type int $number * The field number. * @type string $name * The field name. * @type string $type_url * The field type URL, without the scheme, for message or enumeration * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. * @type int $oneof_index * The index of the field type in `Type.oneofs`, for message or enumeration * types. The first type has index 1; zero means the type is not in the list. * @type bool $packed * Whether to use alternative packed wire representation. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * The protocol buffer options. * @type string $json_name * The field JSON name. * @type string $default_value * The string value of the default value of this field. Proto2 syntax only. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Type::initOnce(); parent::__construct($data); } /** * The field type. * * Generated from protobuf field .google.protobuf.Field.Kind kind = 1; * @return int */ public function getKind() { return $this->kind; } /** * The field type. * * Generated from protobuf field .google.protobuf.Field.Kind kind = 1; * @param int $var * @return $this */ public function setKind($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Field\Kind::class); $this->kind = $var; return $this; } /** * The field cardinality. * * Generated from protobuf field .google.protobuf.Field.Cardinality cardinality = 2; * @return int */ public function getCardinality() { return $this->cardinality; } /** * The field cardinality. * * Generated from protobuf field .google.protobuf.Field.Cardinality cardinality = 2; * @param int $var * @return $this */ public function setCardinality($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Field\Cardinality::class); $this->cardinality = $var; return $this; } /** * The field number. * * Generated from protobuf field int32 number = 3; * @return int */ public function getNumber() { return $this->number; } /** * The field number. * * Generated from protobuf field int32 number = 3; * @param int $var * @return $this */ public function setNumber($var) { GPBUtil::checkInt32($var); $this->number = $var; return $this; } /** * The field name. * * Generated from protobuf field string name = 4; * @return string */ public function getName() { return $this->name; } /** * The field name. * * Generated from protobuf field string name = 4; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * The field type URL, without the scheme, for message or enumeration * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. * * Generated from protobuf field string type_url = 6; * @return string */ public function getTypeUrl() { return $this->type_url; } /** * The field type URL, without the scheme, for message or enumeration * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. * * Generated from protobuf field string type_url = 6; * @param string $var * @return $this */ public function setTypeUrl($var) { GPBUtil::checkString($var, True); $this->type_url = $var; return $this; } /** * The index of the field type in `Type.oneofs`, for message or enumeration * types. The first type has index 1; zero means the type is not in the list. * * Generated from protobuf field int32 oneof_index = 7; * @return int */ public function getOneofIndex() { return $this->oneof_index; } /** * The index of the field type in `Type.oneofs`, for message or enumeration * types. The first type has index 1; zero means the type is not in the list. * * Generated from protobuf field int32 oneof_index = 7; * @param int $var * @return $this */ public function setOneofIndex($var) { GPBUtil::checkInt32($var); $this->oneof_index = $var; return $this; } /** * Whether to use alternative packed wire representation. * * Generated from protobuf field bool packed = 8; * @return bool */ public function getPacked() { return $this->packed; } /** * Whether to use alternative packed wire representation. * * Generated from protobuf field bool packed = 8; * @param bool $var * @return $this */ public function setPacked($var) { GPBUtil::checkBool($var); $this->packed = $var; return $this; } /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 9; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 9; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } /** * The field JSON name. * * Generated from protobuf field string json_name = 10; * @return string */ public function getJsonName() { return $this->json_name; } /** * The field JSON name. * * Generated from protobuf field string json_name = 10; * @param string $var * @return $this */ public function setJsonName($var) { GPBUtil::checkString($var, True); $this->json_name = $var; return $this; } /** * The string value of the default value of this field. Proto2 syntax only. * * Generated from protobuf field string default_value = 11; * @return string */ public function getDefaultValue() { return $this->default_value; } /** * The string value of the default value of this field. Proto2 syntax only. * * Generated from protobuf field string default_value = 11; * @param string $var * @return $this */ public function setDefaultValue($var) { GPBUtil::checkString($var, True); $this->default_value = $var; return $this; } } src/Google/Protobuf/Field/Cardinality.php000064400000004031147133775460014365 0ustar00google.protobuf.Field.Cardinality */ class Cardinality { /** * For fields with unknown cardinality. * * Generated from protobuf enum CARDINALITY_UNKNOWN = 0; */ const CARDINALITY_UNKNOWN = 0; /** * For optional fields. * * Generated from protobuf enum CARDINALITY_OPTIONAL = 1; */ const CARDINALITY_OPTIONAL = 1; /** * For required fields. Proto2 syntax only. * * Generated from protobuf enum CARDINALITY_REQUIRED = 2; */ const CARDINALITY_REQUIRED = 2; /** * For repeated fields. * * Generated from protobuf enum CARDINALITY_REPEATED = 3; */ const CARDINALITY_REPEATED = 3; private static $valueToName = [ self::CARDINALITY_UNKNOWN => 'CARDINALITY_UNKNOWN', self::CARDINALITY_OPTIONAL => 'CARDINALITY_OPTIONAL', self::CARDINALITY_REQUIRED => 'CARDINALITY_REQUIRED', self::CARDINALITY_REPEATED => 'CARDINALITY_REPEATED', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Cardinality::class, \Google\Protobuf\Field_Cardinality::class); src/Google/Protobuf/Field/Kind.php000064400000011073147133775460013013 0ustar00google.protobuf.Field.Kind */ class Kind { /** * Field type unknown. * * Generated from protobuf enum TYPE_UNKNOWN = 0; */ const TYPE_UNKNOWN = 0; /** * Field type double. * * Generated from protobuf enum TYPE_DOUBLE = 1; */ const TYPE_DOUBLE = 1; /** * Field type float. * * Generated from protobuf enum TYPE_FLOAT = 2; */ const TYPE_FLOAT = 2; /** * Field type int64. * * Generated from protobuf enum TYPE_INT64 = 3; */ const TYPE_INT64 = 3; /** * Field type uint64. * * Generated from protobuf enum TYPE_UINT64 = 4; */ const TYPE_UINT64 = 4; /** * Field type int32. * * Generated from protobuf enum TYPE_INT32 = 5; */ const TYPE_INT32 = 5; /** * Field type fixed64. * * Generated from protobuf enum TYPE_FIXED64 = 6; */ const TYPE_FIXED64 = 6; /** * Field type fixed32. * * Generated from protobuf enum TYPE_FIXED32 = 7; */ const TYPE_FIXED32 = 7; /** * Field type bool. * * Generated from protobuf enum TYPE_BOOL = 8; */ const TYPE_BOOL = 8; /** * Field type string. * * Generated from protobuf enum TYPE_STRING = 9; */ const TYPE_STRING = 9; /** * Field type group. Proto2 syntax only, and deprecated. * * Generated from protobuf enum TYPE_GROUP = 10; */ const TYPE_GROUP = 10; /** * Field type message. * * Generated from protobuf enum TYPE_MESSAGE = 11; */ const TYPE_MESSAGE = 11; /** * Field type bytes. * * Generated from protobuf enum TYPE_BYTES = 12; */ const TYPE_BYTES = 12; /** * Field type uint32. * * Generated from protobuf enum TYPE_UINT32 = 13; */ const TYPE_UINT32 = 13; /** * Field type enum. * * Generated from protobuf enum TYPE_ENUM = 14; */ const TYPE_ENUM = 14; /** * Field type sfixed32. * * Generated from protobuf enum TYPE_SFIXED32 = 15; */ const TYPE_SFIXED32 = 15; /** * Field type sfixed64. * * Generated from protobuf enum TYPE_SFIXED64 = 16; */ const TYPE_SFIXED64 = 16; /** * Field type sint32. * * Generated from protobuf enum TYPE_SINT32 = 17; */ const TYPE_SINT32 = 17; /** * Field type sint64. * * Generated from protobuf enum TYPE_SINT64 = 18; */ const TYPE_SINT64 = 18; private static $valueToName = [ self::TYPE_UNKNOWN => 'TYPE_UNKNOWN', self::TYPE_DOUBLE => 'TYPE_DOUBLE', self::TYPE_FLOAT => 'TYPE_FLOAT', self::TYPE_INT64 => 'TYPE_INT64', self::TYPE_UINT64 => 'TYPE_UINT64', self::TYPE_INT32 => 'TYPE_INT32', self::TYPE_FIXED64 => 'TYPE_FIXED64', self::TYPE_FIXED32 => 'TYPE_FIXED32', self::TYPE_BOOL => 'TYPE_BOOL', self::TYPE_STRING => 'TYPE_STRING', self::TYPE_GROUP => 'TYPE_GROUP', self::TYPE_MESSAGE => 'TYPE_MESSAGE', self::TYPE_BYTES => 'TYPE_BYTES', self::TYPE_UINT32 => 'TYPE_UINT32', self::TYPE_ENUM => 'TYPE_ENUM', self::TYPE_SFIXED32 => 'TYPE_SFIXED32', self::TYPE_SFIXED64 => 'TYPE_SFIXED64', self::TYPE_SINT32 => 'TYPE_SINT32', self::TYPE_SINT64 => 'TYPE_SINT64', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Kind::class, \Google\Protobuf\Field_Kind::class); src/Google/Protobuf/FieldDescriptor.php000064400000005616147133775460014173 0ustar00internal_desc = $internal_desc; } /** * @return string Field name */ public function getName() { return $this->internal_desc->getName(); } /** * @return int Protobuf field number */ public function getNumber() { return $this->internal_desc->getNumber(); } /** * @return int */ public function getLabel() { return $this->internal_desc->getLabel(); } /** * @return int */ public function getType() { return $this->internal_desc->getType(); } /** * @return OneofDescriptor */ public function getContainingOneof() { return $this->getPublicDescriptor($this->internal_desc->getContainingOneof()); } /** * Gets the field's containing oneof, only if non-synthetic. * * @return null|OneofDescriptor */ public function getRealContainingOneof() { return $this->getPublicDescriptor($this->internal_desc->getRealContainingOneof()); } /** * @return boolean */ public function hasOptionalKeyword() { return $this->internal_desc->hasOptionalKeyword(); } /** * @return Descriptor Returns a descriptor for the field type if the field type is a message, otherwise throws \Exception * @throws \Exception */ public function getMessageType() { if ($this->getType() == GPBType::MESSAGE) { return $this->getPublicDescriptor($this->internal_desc->getMessageType()); } else { throw new \Exception("Cannot get message type for non-message field '" . $this->getName() . "'"); } } /** * @return EnumDescriptor Returns an enum descriptor if the field type is an enum, otherwise throws \Exception * @throws \Exception */ public function getEnumType() { if ($this->getType() == GPBType::ENUM) { return $this->getPublicDescriptor($this->internal_desc->getEnumType()); } else { throw new \Exception("Cannot get enum type for non-enum field '" . $this->getName() . "'"); } } /** * @return boolean */ public function isMap() { return $this->internal_desc->isMap(); } } src/Google/Protobuf/FieldMask.php000064400000016652147133775460012752 0ustar00google.protobuf.FieldMask */ class FieldMask extends \Google\Protobuf\Internal\Message { /** * The set of field mask paths. * * Generated from protobuf field repeated string paths = 1; */ private $paths; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array|\Google\Protobuf\Internal\RepeatedField $paths * The set of field mask paths. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\FieldMask::initOnce(); parent::__construct($data); } /** * The set of field mask paths. * * Generated from protobuf field repeated string paths = 1; * @return \Google\Protobuf\Internal\RepeatedField */ public function getPaths() { return $this->paths; } /** * The set of field mask paths. * * Generated from protobuf field repeated string paths = 1; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setPaths($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->paths = $arr; return $this; } } src/Google/Protobuf/Field_Cardinality.php000064400000001000147133775460014436 0ustar00google.protobuf.FloatValue */ class FloatValue extends \Google\Protobuf\Internal\Message { /** * The float value. * * Generated from protobuf field float value = 1; */ protected $value = 0.0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type float $value * The float value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The float value. * * Generated from protobuf field float value = 1; * @return float */ public function getValue() { return $this->value; } /** * The float value. * * Generated from protobuf field float value = 1; * @param float $var * @return $this */ public function setValue($var) { GPBUtil::checkFloat($var); $this->value = $var; return $this; } } src/Google/Protobuf/GPBEmpty.php000064400000001760147133775460012534 0ustar00google.protobuf.Empty */ class GPBEmpty extends \Google\Protobuf\Internal\Message { /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\GPBEmpty::initOnce(); parent::__construct($data); } } src/Google/Protobuf/Int32Value.php000064400000002732147133775460013001 0ustar00google.protobuf.Int32Value */ class Int32Value extends \Google\Protobuf\Internal\Message { /** * The int32 value. * * Generated from protobuf field int32 value = 1; */ protected $value = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $value * The int32 value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The int32 value. * * Generated from protobuf field int32 value = 1; * @return int */ public function getValue() { return $this->value; } /** * The int32 value. * * Generated from protobuf field int32 value = 1; * @param int $var * @return $this */ public function setValue($var) { GPBUtil::checkInt32($var); $this->value = $var; return $this; } } src/Google/Protobuf/Int64Value.php000064400000002757147133775460013015 0ustar00google.protobuf.Int64Value */ class Int64Value extends \Google\Protobuf\Internal\Message { /** * The int64 value. * * Generated from protobuf field int64 value = 1; */ protected $value = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int|string $value * The int64 value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The int64 value. * * Generated from protobuf field int64 value = 1; * @return int|string */ public function getValue() { return $this->value; } /** * The int64 value. * * Generated from protobuf field int64 value = 1; * @param int|string $var * @return $this */ public function setValue($var) { GPBUtil::checkInt64($var); $this->value = $var; return $this; } } src/Google/Protobuf/Internal/AnyBase.php000064400000006230147133775460014200 0ustar00type_url, 0, $url_prifix_len) != GPBUtil::TYPE_URL_PREFIX) { throw new \Exception( "Type url needs to be type.googleapis.com/fully-qulified"); } $fully_qualified_name = substr($this->type_url, $url_prifix_len); // Create message according to fully qualified name. $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByProtoName($fully_qualified_name); if (is_null($desc)) { throw new \Exception("Class ".$fully_qualified_name ." hasn't been added to descriptor pool"); } $klass = $desc->getClass(); $msg = new $klass(); // Merge data into message. $msg->mergeFromString($this->value); return $msg; } /** * The type_url will be created according to the given message’s type and * the value is encoded data from the given message.. * @param Message $msg A proto message. */ public function pack($msg) { if (!$msg instanceof Message) { trigger_error("Given parameter is not a message instance.", E_USER_ERROR); return; } // Set value using serialized message. $this->value = $msg->serializeToString(); // Set type url. $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName(get_class($msg)); $fully_qualified_name = $desc->getFullName(); $this->type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name; } /** * This method returns whether the type_url in any_message is corresponded * to the given class. * @param string $klass The fully qualified PHP class name of a proto message type. */ public function is($klass) { $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName($klass); $fully_qualified_name = $desc->getFullName(); $type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name; return $this->type_url === $type_url; } } src/Google/Protobuf/Internal/CodedInputStream.php000064400000024635147133775460016101 0ustar00buffer = $buffer; $this->buffer_size_after_limit = 0; $this->buffer_end = $end; $this->current = $start; $this->current_limit = $end; $this->legitimate_message_end = false; $this->recursion_budget = self::DEFAULT_RECURSION_LIMIT; $this->recursion_limit = self::DEFAULT_RECURSION_LIMIT; $this->total_bytes_limit = self::DEFAULT_TOTAL_BYTES_LIMIT; $this->total_bytes_read = $end - $start; } private function advance($amount) { $this->current += $amount; } public function bufferSize() { return $this->buffer_end - $this->current; } public function current() { return $this->total_bytes_read - ($this->buffer_end - $this->current + $this->buffer_size_after_limit); } public function substr($start, $end) { return substr($this->buffer, $start, $end - $start); } private function recomputeBufferLimits() { $this->buffer_end += $this->buffer_size_after_limit; $closest_limit = min($this->current_limit, $this->total_bytes_limit); if ($closest_limit < $this->total_bytes_read) { // The limit position is in the current buffer. We must adjust the // buffer size accordingly. $this->buffer_size_after_limit = $this->total_bytes_read - $closest_limit; $this->buffer_end -= $this->buffer_size_after_limit; } else { $this->buffer_size_after_limit = 0; } } private function consumedEntireMessage() { return $this->legitimate_message_end; } /** * Read uint32 into $var. Advance buffer with consumed bytes. If the * contained varint is larger than 32 bits, discard the high order bits. * @param $var */ public function readVarint32(&$var) { if (!$this->readVarint64($var)) { return false; } if (PHP_INT_SIZE == 4) { $var = bcmod($var, 4294967296); } else { $var &= 0xFFFFFFFF; } // Convert large uint32 to int32. if ($var > 0x7FFFFFFF) { if (PHP_INT_SIZE === 8) { $var = $var | (0xFFFFFFFF << 32); } else { $var = bcsub($var, 4294967296); } } $var = intval($var); return true; } /** * Read Uint64 into $var. Advance buffer with consumed bytes. * @param $var */ public function readVarint64(&$var) { $count = 0; if (PHP_INT_SIZE == 4) { $high = 0; $low = 0; $b = 0; do { if ($this->current === $this->buffer_end) { return false; } if ($count === self::MAX_VARINT_BYTES) { return false; } $b = ord($this->buffer[$this->current]); $bits = 7 * $count; if ($bits >= 32) { $high |= (($b & 0x7F) << ($bits - 32)); } else if ($bits > 25){ // $bits is 28 in this case. $low |= (($b & 0x7F) << 28); $high = ($b & 0x7F) >> 4; } else { $low |= (($b & 0x7F) << $bits); } $this->advance(1); $count += 1; } while ($b & 0x80); $var = GPBUtil::combineInt32ToInt64($high, $low); if (bccomp($var, 0) < 0) { $var = bcadd($var, "18446744073709551616"); } } else { $result = 0; $shift = 0; do { if ($this->current === $this->buffer_end) { return false; } if ($count === self::MAX_VARINT_BYTES) { return false; } $byte = ord($this->buffer[$this->current]); $result |= ($byte & 0x7f) << $shift; $shift += 7; $this->advance(1); $count += 1; } while ($byte > 0x7f); $var = $result; } return true; } /** * Read int into $var. If the result is larger than the largest integer, $var * will be -1. Advance buffer with consumed bytes. * @param $var */ public function readVarintSizeAsInt(&$var) { if (!$this->readVarint64($var)) { return false; } $var = (int)$var; return true; } /** * Read 32-bit unsigned 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 unsigned integer to $var. If the buffer has less than 8 bytes, * return false. Advance buffer with consumed bytes. * @param $var */ public function readLittleEndian64(&$var) { $data = null; if (!$this->readRaw(4, $data)) { return false; } $low = unpack('V', $data)[1]; if (!$this->readRaw(4, $data)) { return false; } $high = unpack('V', $data)[1]; if (PHP_INT_SIZE == 4) { $var = GPBUtil::combineInt32ToInt64($high, $low); } else { $var = ($high << 32) | $low; } return true; } /** * Read tag into $var. Advance buffer with consumed bytes. */ 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 largest 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; } if ($size === 0) { $buffer = ""; } else { $buffer = substr($this->buffer, $this->current, $size); $this->advance($size); } return true; } /* Places a limit on the number of bytes that the stream may read, starting * from the current position. Once the stream hits this limit, it will act * like the end of the input has been reached until popLimit() is called. * * As the names imply, the stream conceptually has a stack of limits. The * shortest limit on the stack is always enforced, even if it is not the top * limit. * * The value returned by pushLimit() is opaque to the caller, and must be * passed unchanged to the corresponding call to popLimit(). * * @param integer $byte_limit * @throws \Exception Fail to push limit. */ public function pushLimit($byte_limit) { // Current position relative to the beginning of the stream. $current_position = $this->current(); $old_limit = $this->current_limit; // security: byte_limit is possibly evil, so check for negative values // and overflow. if ($byte_limit >= 0 && $byte_limit <= PHP_INT_MAX - $current_position && $byte_limit <= $this->current_limit - $current_position) { $this->current_limit = $current_position + $byte_limit; $this->recomputeBufferLimits(); } else { throw new GPBDecodeException("Fail to push limit."); } return $old_limit; } /* The limit passed in is actually the *old* limit, which we returned from * PushLimit(). * * @param integer $byte_limit */ public function popLimit($byte_limit) { $this->current_limit = $byte_limit; $this->recomputeBufferLimits(); // We may no longer be at a legitimate message end. ReadTag() needs to // be called again to find out. $this->legitimate_message_end = false; } public function incrementRecursionDepthAndPushLimit( $byte_limit, &$old_limit, &$recursion_budget) { $old_limit = $this->pushLimit($byte_limit); $recursion_limit = --$this->recursion_limit; } public function decrementRecursionDepthAndPopLimit($byte_limit) { $result = $this->consumedEntireMessage(); $this->popLimit($byte_limit); ++$this->recursion_budget; return $result; } public function bytesUntilLimit() { if ($this->current_limit === PHP_INT_MAX) { return -1; } return $this->current_limit - $this->current; } } src/Google/Protobuf/Internal/CodedOutputStream.php000064400000007623147133775460016300 0ustar00current = 0; $this->buffer_size = $size; $this->buffer = str_repeat(chr(0), $this->buffer_size); } public function getData() { return $this->buffer; } public function writeVarint32($value, $trim) { $bytes = str_repeat(chr(0), self::MAX_VARINT64_BYTES); $size = self::writeVarintToArray($value, $bytes, $trim); return $this->writeRaw($bytes, $size); } public function writeVarint64($value) { $bytes = str_repeat(chr(0), self::MAX_VARINT64_BYTES); $size = self::writeVarintToArray($value, $bytes); return $this->writeRaw($bytes, $size); } public function writeLittleEndian32($value) { $bytes = str_repeat(chr(0), 4); $size = self::writeLittleEndian32ToArray($value, $bytes); return $this->writeRaw($bytes, $size); } public function writeLittleEndian64($value) { $bytes = str_repeat(chr(0), 8); $size = self::writeLittleEndian64ToArray($value, $bytes); return $this->writeRaw($bytes, $size); } public function writeTag($tag) { return $this->writeVarint32($tag, true); } public function writeRaw($data, $size) { if ($this->buffer_size < $size) { trigger_error("Output stream doesn't have enough buffer."); return false; } for ($i = 0; $i < $size; $i++) { $this->buffer[$this->current] = $data[$i]; $this->current++; $this->buffer_size--; } return true; } public static function writeVarintToArray($value, &$buffer, $trim = false) { $current = 0; $high = 0; $low = 0; if (PHP_INT_SIZE == 4) { GPBUtil::divideInt64ToInt32($value, $high, $low, $trim); } else { $low = $value; } while (($low >= 0x80 || $low < 0) || $high != 0) { $buffer[$current] = chr($low | 0x80); $value = ($value >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7)); $carry = ($high & 0x7F) << ((PHP_INT_SIZE << 3) - 7); $high = ($high >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7)); $low = (($low >> 7) & ~(0x7F << ((PHP_INT_SIZE << 3) - 7)) | $carry); $current++; } $buffer[$current] = chr($low); return $current + 1; } private static function writeLittleEndian32ToArray($value, &$buffer) { $buffer[0] = chr($value & 0x000000FF); $buffer[1] = chr(($value >> 8) & 0x000000FF); $buffer[2] = chr(($value >> 16) & 0x000000FF); $buffer[3] = chr(($value >> 24) & 0x000000FF); return 4; } private static function writeLittleEndian64ToArray($value, &$buffer) { $high = 0; $low = 0; if (PHP_INT_SIZE == 4) { GPBUtil::divideInt64ToInt32($value, $high, $low); } else { $low = $value & 0xFFFFFFFF; $high = ($value >> 32) & 0xFFFFFFFF; } $buffer[0] = chr($low & 0x000000FF); $buffer[1] = chr(($low >> 8) & 0x000000FF); $buffer[2] = chr(($low >> 16) & 0x000000FF); $buffer[3] = chr(($low >> 24) & 0x000000FF); $buffer[4] = chr($high & 0x000000FF); $buffer[5] = chr(($high >> 8) & 0x000000FF); $buffer[6] = chr(($high >> 16) & 0x000000FF); $buffer[7] = chr(($high >> 24) & 0x000000FF); return 8; } } src/Google/Protobuf/Internal/Descriptor.php000064400000011735147133775460015002 0ustar00public_desc = new \Google\Protobuf\Descriptor($this); } public function addOneofDecl($oneof) { $this->oneof_decl[] = $oneof; } public function getOneofDecl() { return $this->oneof_decl; } public function setFullName($full_name) { $this->full_name = $full_name; } public function getFullName() { return $this->full_name; } public function addField($field) { $this->field[$field->getNumber()] = $field; $this->json_to_field[$field->getJsonName()] = $field; $this->name_to_field[$field->getName()] = $field; $this->index_to_field[] = $field; } public function getField() { return $this->field; } public function addNestedType($desc) { $this->nested_type[] = $desc; } public function getNestedType() { return $this->nested_type; } public function addEnumType($desc) { $this->enum_type[] = $desc; } public function getEnumType() { return $this->enum_type; } public function getFieldByNumber($number) { if (!isset($this->field[$number])) { return NULL; } else { return $this->field[$number]; } } public function getFieldByJsonName($json_name) { if (!isset($this->json_to_field[$json_name])) { return NULL; } else { return $this->json_to_field[$json_name]; } } public function getFieldByName($name) { if (!isset($this->name_to_field[$name])) { return NULL; } else { return $this->name_to_field[$name]; } } public function getFieldByIndex($index) { if (count($this->index_to_field) <= $index) { return NULL; } else { return $this->index_to_field[$index]; } } public function setClass($klass) { $this->klass = $klass; } public function getClass() { return $this->klass; } public function setLegacyClass($klass) { $this->legacy_klass = $klass; } public function getLegacyClass() { return $this->legacy_klass; } public function setPreviouslyUnreservedClass($klass) { $this->previous_klass = $klass; } public function getPreviouslyUnreservedClass() { return $this->previous_klass; } public function setOptions($options) { $this->options = $options; } public function getOptions() { return $this->options; } public static function buildFromProto($proto, $file_proto, $containing) { $desc = new Descriptor(); $message_name_without_package = ""; $classname = ""; $legacy_classname = ""; $previous_classname = ""; $fullname = ""; GPBUtil::getFullClassName( $proto, $containing, $file_proto, $message_name_without_package, $classname, $legacy_classname, $fullname, $previous_classname); $desc->setFullName($fullname); $desc->setClass($classname); $desc->setLegacyClass($legacy_classname); $desc->setPreviouslyUnreservedClass($previous_classname); $desc->setOptions($proto->getOptions()); foreach ($proto->getField() as $field_proto) { $desc->addField(FieldDescriptor::buildFromProto($field_proto)); } // Handle nested types. foreach ($proto->getNestedType() as $nested_proto) { $desc->addNestedType(Descriptor::buildFromProto( $nested_proto, $file_proto, $message_name_without_package)); } // Handle nested enum. foreach ($proto->getEnumType() as $enum_proto) { $desc->addEnumType(EnumDescriptor::buildFromProto( $enum_proto, $file_proto, $message_name_without_package)); } // Handle oneof fields. $index = 0; foreach ($proto->getOneofDecl() as $oneof_proto) { $desc->addOneofDecl( OneofDescriptor::buildFromProto($oneof_proto, $desc, $index)); $index++; } return $desc; } } src/Google/Protobuf/Internal/DescriptorPool.php000064400000012273147133775460015632 0ustar00mergeFromString($data); foreach($files->getFile() as $file_proto) { $file = FileDescriptor::buildFromProto($file_proto); 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; $this->class_to_desc[$descriptor->getLegacyClass()] = $descriptor; $this->class_to_desc[$descriptor->getPreviouslyUnreservedClass()] = $descriptor; foreach ($descriptor->getNestedType() as $nested_type) { $this->addDescriptor($nested_type); } foreach ($descriptor->getEnumType() as $enum_type) { $this->addEnumDescriptor($enum_type); } } public function addEnumDescriptor($descriptor) { $this->proto_to_class[$descriptor->getFullName()] = $descriptor->getClass(); $this->class_to_enum_desc[$descriptor->getClass()] = $descriptor; $this->class_to_enum_desc[$descriptor->getLegacyClass()] = $descriptor; } public function getDescriptorByClassName($klass) { if (isset($this->class_to_desc[$klass])) { return $this->class_to_desc[$klass]; } else { return null; } } public function getEnumDescriptorByClassName($klass) { if (isset($this->class_to_enum_desc[$klass])) { return $this->class_to_enum_desc[$klass]; } else { return null; } } public function getDescriptorByProtoName($proto) { if (isset($this->proto_to_class[$proto])) { $klass = $this->proto_to_class[$proto]; return $this->class_to_desc[$klass]; } else { return null; } } public function getEnumDescriptorByProtoName($proto) { $klass = $this->proto_to_class[$proto]; return $this->class_to_enum_desc[$klass]; } private function crossLink(Descriptor $desc) { foreach ($desc->getField() as $field) { switch ($field->getType()) { case GPBType::MESSAGE: $proto = $field->getMessageType(); if ($proto[0] == '.') { $proto = substr($proto, 1); } $subdesc = $this->getDescriptorByProtoName($proto); if (is_null($subdesc)) { trigger_error( 'proto not added: ' . $proto . " for " . $desc->getFullName(), E_USER_ERROR); } $field->setMessageType($subdesc); break; case GPBType::ENUM: $proto = $field->getEnumType(); if ($proto[0] == '.') { $proto = substr($proto, 1); } $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.php000064400000026576147133775460016037 0ustar00google.protobuf.DescriptorProto */ class DescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2; */ private $field; /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6; */ private $extension; /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3; */ private $nested_type; /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4; */ private $enum_type; /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; */ private $extension_range; /** * Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8; */ private $oneof_decl; /** * Generated from protobuf field optional .google.protobuf.MessageOptions options = 7; */ protected $options = null; /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9; */ private $reserved_range; /** * Reserved field names, which may not be used by fields in the same message. * A given name may only be reserved once. * * Generated from protobuf field repeated string reserved_name = 10; */ private $reserved_name; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $field * @type array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $extension * @type array<\Google\Protobuf\Internal\DescriptorProto>|\Google\Protobuf\Internal\RepeatedField $nested_type * @type array<\Google\Protobuf\Internal\EnumDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $enum_type * @type array<\Google\Protobuf\Internal\DescriptorProto\ExtensionRange>|\Google\Protobuf\Internal\RepeatedField $extension_range * @type array<\Google\Protobuf\Internal\OneofDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $oneof_decl * @type \Google\Protobuf\Internal\MessageOptions $options * @type array<\Google\Protobuf\Internal\DescriptorProto\ReservedRange>|\Google\Protobuf\Internal\RepeatedField $reserved_range * @type array|\Google\Protobuf\Internal\RepeatedField $reserved_name * Reserved field names, which may not be used by fields in the same message. * A given name may only be reserved once. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getField() { return $this->field; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto field = 2; * @param array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setField($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class); $this->field = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6; * @return \Google\Protobuf\Internal\RepeatedField */ public function getExtension() { return $this->extension; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 6; * @param array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setExtension($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class); $this->extension = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getNestedType() { return $this->nested_type; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto nested_type = 3; * @param array<\Google\Protobuf\Internal\DescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setNestedType($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class); $this->nested_type = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4; * @return \Google\Protobuf\Internal\RepeatedField */ public function getEnumType() { return $this->enum_type; } /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 4; * @param array<\Google\Protobuf\Internal\EnumDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setEnumType($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class); $this->enum_type = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; * @return \Google\Protobuf\Internal\RepeatedField */ public function getExtensionRange() { return $this->extension_range; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; * @param array<\Google\Protobuf\Internal\DescriptorProto\ExtensionRange>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setExtensionRange($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto\ExtensionRange::class); $this->extension_range = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOneofDecl() { return $this->oneof_decl; } /** * Generated from protobuf field repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8; * @param array<\Google\Protobuf\Internal\OneofDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOneofDecl($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\OneofDescriptorProto::class); $this->oneof_decl = $arr; return $this; } /** * Generated from protobuf field optional .google.protobuf.MessageOptions options = 7; * @return \Google\Protobuf\Internal\MessageOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.MessageOptions options = 7; * @param \Google\Protobuf\Internal\MessageOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MessageOptions::class); $this->options = $var; return $this; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9; * @return \Google\Protobuf\Internal\RepeatedField */ public function getReservedRange() { return $this->reserved_range; } /** * Generated from protobuf field repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9; * @param array<\Google\Protobuf\Internal\DescriptorProto\ReservedRange>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setReservedRange($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto\ReservedRange::class); $this->reserved_range = $arr; return $this; } /** * Reserved field names, which may not be used by fields in the same message. * A given name may only be reserved once. * * Generated from protobuf field repeated string reserved_name = 10; * @return \Google\Protobuf\Internal\RepeatedField */ public function getReservedName() { return $this->reserved_name; } /** * Reserved field names, which may not be used by fields in the same message. * A given name may only be reserved once. * * Generated from protobuf field repeated string reserved_name = 10; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setReservedName($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->reserved_name = $arr; return $this; } } src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php000064400000007417147133775460020761 0ustar00google.protobuf.DescriptorProto.ExtensionRange */ class ExtensionRange extends \Google\Protobuf\Internal\Message { /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; */ protected $start = null; /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; */ protected $end = null; /** * Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3; */ protected $options = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $start * Inclusive. * @type int $end * Exclusive. * @type \Google\Protobuf\Internal\ExtensionRangeOptions $options * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @return int */ public function getStart() { return isset($this->start) ? $this->start : 0; } public function hasStart() { return isset($this->start); } public function clearStart() { unset($this->start); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @param int $var * @return $this */ public function setStart($var) { GPBUtil::checkInt32($var); $this->start = $var; return $this; } /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; * @return int */ public function getEnd() { return isset($this->end) ? $this->end : 0; } public function hasEnd() { return isset($this->end); } public function clearEnd() { unset($this->end); } /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; * @param int $var * @return $this */ public function setEnd($var) { GPBUtil::checkInt32($var); $this->end = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3; * @return \Google\Protobuf\Internal\ExtensionRangeOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.ExtensionRangeOptions options = 3; * @param \Google\Protobuf\Internal\ExtensionRangeOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\ExtensionRangeOptions::class); $this->options = $var; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(ExtensionRange::class, \Google\Protobuf\Internal\DescriptorProto_ExtensionRange::class); src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php000064400000005570147133775460020562 0ustar00google.protobuf.DescriptorProto.ReservedRange */ class ReservedRange extends \Google\Protobuf\Internal\Message { /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; */ protected $start = null; /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; */ protected $end = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $start * Inclusive. * @type int $end * Exclusive. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @return int */ public function getStart() { return isset($this->start) ? $this->start : 0; } public function hasStart() { return isset($this->start); } public function clearStart() { unset($this->start); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @param int $var * @return $this */ public function setStart($var) { GPBUtil::checkInt32($var); $this->start = $var; return $this; } /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; * @return int */ public function getEnd() { return isset($this->end) ? $this->end : 0; } public function hasEnd() { return isset($this->end); } public function clearEnd() { unset($this->end); } /** * Exclusive. * * Generated from protobuf field optional int32 end = 2; * @param int $var * @return $this */ public function setEnd($var) { GPBUtil::checkInt32($var); $this->end = $var; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(ReservedRange::class, \Google\Protobuf\Internal\DescriptorProto_ReservedRange::class); src/Google/Protobuf/Internal/DescriptorProto_ExtensionRange.php000064400000001153147133775460021030 0ustar00descriptor = new EnumDescriptor(); $this->descriptor->setFullName($full_name); $this->descriptor->setClass($klass); $this->pool = $pool; } public function value($name, $number) { $value = new EnumValueDescriptor($name, $number); $this->descriptor->addValue($number, $value); return $this; } public function finalizeToPool() { $this->pool->addEnumDescriptor($this->descriptor); } } src/Google/Protobuf/Internal/EnumDescriptor.php000064400000005112147133775460015617 0ustar00public_desc = new \Google\Protobuf\EnumDescriptor($this); } public function setFullName($full_name) { $this->full_name = $full_name; } public function getFullName() { return $this->full_name; } public function addValue($number, $value) { $this->value[$number] = $value; $this->name_to_value[$value->getName()] = $value; $this->value_descriptor[] = new EnumValueDescriptor($value->getName(), $number); } public function getValueByNumber($number) { if (isset($this->value[$number])) { return $this->value[$number]; } return null; } public function getValueByName($name) { if (isset($this->name_to_value[$name])) { return $this->name_to_value[$name]; } return null; } public function getValueDescriptorByIndex($index) { if (isset($this->value_descriptor[$index])) { return $this->value_descriptor[$index]; } return null; } public function getValueCount() { return count($this->value); } public function setClass($klass) { $this->klass = $klass; } public function getClass() { return $this->klass; } public function setLegacyClass($klass) { $this->legacy_klass = $klass; } public function getLegacyClass() { return $this->legacy_klass; } public static function buildFromProto($proto, $file_proto, $containing) { $desc = new EnumDescriptor(); $enum_name_without_package = ""; $classname = ""; $legacy_classname = ""; $fullname = ""; GPBUtil::getFullClassName( $proto, $containing, $file_proto, $enum_name_without_package, $classname, $legacy_classname, $fullname, $unused_previous_classname); $desc->setFullName($fullname); $desc->setClass($classname); $desc->setLegacyClass($legacy_classname); $values = $proto->getValue(); foreach ($values as $value) { $desc->addValue($value->getNumber(), $value); } return $desc; } } src/Google/Protobuf/Internal/EnumDescriptorProto.php000064400000015471147133775460016654 0ustar00google.protobuf.EnumDescriptorProto */ class EnumDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2; */ private $value; /** * Generated from protobuf field optional .google.protobuf.EnumOptions options = 3; */ protected $options = null; /** * Range of reserved numeric values. Reserved numeric values may not be used * by enum values in the same enum declaration. Reserved ranges may not * overlap. * * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4; */ private $reserved_range; /** * Reserved enum value names, which may not be reused. A given name may only * be reserved once. * * Generated from protobuf field repeated string reserved_name = 5; */ private $reserved_name; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type array<\Google\Protobuf\Internal\EnumValueDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $value * @type \Google\Protobuf\Internal\EnumOptions $options * @type array<\Google\Protobuf\Internal\EnumDescriptorProto\EnumReservedRange>|\Google\Protobuf\Internal\RepeatedField $reserved_range * Range of reserved numeric values. Reserved numeric values may not be used * by enum values in the same enum declaration. Reserved ranges may not * overlap. * @type array|\Google\Protobuf\Internal\RepeatedField $reserved_name * Reserved enum value names, which may not be reused. A given name may only * be reserved once. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getValue() { return $this->value; } /** * Generated from protobuf field repeated .google.protobuf.EnumValueDescriptorProto value = 2; * @param array<\Google\Protobuf\Internal\EnumValueDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setValue($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumValueDescriptorProto::class); $this->value = $arr; return $this; } /** * Generated from protobuf field optional .google.protobuf.EnumOptions options = 3; * @return \Google\Protobuf\Internal\EnumOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.EnumOptions options = 3; * @param \Google\Protobuf\Internal\EnumOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumOptions::class); $this->options = $var; return $this; } /** * Range of reserved numeric values. Reserved numeric values may not be used * by enum values in the same enum declaration. Reserved ranges may not * overlap. * * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4; * @return \Google\Protobuf\Internal\RepeatedField */ public function getReservedRange() { return $this->reserved_range; } /** * Range of reserved numeric values. Reserved numeric values may not be used * by enum values in the same enum declaration. Reserved ranges may not * overlap. * * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4; * @param array<\Google\Protobuf\Internal\EnumDescriptorProto\EnumReservedRange>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setReservedRange($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto\EnumReservedRange::class); $this->reserved_range = $arr; return $this; } /** * Reserved enum value names, which may not be reused. A given name may only * be reserved once. * * Generated from protobuf field repeated string reserved_name = 5; * @return \Google\Protobuf\Internal\RepeatedField */ public function getReservedName() { return $this->reserved_name; } /** * Reserved enum value names, which may not be reused. A given name may only * be reserved once. * * Generated from protobuf field repeated string reserved_name = 5; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setReservedName($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->reserved_name = $arr; return $this; } } src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php000064400000006032147133775460022226 0ustar00google.protobuf.EnumDescriptorProto.EnumReservedRange */ class EnumReservedRange extends \Google\Protobuf\Internal\Message { /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; */ protected $start = null; /** * Inclusive. * * Generated from protobuf field optional int32 end = 2; */ protected $end = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $start * Inclusive. * @type int $end * Inclusive. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @return int */ public function getStart() { return isset($this->start) ? $this->start : 0; } public function hasStart() { return isset($this->start); } public function clearStart() { unset($this->start); } /** * Inclusive. * * Generated from protobuf field optional int32 start = 1; * @param int $var * @return $this */ public function setStart($var) { GPBUtil::checkInt32($var); $this->start = $var; return $this; } /** * Inclusive. * * Generated from protobuf field optional int32 end = 2; * @return int */ public function getEnd() { return isset($this->end) ? $this->end : 0; } public function hasEnd() { return isset($this->end); } public function clearEnd() { unset($this->end); } /** * Inclusive. * * Generated from protobuf field optional int32 end = 2; * @param int $var * @return $this */ public function setEnd($var) { GPBUtil::checkInt32($var); $this->end = $var; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(EnumReservedRange::class, \Google\Protobuf\Internal\EnumDescriptorProto_EnumReservedRange::class); src/Google/Protobuf/Internal/EnumDescriptorProto_EnumReservedRange.php000064400000001216147133775460022305 0ustar00google.protobuf.EnumOptions */ class EnumOptions extends \Google\Protobuf\Internal\Message { /** * Set this option to true to allow mapping different tag names to the same * value. * * Generated from protobuf field optional bool allow_alias = 2; */ protected $allow_alias = null; /** * Is this enum deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum, or it will be completely ignored; in the very least, this * is a formalization for deprecating enums. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; */ protected $deprecated = null; /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * TODO Remove this legacy behavior once downstream teams have * had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; * @deprecated */ protected $deprecated_legacy_json_field_conflicts = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $allow_alias * Set this option to true to allow mapping different tag names to the same * value. * @type bool $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. * @type bool $deprecated_legacy_json_field_conflicts * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * TODO Remove this legacy behavior once downstream teams have * had time to migrate. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Set this option to true to allow mapping different tag names to the same * value. * * Generated from protobuf field optional bool allow_alias = 2; * @return bool */ public function getAllowAlias() { return isset($this->allow_alias) ? $this->allow_alias : false; } public function hasAllowAlias() { return isset($this->allow_alias); } public function clearAllowAlias() { unset($this->allow_alias); } /** * Set this option to true to allow mapping different tag names to the same * value. * * Generated from protobuf field optional bool allow_alias = 2; * @param bool $var * @return $this */ public function setAllowAlias($var) { GPBUtil::checkBool($var); $this->allow_alias = $var; return $this; } /** * Is this enum deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum, or it will be completely ignored; in the very least, this * is a formalization for deprecating enums. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this enum deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum, or it will be completely ignored; in the very least, this * is a formalization for deprecating enums. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * TODO Remove this legacy behavior once downstream teams have * had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; * @return bool * @deprecated */ public function getDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); return isset($this->deprecated_legacy_json_field_conflicts) ? $this->deprecated_legacy_json_field_conflicts : false; } public function hasDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); return isset($this->deprecated_legacy_json_field_conflicts); } public function clearDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); unset($this->deprecated_legacy_json_field_conflicts); } /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * TODO Remove this legacy behavior once downstream teams have * had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; * @param bool $var * @return $this * @deprecated */ public function setDeprecatedLegacyJsonFieldConflicts($var) { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); GPBUtil::checkBool($var); $this->deprecated_legacy_json_field_conflicts = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/EnumValueDescriptorProto.php000064400000006662147133775460017653 0ustar00google.protobuf.EnumValueDescriptorProto */ class EnumValueDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field optional int32 number = 2; */ protected $number = null; /** * Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3; */ protected $options = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type int $number * @type \Google\Protobuf\Internal\EnumValueOptions $options * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field optional int32 number = 2; * @return int */ public function getNumber() { return isset($this->number) ? $this->number : 0; } public function hasNumber() { return isset($this->number); } public function clearNumber() { unset($this->number); } /** * Generated from protobuf field optional int32 number = 2; * @param int $var * @return $this */ public function setNumber($var) { GPBUtil::checkInt32($var); $this->number = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3; * @return \Google\Protobuf\Internal\EnumValueOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.EnumValueOptions options = 3; * @param \Google\Protobuf\Internal\EnumValueOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\EnumValueOptions::class); $this->options = $var; return $this; } } src/Google/Protobuf/Internal/EnumValueOptions.php000064400000010272147133775460016134 0ustar00google.protobuf.EnumValueOptions */ class EnumValueOptions extends \Google\Protobuf\Internal\Message { /** * Is this enum value deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum value, or it will be completely ignored; in the very least, * this is a formalization for deprecating enum values. * * Generated from protobuf field optional bool deprecated = 1 [default = false]; */ protected $deprecated = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $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. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Is this enum value deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum value, or it will be completely ignored; in the very least, * this is a formalization for deprecating enum values. * * Generated from protobuf field optional bool deprecated = 1 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this enum value deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the enum value, or it will be completely ignored; in the very least, * this is a formalization for deprecating enum values. * * Generated from protobuf field optional bool deprecated = 1 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/ExtensionRangeOptions.php000064400000004367147133775460017174 0ustar00google.protobuf.ExtensionRangeOptions */ class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message { /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/FieldDescriptor.php000064400000016671147133775460015752 0ustar00public_desc = new \Google\Protobuf\FieldDescriptor($this); } public function setOneofIndex($index) { $this->oneof_index = $index; } public function getOneofIndex() { return $this->oneof_index; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } public function setJsonName($json_name) { $this->json_name = $json_name; } public function getJsonName() { return $this->json_name; } public function setSetter($setter) { $this->setter = $setter; } public function getSetter() { return $this->setter; } public function setGetter($getter) { $this->getter = $getter; } public function getGetter() { return $this->getter; } public function setNumber($number) { $this->number = $number; } public function getNumber() { return $this->number; } public function setLabel($label) { $this->label = $label; } public function getLabel() { return $this->label; } public function isRepeated() { return $this->label === GPBLabel::REPEATED; } public function setType($type) { $this->type = $type; } public function getType() { return $this->type; } public function setMessageType($message_type) { $this->message_type = $message_type; } public function getMessageType() { return $this->message_type; } public function setEnumType($enum_type) { $this->enum_type = $enum_type; } public function getEnumType() { return $this->enum_type; } public function setPacked($packed) { $this->packed = $packed; } public function getPacked() { return $this->packed; } public function getProto3Optional() { return $this->proto3_optional; } public function setProto3Optional($proto3_optional) { $this->proto3_optional = $proto3_optional; } public function getContainingOneof() { return $this->containing_oneof; } public function setContainingOneof($containing_oneof) { $this->containing_oneof = $containing_oneof; } public function getRealContainingOneof() { return !is_null($this->containing_oneof) && !$this->containing_oneof->isSynthetic() ? $this->containing_oneof : null; } 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(); } public function isTimestamp() { return $this->getType() == GPBType::MESSAGE && $this->getMessageType()->getClass() === "Google\Protobuf\Timestamp"; } public function isWrapperType() { if ($this->getType() == GPBType::MESSAGE) { $class = $this->getMessageType()->getClass(); return in_array($class, [ "Google\Protobuf\DoubleValue", "Google\Protobuf\FloatValue", "Google\Protobuf\Int64Value", "Google\Protobuf\UInt64Value", "Google\Protobuf\Int32Value", "Google\Protobuf\UInt32Value", "Google\Protobuf\BoolValue", "Google\Protobuf\StringValue", "Google\Protobuf\BytesValue", ]); } return false; } private static function isTypePackable($field_type) { return ($field_type !== GPBType::STRING && $field_type !== GPBType::GROUP && $field_type !== GPBType::MESSAGE && $field_type !== GPBType::BYTES); } /** * @param FieldDescriptorProto $proto * @return FieldDescriptor */ public static function getFieldDescriptor($proto) { $type_name = null; $type = $proto->getType(); switch ($type) { case GPBType::MESSAGE: case GPBType::GROUP: case GPBType::ENUM: $type_name = $proto->getTypeName(); break; default: break; } $oneof_index = $proto->hasOneofIndex() ? $proto->getOneofIndex() : -1; // TODO: once proto2 is supported, this default should be false // for proto2. if ($proto->getLabel() === GPBLabel::REPEATED && $proto->getType() !== GPBType::MESSAGE && $proto->getType() !== GPBType::GROUP && $proto->getType() !== GPBType::STRING && $proto->getType() !== GPBType::BYTES) { $packed = true; } else { $packed = false; } $options = $proto->getOptions(); if ($options !== null) { $packed = $options->getPacked(); } $field = new FieldDescriptor(); $field->setName($proto->getName()); if ($proto->hasJsonName()) { $json_name = $proto->getJsonName(); } else { $proto_name = $proto->getName(); $json_name = implode('', array_map('ucwords', explode('_', $proto_name))); if ($proto_name[0] !== "_" && !ctype_upper($proto_name[0])) { $json_name = lcfirst($json_name); } } $field->setJsonName($json_name); $camel_name = implode('', array_map('ucwords', explode('_', $proto->getName()))); $field->setGetter('get' . $camel_name); $field->setSetter('set' . $camel_name); $field->setType($proto->getType()); $field->setNumber($proto->getNumber()); $field->setLabel($proto->getLabel()); $field->setPacked($packed); $field->setOneofIndex($oneof_index); $field->setProto3Optional($proto->getProto3Optional()); // At this time, the message/enum type may have not been added to pool. // So we use the type name as place holder and will replace it with the // actual descriptor in cross building. switch ($type) { case GPBType::MESSAGE: $field->setMessageType($type_name); break; case GPBType::ENUM: $field->setEnumType($type_name); break; default: break; } return $field; } public static function buildFromProto($proto) { return FieldDescriptor::getFieldDescriptor($proto); } } src/Google/Protobuf/Internal/FieldDescriptorProto.php000064400000051662147133775460016775 0ustar00google.protobuf.FieldDescriptorProto */ class FieldDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field optional int32 number = 3; */ protected $number = null; /** * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4; */ protected $label = null; /** * If type_name is set, this need not be set. If both this and type_name * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. * * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5; */ protected $type = null; /** * For message and enum types, this is the name of the type. If the name * starts with a '.', it is fully-qualified. Otherwise, C++-like scoping * rules are used to find the type (i.e. first the nested types within this * message are searched, then within the parent, on up to the root * namespace). * * Generated from protobuf field optional string type_name = 6; */ protected $type_name = null; /** * For extensions, this is the name of the type being extended. It is * resolved in the same manner as type_name. * * Generated from protobuf field optional string extendee = 2; */ protected $extendee = null; /** * 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. * * Generated from protobuf field optional string default_value = 7; */ protected $default_value = null; /** * If set, gives the index of a oneof in the containing type's oneof_decl * list. This field is a member of that oneof. * * Generated from protobuf field optional int32 oneof_index = 9; */ protected $oneof_index = null; /** * JSON name of this field. The value is set by protocol compiler. If the * user has set a "json_name" option on this field, that option's value * will be used. Otherwise, it's deduced from the field's name by converting * it to camelCase. * * Generated from protobuf field optional string json_name = 10; */ protected $json_name = null; /** * Generated from protobuf field optional .google.protobuf.FieldOptions options = 8; */ protected $options = null; /** * If true, this is a proto3 "optional". When a proto3 field is optional, it * tracks presence regardless of field type. * When proto3_optional is true, this field must be belong to a oneof to * signal to old proto3 clients that presence is tracked for this field. This * oneof is known as a "synthetic" oneof, and this field must be its sole * member (each proto3 optional field gets its own synthetic oneof). Synthetic * oneofs exist in the descriptor only, and do not generate any API. Synthetic * oneofs must be ordered after all "real" oneofs. * For message fields, proto3_optional doesn't create any semantic change, * since non-repeated message fields always track presence. However it still * indicates the semantic detail of whether the user wrote "optional" or not. * This can be useful for round-tripping the .proto file. For consistency we * give message fields a synthetic oneof also, even though it is not required * to track presence. This is especially important because the parser can't * tell if a field is a message or an enum, so it must always create a * synthetic oneof. * Proto2 optional fields do not set this flag, because they already indicate * optional with `LABEL_OPTIONAL`. * * Generated from protobuf field optional bool proto3_optional = 17; */ protected $proto3_optional = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type int $number * @type int $label * @type int $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. * @type string $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). * @type string $extendee * For extensions, this is the name of the type being extended. It is * resolved in the same manner as type_name. * @type string $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. * @type int $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. * @type string $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. * @type \Google\Protobuf\Internal\FieldOptions $options * @type bool $proto3_optional * If true, this is a proto3 "optional". When a proto3 field is optional, it * tracks presence regardless of field type. * When proto3_optional is true, this field must be belong to a oneof to * signal to old proto3 clients that presence is tracked for this field. This * oneof is known as a "synthetic" oneof, and this field must be its sole * member (each proto3 optional field gets its own synthetic oneof). Synthetic * oneofs exist in the descriptor only, and do not generate any API. Synthetic * oneofs must be ordered after all "real" oneofs. * For message fields, proto3_optional doesn't create any semantic change, * since non-repeated message fields always track presence. However it still * indicates the semantic detail of whether the user wrote "optional" or not. * This can be useful for round-tripping the .proto file. For consistency we * give message fields a synthetic oneof also, even though it is not required * to track presence. This is especially important because the parser can't * tell if a field is a message or an enum, so it must always create a * synthetic oneof. * Proto2 optional fields do not set this flag, because they already indicate * optional with `LABEL_OPTIONAL`. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field optional int32 number = 3; * @return int */ public function getNumber() { return isset($this->number) ? $this->number : 0; } public function hasNumber() { return isset($this->number); } public function clearNumber() { unset($this->number); } /** * Generated from protobuf field optional int32 number = 3; * @param int $var * @return $this */ public function setNumber($var) { GPBUtil::checkInt32($var); $this->number = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4; * @return int */ public function getLabel() { return isset($this->label) ? $this->label : 0; } public function hasLabel() { return isset($this->label); } public function clearLabel() { unset($this->label); } /** * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Label label = 4; * @param int $var * @return $this */ public function setLabel($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto\Label::class); $this->label = $var; return $this; } /** * If type_name is set, this need not be set. If both this and type_name * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. * * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5; * @return int */ public function getType() { return isset($this->type) ? $this->type : 0; } public function hasType() { return isset($this->type); } public function clearType() { unset($this->type); } /** * If type_name is set, this need not be set. If both this and type_name * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. * * Generated from protobuf field optional .google.protobuf.FieldDescriptorProto.Type type = 5; * @param int $var * @return $this */ public function setType($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldDescriptorProto\Type::class); $this->type = $var; return $this; } /** * For message and enum types, this is the name of the type. If the name * starts with a '.', it is fully-qualified. Otherwise, C++-like scoping * rules are used to find the type (i.e. first the nested types within this * message are searched, then within the parent, on up to the root * namespace). * * Generated from protobuf field optional string type_name = 6; * @return string */ public function getTypeName() { return isset($this->type_name) ? $this->type_name : ''; } public function hasTypeName() { return isset($this->type_name); } public function clearTypeName() { unset($this->type_name); } /** * For message and enum types, this is the name of the type. If the name * starts with a '.', it is fully-qualified. Otherwise, C++-like scoping * rules are used to find the type (i.e. first the nested types within this * message are searched, then within the parent, on up to the root * namespace). * * Generated from protobuf field optional string type_name = 6; * @param string $var * @return $this */ public function setTypeName($var) { GPBUtil::checkString($var, True); $this->type_name = $var; return $this; } /** * For extensions, this is the name of the type being extended. It is * resolved in the same manner as type_name. * * Generated from protobuf field optional string extendee = 2; * @return string */ public function getExtendee() { return isset($this->extendee) ? $this->extendee : ''; } public function hasExtendee() { return isset($this->extendee); } public function clearExtendee() { unset($this->extendee); } /** * For extensions, this is the name of the type being extended. It is * resolved in the same manner as type_name. * * Generated from protobuf field optional string extendee = 2; * @param string $var * @return $this */ public function setExtendee($var) { GPBUtil::checkString($var, True); $this->extendee = $var; return $this; } /** * 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. * * Generated from protobuf field optional string default_value = 7; * @return string */ public function getDefaultValue() { return isset($this->default_value) ? $this->default_value : ''; } public function hasDefaultValue() { return isset($this->default_value); } public function clearDefaultValue() { unset($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. * * Generated from protobuf field optional string default_value = 7; * @param string $var * @return $this */ public function setDefaultValue($var) { GPBUtil::checkString($var, True); $this->default_value = $var; return $this; } /** * If set, gives the index of a oneof in the containing type's oneof_decl * list. This field is a member of that oneof. * * Generated from protobuf field optional int32 oneof_index = 9; * @return int */ public function getOneofIndex() { return isset($this->oneof_index) ? $this->oneof_index : 0; } public function hasOneofIndex() { return isset($this->oneof_index); } public function clearOneofIndex() { unset($this->oneof_index); } /** * If set, gives the index of a oneof in the containing type's oneof_decl * list. This field is a member of that oneof. * * Generated from protobuf field optional int32 oneof_index = 9; * @param int $var * @return $this */ public function setOneofIndex($var) { GPBUtil::checkInt32($var); $this->oneof_index = $var; return $this; } /** * JSON name of this field. The value is set by protocol compiler. If the * user has set a "json_name" option on this field, that option's value * will be used. Otherwise, it's deduced from the field's name by converting * it to camelCase. * * Generated from protobuf field optional string json_name = 10; * @return string */ public function getJsonName() { return isset($this->json_name) ? $this->json_name : ''; } public function hasJsonName() { return isset($this->json_name); } public function clearJsonName() { unset($this->json_name); } /** * JSON name of this field. The value is set by protocol compiler. If the * user has set a "json_name" option on this field, that option's value * will be used. Otherwise, it's deduced from the field's name by converting * it to camelCase. * * Generated from protobuf field optional string json_name = 10; * @param string $var * @return $this */ public function setJsonName($var) { GPBUtil::checkString($var, True); $this->json_name = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.FieldOptions options = 8; * @return \Google\Protobuf\Internal\FieldOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.FieldOptions options = 8; * @param \Google\Protobuf\Internal\FieldOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FieldOptions::class); $this->options = $var; return $this; } /** * If true, this is a proto3 "optional". When a proto3 field is optional, it * tracks presence regardless of field type. * When proto3_optional is true, this field must be belong to a oneof to * signal to old proto3 clients that presence is tracked for this field. This * oneof is known as a "synthetic" oneof, and this field must be its sole * member (each proto3 optional field gets its own synthetic oneof). Synthetic * oneofs exist in the descriptor only, and do not generate any API. Synthetic * oneofs must be ordered after all "real" oneofs. * For message fields, proto3_optional doesn't create any semantic change, * since non-repeated message fields always track presence. However it still * indicates the semantic detail of whether the user wrote "optional" or not. * This can be useful for round-tripping the .proto file. For consistency we * give message fields a synthetic oneof also, even though it is not required * to track presence. This is especially important because the parser can't * tell if a field is a message or an enum, so it must always create a * synthetic oneof. * Proto2 optional fields do not set this flag, because they already indicate * optional with `LABEL_OPTIONAL`. * * Generated from protobuf field optional bool proto3_optional = 17; * @return bool */ public function getProto3Optional() { return isset($this->proto3_optional) ? $this->proto3_optional : false; } public function hasProto3Optional() { return isset($this->proto3_optional); } public function clearProto3Optional() { unset($this->proto3_optional); } /** * If true, this is a proto3 "optional". When a proto3 field is optional, it * tracks presence regardless of field type. * When proto3_optional is true, this field must be belong to a oneof to * signal to old proto3 clients that presence is tracked for this field. This * oneof is known as a "synthetic" oneof, and this field must be its sole * member (each proto3 optional field gets its own synthetic oneof). Synthetic * oneofs exist in the descriptor only, and do not generate any API. Synthetic * oneofs must be ordered after all "real" oneofs. * For message fields, proto3_optional doesn't create any semantic change, * since non-repeated message fields always track presence. However it still * indicates the semantic detail of whether the user wrote "optional" or not. * This can be useful for round-tripping the .proto file. For consistency we * give message fields a synthetic oneof also, even though it is not required * to track presence. This is especially important because the parser can't * tell if a field is a message or an enum, so it must always create a * synthetic oneof. * Proto2 optional fields do not set this flag, because they already indicate * optional with `LABEL_OPTIONAL`. * * Generated from protobuf field optional bool proto3_optional = 17; * @param bool $var * @return $this */ public function setProto3Optional($var) { GPBUtil::checkBool($var); $this->proto3_optional = $var; return $this; } } src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php000064400000003202147133775460017777 0ustar00google.protobuf.FieldDescriptorProto.Label */ class Label { /** * 0 is reserved for errors * * Generated from protobuf enum LABEL_OPTIONAL = 1; */ const LABEL_OPTIONAL = 1; /** * Generated from protobuf enum LABEL_REQUIRED = 2; */ const LABEL_REQUIRED = 2; /** * Generated from protobuf enum LABEL_REPEATED = 3; */ const LABEL_REPEATED = 3; private static $valueToName = [ self::LABEL_OPTIONAL => 'LABEL_OPTIONAL', self::LABEL_REQUIRED => 'LABEL_REQUIRED', self::LABEL_REPEATED => 'LABEL_REPEATED', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Label::class, \Google\Protobuf\Internal\FieldDescriptorProto_Label::class); src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php000064400000011000147133775460017674 0ustar00google.protobuf.FieldDescriptorProto.Type */ class Type { /** * 0 is reserved for errors. * Order is weird for historical reasons. * * Generated from protobuf enum TYPE_DOUBLE = 1; */ const TYPE_DOUBLE = 1; /** * Generated from protobuf enum TYPE_FLOAT = 2; */ const TYPE_FLOAT = 2; /** * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if * negative values are likely. * * Generated from protobuf enum TYPE_INT64 = 3; */ const TYPE_INT64 = 3; /** * Generated from protobuf enum TYPE_UINT64 = 4; */ const TYPE_UINT64 = 4; /** * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if * negative values are likely. * * Generated from protobuf enum TYPE_INT32 = 5; */ const TYPE_INT32 = 5; /** * Generated from protobuf enum TYPE_FIXED64 = 6; */ const TYPE_FIXED64 = 6; /** * Generated from protobuf enum TYPE_FIXED32 = 7; */ const TYPE_FIXED32 = 7; /** * Generated from protobuf enum TYPE_BOOL = 8; */ const TYPE_BOOL = 8; /** * Generated from protobuf enum TYPE_STRING = 9; */ const TYPE_STRING = 9; /** * Tag-delimited aggregate. * Group type is deprecated and not supported in proto3. However, Proto3 * implementations should still be able to parse the group wire format and * treat group fields as unknown fields. * * Generated from protobuf enum TYPE_GROUP = 10; */ const TYPE_GROUP = 10; /** * Length-delimited aggregate. * * Generated from protobuf enum TYPE_MESSAGE = 11; */ const TYPE_MESSAGE = 11; /** * New in version 2. * * Generated from protobuf enum TYPE_BYTES = 12; */ const TYPE_BYTES = 12; /** * Generated from protobuf enum TYPE_UINT32 = 13; */ const TYPE_UINT32 = 13; /** * Generated from protobuf enum TYPE_ENUM = 14; */ const TYPE_ENUM = 14; /** * Generated from protobuf enum TYPE_SFIXED32 = 15; */ const TYPE_SFIXED32 = 15; /** * Generated from protobuf enum TYPE_SFIXED64 = 16; */ const TYPE_SFIXED64 = 16; /** * Uses ZigZag encoding. * * Generated from protobuf enum TYPE_SINT32 = 17; */ const TYPE_SINT32 = 17; /** * Uses ZigZag encoding. * * Generated from protobuf enum TYPE_SINT64 = 18; */ const TYPE_SINT64 = 18; private static $valueToName = [ self::TYPE_DOUBLE => 'TYPE_DOUBLE', self::TYPE_FLOAT => 'TYPE_FLOAT', self::TYPE_INT64 => 'TYPE_INT64', self::TYPE_UINT64 => 'TYPE_UINT64', self::TYPE_INT32 => 'TYPE_INT32', self::TYPE_FIXED64 => 'TYPE_FIXED64', self::TYPE_FIXED32 => 'TYPE_FIXED32', self::TYPE_BOOL => 'TYPE_BOOL', self::TYPE_STRING => 'TYPE_STRING', self::TYPE_GROUP => 'TYPE_GROUP', self::TYPE_MESSAGE => 'TYPE_MESSAGE', self::TYPE_BYTES => 'TYPE_BYTES', self::TYPE_UINT32 => 'TYPE_UINT32', self::TYPE_ENUM => 'TYPE_ENUM', self::TYPE_SFIXED32 => 'TYPE_SFIXED32', self::TYPE_SFIXED64 => 'TYPE_SFIXED64', self::TYPE_SINT32 => 'TYPE_SINT32', self::TYPE_SINT64 => 'TYPE_SINT64', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Type::class, \Google\Protobuf\Internal\FieldDescriptorProto_Type::class); src/Google/Protobuf/Internal/FieldDescriptorProto_Label.php000064400000001127147133775460020063 0ustar00google.protobuf.FieldOptions */ class FieldOptions extends \Google\Protobuf\Internal\Message { /** * The ctype option instructs the C++ code generator to use a different * representation of the field than it normally would. See the specific * options below. This option is not yet implemented in the open source * release -- sorry, we'll try to include it in a future version! * * Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; */ protected $ctype = null; /** * 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-prefixed blob. In proto3, only explicit setting it to * false will avoid using packed encoding. * * Generated from protobuf field optional bool packed = 2; */ protected $packed = null; /** * The jstype option determines the JavaScript type used for values of the * field. The option is permitted only for 64 bit integral and fixed types * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING * is represented as JavaScript string, which avoids loss of precision that * can happen when a large value is converted to a floating point JavaScript. * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to * use the JavaScript "number" type. The behavior of the default option * JS_NORMAL is implementation dependent. * This option is an enum to permit additional types to be added, e.g. * goog.math.Integer. * * Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL]; */ protected $jstype = null; /** * 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. * As of May 2022, lazy verifies the contents of the byte stream during * parsing. An invalid byte stream will cause the overall parsing to fail. * * Generated from protobuf field optional bool lazy = 5 [default = false]; */ protected $lazy = null; /** * unverified_lazy does no correctness checks on the byte stream. This should * only be used where lazy with verification is prohibitive for performance * reasons. * * Generated from protobuf field optional bool unverified_lazy = 15 [default = false]; */ protected $unverified_lazy = null; /** * Is this field deprecated? * Depending on the target platform, this can emit Deprecated annotations * for accessors, or it will be completely ignored; in the very least, this * is a formalization for deprecating fields. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; */ protected $deprecated = null; /** * For Google-internal migration only. Do not use. * * Generated from protobuf field optional bool weak = 10 [default = false]; */ protected $weak = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $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! * @type bool $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-prefixed blob. In proto3, only explicit setting it to * false will avoid using packed encoding. * @type int $jstype * The jstype option determines the JavaScript type used for values of the * field. The option is permitted only for 64 bit integral and fixed types * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING * is represented as JavaScript string, which avoids loss of precision that * can happen when a large value is converted to a floating point JavaScript. * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to * use the JavaScript "number" type. The behavior of the default option * JS_NORMAL is implementation dependent. * This option is an enum to permit additional types to be added, e.g. * goog.math.Integer. * @type bool $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. * As of May 2022, lazy verifies the contents of the byte stream during * parsing. An invalid byte stream will cause the overall parsing to fail. * @type bool $unverified_lazy * unverified_lazy does no correctness checks on the byte stream. This should * only be used where lazy with verification is prohibitive for performance * reasons. * @type bool $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. * @type bool $weak * For Google-internal migration only. Do not use. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * The ctype option instructs the C++ code generator to use a different * representation of the field than it normally would. See the specific * options below. This option is not yet implemented in the open source * release -- sorry, we'll try to include it in a future version! * * Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; * @return int */ public function getCtype() { return isset($this->ctype) ? $this->ctype : 0; } public function hasCtype() { return isset($this->ctype); } public function clearCtype() { unset($this->ctype); } /** * The ctype option instructs the C++ code generator to use a different * representation of the field than it normally would. See the specific * options below. This option is not yet implemented in the open source * release -- sorry, we'll try to include it in a future version! * * Generated from protobuf field optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; * @param int $var * @return $this */ public function setCtype($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions\CType::class); $this->ctype = $var; return $this; } /** * 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-prefixed blob. In proto3, only explicit setting it to * false will avoid using packed encoding. * * Generated from protobuf field optional bool packed = 2; * @return bool */ public function getPacked() { return isset($this->packed) ? $this->packed : false; } public function hasPacked() { return isset($this->packed); } public function clearPacked() { unset($this->packed); } /** * The packed option can be enabled for repeated primitive fields to enable * a more efficient representation on the wire. Rather than repeatedly * writing the tag and type for each element, the entire array is encoded as * a single length-delimited blob. In proto3, only explicit setting it to * false will avoid using packed encoding. * * Generated from protobuf field optional bool packed = 2; * @param bool $var * @return $this */ public function setPacked($var) { GPBUtil::checkBool($var); $this->packed = $var; return $this; } /** * The jstype option determines the JavaScript type used for values of the * field. The option is permitted only for 64 bit integral and fixed types * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING * is represented as JavaScript string, which avoids loss of precision that * can happen when a large value is converted to a floating point JavaScript. * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to * use the JavaScript "number" type. The behavior of the default option * JS_NORMAL is implementation dependent. * This option is an enum to permit additional types to be added, e.g. * goog.math.Integer. * * Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL]; * @return int */ public function getJstype() { return isset($this->jstype) ? $this->jstype : 0; } public function hasJstype() { return isset($this->jstype); } public function clearJstype() { unset($this->jstype); } /** * The jstype option determines the JavaScript type used for values of the * field. The option is permitted only for 64 bit integral and fixed types * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING * is represented as JavaScript string, which avoids loss of precision that * can happen when a large value is converted to a floating point JavaScript. * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to * use the JavaScript "number" type. The behavior of the default option * JS_NORMAL is implementation dependent. * This option is an enum to permit additional types to be added, e.g. * goog.math.Integer. * * Generated from protobuf field optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL]; * @param int $var * @return $this */ public function setJstype($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions\JSType::class); $this->jstype = $var; return $this; } /** * 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. * As of May 2022, lazy verifies the contents of the byte stream during * parsing. An invalid byte stream will cause the overall parsing to fail. * * Generated from protobuf field optional bool lazy = 5 [default = false]; * @return bool */ public function getLazy() { return isset($this->lazy) ? $this->lazy : false; } public function hasLazy() { return isset($this->lazy); } public function clearLazy() { unset($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. * As of May 2022, lazy verifies the contents of the byte stream during * parsing. An invalid byte stream will cause the overall parsing to fail. * * Generated from protobuf field optional bool lazy = 5 [default = false]; * @param bool $var * @return $this */ public function setLazy($var) { GPBUtil::checkBool($var); $this->lazy = $var; return $this; } /** * unverified_lazy does no correctness checks on the byte stream. This should * only be used where lazy with verification is prohibitive for performance * reasons. * * Generated from protobuf field optional bool unverified_lazy = 15 [default = false]; * @return bool */ public function getUnverifiedLazy() { return isset($this->unverified_lazy) ? $this->unverified_lazy : false; } public function hasUnverifiedLazy() { return isset($this->unverified_lazy); } public function clearUnverifiedLazy() { unset($this->unverified_lazy); } /** * unverified_lazy does no correctness checks on the byte stream. This should * only be used where lazy with verification is prohibitive for performance * reasons. * * Generated from protobuf field optional bool unverified_lazy = 15 [default = false]; * @param bool $var * @return $this */ public function setUnverifiedLazy($var) { GPBUtil::checkBool($var); $this->unverified_lazy = $var; return $this; } /** * Is this field deprecated? * Depending on the target platform, this can emit Deprecated annotations * for accessors, or it will be completely ignored; in the very least, this * is a formalization for deprecating fields. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this field deprecated? * Depending on the target platform, this can emit Deprecated annotations * for accessors, or it will be completely ignored; in the very least, this * is a formalization for deprecating fields. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * For Google-internal migration only. Do not use. * * Generated from protobuf field optional bool weak = 10 [default = false]; * @return bool */ public function getWeak() { return isset($this->weak) ? $this->weak : false; } public function hasWeak() { return isset($this->weak); } public function clearWeak() { unset($this->weak); } /** * For Google-internal migration only. Do not use. * * Generated from protobuf field optional bool weak = 10 [default = false]; * @param bool $var * @return $this */ public function setWeak($var) { GPBUtil::checkBool($var); $this->weak = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/FieldOptions/CType.php000064400000003017147133775460016301 0ustar00google.protobuf.FieldOptions.CType */ class CType { /** * Default mode. * * Generated from protobuf enum STRING = 0; */ const STRING = 0; /** * Generated from protobuf enum CORD = 1; */ const CORD = 1; /** * Generated from protobuf enum STRING_PIECE = 2; */ const STRING_PIECE = 2; private static $valueToName = [ self::STRING => 'STRING', self::CORD => 'CORD', self::STRING_PIECE => 'STRING_PIECE', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(CType::class, \Google\Protobuf\Internal\FieldOptions_CType::class); src/Google/Protobuf/Internal/FieldOptions/JSType.php000064400000003173147133775460016436 0ustar00google.protobuf.FieldOptions.JSType */ class JSType { /** * Use the default type. * * Generated from protobuf enum JS_NORMAL = 0; */ const JS_NORMAL = 0; /** * Use JavaScript strings. * * Generated from protobuf enum JS_STRING = 1; */ const JS_STRING = 1; /** * Use JavaScript numbers. * * Generated from protobuf enum JS_NUMBER = 2; */ const JS_NUMBER = 2; private static $valueToName = [ self::JS_NORMAL => 'JS_NORMAL', self::JS_STRING => 'JS_STRING', self::JS_NUMBER => 'JS_NUMBER', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(JSType::class, \Google\Protobuf\Internal\FieldOptions_JSType::class); src/Google/Protobuf/Internal/FieldOptions_CType.php000064400000001057147133775460016363 0ustar00package = $package; } public function getPackage() { return $this->package; } public function getMessageType() { return $this->message_type; } public function addMessageType($desc) { $this->message_type[] = $desc; } public function getEnumType() { return $this->enum_type; } public function addEnumType($desc) { $this->enum_type[]= $desc; } public static function buildFromProto($proto) { $file = new FileDescriptor(); $file->setPackage($proto->getPackage()); foreach ($proto->getMessageType() as $message_proto) { $file->addMessageType(Descriptor::buildFromProto( $message_proto, $proto, "")); } foreach ($proto->getEnumType() as $enum_proto) { $file->addEnumType( EnumDescriptor::buildFromProto( $enum_proto, $proto, "")); } return $file; } } src/Google/Protobuf/Internal/FileDescriptorProto.php000064400000040755147133775460016632 0ustar00google.protobuf.FileDescriptorProto */ class FileDescriptorProto extends \Google\Protobuf\Internal\Message { /** * file name, relative to root of source tree * * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * e.g. "foo", "foo.bar", etc. * * Generated from protobuf field optional string package = 2; */ protected $package = null; /** * Names of files imported by this file. * * Generated from protobuf field repeated string dependency = 3; */ private $dependency; /** * Indexes of the public imported files in the dependency list above. * * Generated from protobuf field repeated int32 public_dependency = 10; */ private $public_dependency; /** * Indexes of the weak imported files in the dependency list. * For Google-internal migration only. Do not use. * * Generated from protobuf field repeated int32 weak_dependency = 11; */ private $weak_dependency; /** * All top-level definitions in this file. * * Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4; */ private $message_type; /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5; */ private $enum_type; /** * Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6; */ private $service; /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7; */ private $extension; /** * Generated from protobuf field optional .google.protobuf.FileOptions options = 8; */ protected $options = null; /** * This field contains optional information about the original source code. * You may safely remove this entire field without harming runtime * functionality of the descriptors -- the information is needed only by * development tools. * * Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9; */ protected $source_code_info = null; /** * The syntax of the proto file. * The supported values are "proto2", "proto3", and "editions". * If `edition` is present, this value must be "editions". * * Generated from protobuf field optional string syntax = 12; */ protected $syntax = null; /** * The edition of the proto file, which is an opaque string. * * Generated from protobuf field optional string edition = 13; */ protected $edition = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * file name, relative to root of source tree * @type string $package * e.g. "foo", "foo.bar", etc. * @type array|\Google\Protobuf\Internal\RepeatedField $dependency * Names of files imported by this file. * @type array|\Google\Protobuf\Internal\RepeatedField $public_dependency * Indexes of the public imported files in the dependency list above. * @type array|\Google\Protobuf\Internal\RepeatedField $weak_dependency * Indexes of the weak imported files in the dependency list. * For Google-internal migration only. Do not use. * @type array<\Google\Protobuf\Internal\DescriptorProto>|\Google\Protobuf\Internal\RepeatedField $message_type * All top-level definitions in this file. * @type array<\Google\Protobuf\Internal\EnumDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $enum_type * @type array<\Google\Protobuf\Internal\ServiceDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $service * @type array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $extension * @type \Google\Protobuf\Internal\FileOptions $options * @type \Google\Protobuf\Internal\SourceCodeInfo $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. * @type string $syntax * The syntax of the proto file. * The supported values are "proto2", "proto3", and "editions". * If `edition` is present, this value must be "editions". * @type string $edition * The edition of the proto file, which is an opaque string. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * file name, relative to root of source tree * * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * file name, relative to root of source tree * * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * e.g. "foo", "foo.bar", etc. * * Generated from protobuf field optional string package = 2; * @return string */ public function getPackage() { return isset($this->package) ? $this->package : ''; } public function hasPackage() { return isset($this->package); } public function clearPackage() { unset($this->package); } /** * e.g. "foo", "foo.bar", etc. * * Generated from protobuf field optional string package = 2; * @param string $var * @return $this */ public function setPackage($var) { GPBUtil::checkString($var, True); $this->package = $var; return $this; } /** * Names of files imported by this file. * * Generated from protobuf field repeated string dependency = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getDependency() { return $this->dependency; } /** * Names of files imported by this file. * * Generated from protobuf field repeated string dependency = 3; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setDependency($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->dependency = $arr; return $this; } /** * Indexes of the public imported files in the dependency list above. * * Generated from protobuf field repeated int32 public_dependency = 10; * @return \Google\Protobuf\Internal\RepeatedField */ public function getPublicDependency() { return $this->public_dependency; } /** * Indexes of the public imported files in the dependency list above. * * Generated from protobuf field repeated int32 public_dependency = 10; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setPublicDependency($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32); $this->public_dependency = $arr; return $this; } /** * Indexes of the weak imported files in the dependency list. * For Google-internal migration only. Do not use. * * Generated from protobuf field repeated int32 weak_dependency = 11; * @return \Google\Protobuf\Internal\RepeatedField */ public function getWeakDependency() { return $this->weak_dependency; } /** * Indexes of the weak imported files in the dependency list. * For Google-internal migration only. Do not use. * * Generated from protobuf field repeated int32 weak_dependency = 11; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setWeakDependency($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32); $this->weak_dependency = $arr; return $this; } /** * All top-level definitions in this file. * * Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4; * @return \Google\Protobuf\Internal\RepeatedField */ public function getMessageType() { return $this->message_type; } /** * All top-level definitions in this file. * * Generated from protobuf field repeated .google.protobuf.DescriptorProto message_type = 4; * @param array<\Google\Protobuf\Internal\DescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setMessageType($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\DescriptorProto::class); $this->message_type = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5; * @return \Google\Protobuf\Internal\RepeatedField */ public function getEnumType() { return $this->enum_type; } /** * Generated from protobuf field repeated .google.protobuf.EnumDescriptorProto enum_type = 5; * @param array<\Google\Protobuf\Internal\EnumDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setEnumType($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\EnumDescriptorProto::class); $this->enum_type = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6; * @return \Google\Protobuf\Internal\RepeatedField */ public function getService() { return $this->service; } /** * Generated from protobuf field repeated .google.protobuf.ServiceDescriptorProto service = 6; * @param array<\Google\Protobuf\Internal\ServiceDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setService($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\ServiceDescriptorProto::class); $this->service = $arr; return $this; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7; * @return \Google\Protobuf\Internal\RepeatedField */ public function getExtension() { return $this->extension; } /** * Generated from protobuf field repeated .google.protobuf.FieldDescriptorProto extension = 7; * @param array<\Google\Protobuf\Internal\FieldDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setExtension($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldDescriptorProto::class); $this->extension = $arr; return $this; } /** * Generated from protobuf field optional .google.protobuf.FileOptions options = 8; * @return \Google\Protobuf\Internal\FileOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.FileOptions options = 8; * @param \Google\Protobuf\Internal\FileOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FileOptions::class); $this->options = $var; return $this; } /** * This field contains optional information about the original source code. * You may safely remove this entire field without harming runtime * functionality of the descriptors -- the information is needed only by * development tools. * * Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9; * @return \Google\Protobuf\Internal\SourceCodeInfo|null */ public function getSourceCodeInfo() { return $this->source_code_info; } public function hasSourceCodeInfo() { return isset($this->source_code_info); } public function clearSourceCodeInfo() { unset($this->source_code_info); } /** * This field contains optional information about the original source code. * You may safely remove this entire field without harming runtime * functionality of the descriptors -- the information is needed only by * development tools. * * Generated from protobuf field optional .google.protobuf.SourceCodeInfo source_code_info = 9; * @param \Google\Protobuf\Internal\SourceCodeInfo $var * @return $this */ public function setSourceCodeInfo($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\SourceCodeInfo::class); $this->source_code_info = $var; return $this; } /** * The syntax of the proto file. * The supported values are "proto2", "proto3", and "editions". * If `edition` is present, this value must be "editions". * * Generated from protobuf field optional string syntax = 12; * @return string */ public function getSyntax() { return isset($this->syntax) ? $this->syntax : ''; } public function hasSyntax() { return isset($this->syntax); } public function clearSyntax() { unset($this->syntax); } /** * The syntax of the proto file. * The supported values are "proto2", "proto3", and "editions". * If `edition` is present, this value must be "editions". * * Generated from protobuf field optional string syntax = 12; * @param string $var * @return $this */ public function setSyntax($var) { GPBUtil::checkString($var, True); $this->syntax = $var; return $this; } /** * The edition of the proto file, which is an opaque string. * * Generated from protobuf field optional string edition = 13; * @return string */ public function getEdition() { return isset($this->edition) ? $this->edition : ''; } public function hasEdition() { return isset($this->edition); } public function clearEdition() { unset($this->edition); } /** * The edition of the proto file, which is an opaque string. * * Generated from protobuf field optional string edition = 13; * @param string $var * @return $this */ public function setEdition($var) { GPBUtil::checkString($var, True); $this->edition = $var; return $this; } } src/Google/Protobuf/Internal/FileDescriptorSet.php000064400000003605147133775460016253 0ustar00google.protobuf.FileDescriptorSet */ class FileDescriptorSet extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1; */ private $file; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\FileDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $file * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1; * @return \Google\Protobuf\Internal\RepeatedField */ public function getFile() { return $this->file; } /** * Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1; * @param array<\Google\Protobuf\Internal\FileDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setFile($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FileDescriptorProto::class); $this->file = $arr; return $this; } } src/Google/Protobuf/Internal/FileOptions.php000064400000116147147133775460015122 0ustar00google.protobuf.FileOptions */ class FileOptions extends \Google\Protobuf\Internal\Message { /** * Sets the Java package where classes generated from this .proto will be * placed. By default, the proto package is used, but this is often * inappropriate because proto packages do not normally start with backwards * domain names. * * Generated from protobuf field optional string java_package = 1; */ protected $java_package = null; /** * Controls the name of the wrapper Java class generated for the .proto file. * That class will always contain the .proto file's getDescriptor() method as * well as any top-level extensions defined in the .proto file. * If java_multiple_files is disabled, then all the other classes from the * .proto file will be nested inside the single wrapper outer class. * * Generated from protobuf field optional string java_outer_classname = 8; */ protected $java_outer_classname = null; /** * If enabled, 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 wrapper class * named by java_outer_classname. However, the wrapper class will still be * generated to contain the file's getDescriptor() method as well as any * top-level extensions defined in the file. * * Generated from protobuf field optional bool java_multiple_files = 10 [default = false]; */ protected $java_multiple_files = null; /** * This option does nothing. * * Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true]; * @deprecated */ protected $java_generate_equals_and_hash = null; /** * If set true, then the Java2 code generator will generate code that * throws an exception whenever an attempt is made to assign a non-UTF-8 * byte sequence to a string field. * Message reflection will do the same. * However, an extension field still accepts non-UTF-8 byte sequences. * This option has no effect on when used with the lite runtime. * * Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false]; */ protected $java_string_check_utf8 = null; /** * Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; */ protected $optimize_for = null; /** * Sets the Go package where structs generated from this .proto will be * placed. If omitted, the Go package will be derived from the following: * - The basename of the package import path, if provided. * - Otherwise, the package statement in the .proto file, if present. * - Otherwise, the basename of the .proto file, without extension. * * Generated from protobuf field optional string go_package = 11; */ protected $go_package = null; /** * Should generic services be generated in each language? "Generic" services * are not specific to any particular RPC system. They are generated by the * main code generators in each language (without additional plugins). * Generic services were the only kind of service generation supported by * early versions of google.protobuf. * Generic services are now considered deprecated in favor of using plugins * that generate code specific to your particular RPC system. Therefore, * these default to false. Old code which depends on generic services should * explicitly set them to true. * * Generated from protobuf field optional bool cc_generic_services = 16 [default = false]; */ protected $cc_generic_services = null; /** * Generated from protobuf field optional bool java_generic_services = 17 [default = false]; */ protected $java_generic_services = null; /** * Generated from protobuf field optional bool py_generic_services = 18 [default = false]; */ protected $py_generic_services = null; /** * Generated from protobuf field optional bool php_generic_services = 42 [default = false]; */ protected $php_generic_services = null; /** * Is this file deprecated? * Depending on the target platform, this can emit Deprecated annotations * for everything in the file, or it will be completely ignored; in the very * least, this is a formalization for deprecating files. * * Generated from protobuf field optional bool deprecated = 23 [default = false]; */ protected $deprecated = null; /** * Enables the use of arenas for the proto messages in this file. This applies * only to generated classes for C++. * * Generated from protobuf field optional bool cc_enable_arenas = 31 [default = true]; */ protected $cc_enable_arenas = null; /** * Sets the objective c class prefix which is prepended to all objective c * generated classes from this .proto. There is no default. * * Generated from protobuf field optional string objc_class_prefix = 36; */ protected $objc_class_prefix = null; /** * Namespace for generated classes; defaults to the package. * * Generated from protobuf field optional string csharp_namespace = 37; */ protected $csharp_namespace = null; /** * By default Swift generators will take the proto package and CamelCase it * replacing '.' with underscore and use that to prefix the types/symbols * defined. When this options is provided, they will use this value instead * to prefix the types/symbols defined. * * Generated from protobuf field optional string swift_prefix = 39; */ protected $swift_prefix = null; /** * Sets the php class prefix which is prepended to all php generated classes * from this .proto. Default is empty. * * Generated from protobuf field optional string php_class_prefix = 40; */ protected $php_class_prefix = null; /** * Use this option to change the namespace of php generated classes. Default * is empty. When this option is empty, the package name will be used for * determining the namespace. * * Generated from protobuf field optional string php_namespace = 41; */ protected $php_namespace = null; /** * Use this option to change the namespace of php generated metadata classes. * Default is empty. When this option is empty, the proto file name will be * used for determining the namespace. * * Generated from protobuf field optional string php_metadata_namespace = 44; */ protected $php_metadata_namespace = null; /** * Use this option to change the package of ruby generated classes. Default * is empty. When this option is not set, the package name will be used for * determining the ruby package. * * Generated from protobuf field optional string ruby_package = 45; */ protected $ruby_package = null; /** * The parser stores options it doesn't recognize here. * See the documentation for the "Options" section above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $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. * @type string $java_outer_classname * Controls the name of the wrapper Java class generated for the .proto file. * That class will always contain the .proto file's getDescriptor() method as * well as any top-level extensions defined in the .proto file. * If java_multiple_files is disabled, then all the other classes from the * .proto file will be nested inside the single wrapper outer class. * @type bool $java_multiple_files * If enabled, 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 wrapper class * named by java_outer_classname. However, the wrapper class will still be * generated to contain the file's getDescriptor() method as well as any * top-level extensions defined in the file. * @type bool $java_generate_equals_and_hash * This option does nothing. * @type bool $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. * @type int $optimize_for * @type string $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. * @type bool $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. * @type bool $java_generic_services * @type bool $py_generic_services * @type bool $php_generic_services * @type bool $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. * @type bool $cc_enable_arenas * Enables the use of arenas for the proto messages in this file. This applies * only to generated classes for C++. * @type string $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. * @type string $csharp_namespace * Namespace for generated classes; defaults to the package. * @type string $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. * @type string $php_class_prefix * Sets the php class prefix which is prepended to all php generated classes * from this .proto. Default is empty. * @type string $php_namespace * Use this option to change the namespace of php generated classes. Default * is empty. When this option is empty, the package name will be used for * determining the namespace. * @type string $php_metadata_namespace * Use this option to change the namespace of php generated metadata classes. * Default is empty. When this option is empty, the proto file name will be * used for determining the namespace. * @type string $ruby_package * Use this option to change the package of ruby generated classes. Default * is empty. When this option is not set, the package name will be used for * determining the ruby package. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. * See the documentation for the "Options" section above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Sets the Java package where classes generated from this .proto will be * placed. By default, the proto package is used, but this is often * inappropriate because proto packages do not normally start with backwards * domain names. * * Generated from protobuf field optional string java_package = 1; * @return string */ public function getJavaPackage() { return isset($this->java_package) ? $this->java_package : ''; } public function hasJavaPackage() { return isset($this->java_package); } public function clearJavaPackage() { unset($this->java_package); } /** * Sets the Java package where classes generated from this .proto will be * placed. By default, the proto package is used, but this is often * inappropriate because proto packages do not normally start with backwards * domain names. * * Generated from protobuf field optional string java_package = 1; * @param string $var * @return $this */ public function setJavaPackage($var) { GPBUtil::checkString($var, True); $this->java_package = $var; return $this; } /** * Controls the name of the wrapper Java class generated for the .proto file. * That class will always contain the .proto file's getDescriptor() method as * well as any top-level extensions defined in the .proto file. * If java_multiple_files is disabled, then all the other classes from the * .proto file will be nested inside the single wrapper outer class. * * Generated from protobuf field optional string java_outer_classname = 8; * @return string */ public function getJavaOuterClassname() { return isset($this->java_outer_classname) ? $this->java_outer_classname : ''; } public function hasJavaOuterClassname() { return isset($this->java_outer_classname); } public function clearJavaOuterClassname() { unset($this->java_outer_classname); } /** * Controls the name of the wrapper Java class generated for the .proto file. * That class will always contain the .proto file's getDescriptor() method as * well as any top-level extensions defined in the .proto file. * If java_multiple_files is disabled, then all the other classes from the * .proto file will be nested inside the single wrapper outer class. * * Generated from protobuf field optional string java_outer_classname = 8; * @param string $var * @return $this */ public function setJavaOuterClassname($var) { GPBUtil::checkString($var, True); $this->java_outer_classname = $var; return $this; } /** * If enabled, 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 wrapper class * named by java_outer_classname. However, the wrapper class will still be * generated to contain the file's getDescriptor() method as well as any * top-level extensions defined in the file. * * Generated from protobuf field optional bool java_multiple_files = 10 [default = false]; * @return bool */ public function getJavaMultipleFiles() { return isset($this->java_multiple_files) ? $this->java_multiple_files : false; } public function hasJavaMultipleFiles() { return isset($this->java_multiple_files); } public function clearJavaMultipleFiles() { unset($this->java_multiple_files); } /** * If enabled, 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 wrapper class * named by java_outer_classname. However, the wrapper class will still be * generated to contain the file's getDescriptor() method as well as any * top-level extensions defined in the file. * * Generated from protobuf field optional bool java_multiple_files = 10 [default = false]; * @param bool $var * @return $this */ public function setJavaMultipleFiles($var) { GPBUtil::checkBool($var); $this->java_multiple_files = $var; return $this; } /** * This option does nothing. * * Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true]; * @return bool * @deprecated */ public function getJavaGenerateEqualsAndHash() { @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED); return isset($this->java_generate_equals_and_hash) ? $this->java_generate_equals_and_hash : false; } public function hasJavaGenerateEqualsAndHash() { @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED); return isset($this->java_generate_equals_and_hash); } public function clearJavaGenerateEqualsAndHash() { @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED); unset($this->java_generate_equals_and_hash); } /** * This option does nothing. * * Generated from protobuf field optional bool java_generate_equals_and_hash = 20 [deprecated = true]; * @param bool $var * @return $this * @deprecated */ public function setJavaGenerateEqualsAndHash($var) { @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED); GPBUtil::checkBool($var); $this->java_generate_equals_and_hash = $var; return $this; } /** * If set true, then the Java2 code generator will generate code that * throws an exception whenever an attempt is made to assign a non-UTF-8 * byte sequence to a string field. * Message reflection will do the same. * However, an extension field still accepts non-UTF-8 byte sequences. * This option has no effect on when used with the lite runtime. * * Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false]; * @return bool */ public function getJavaStringCheckUtf8() { return isset($this->java_string_check_utf8) ? $this->java_string_check_utf8 : false; } public function hasJavaStringCheckUtf8() { return isset($this->java_string_check_utf8); } public function clearJavaStringCheckUtf8() { unset($this->java_string_check_utf8); } /** * If set true, then the Java2 code generator will generate code that * throws an exception whenever an attempt is made to assign a non-UTF-8 * byte sequence to a string field. * Message reflection will do the same. * However, an extension field still accepts non-UTF-8 byte sequences. * This option has no effect on when used with the lite runtime. * * Generated from protobuf field optional bool java_string_check_utf8 = 27 [default = false]; * @param bool $var * @return $this */ public function setJavaStringCheckUtf8($var) { GPBUtil::checkBool($var); $this->java_string_check_utf8 = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; * @return int */ public function getOptimizeFor() { return isset($this->optimize_for) ? $this->optimize_for : 0; } public function hasOptimizeFor() { return isset($this->optimize_for); } public function clearOptimizeFor() { unset($this->optimize_for); } /** * Generated from protobuf field optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; * @param int $var * @return $this */ public function setOptimizeFor($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FileOptions\OptimizeMode::class); $this->optimize_for = $var; return $this; } /** * Sets the Go package where structs generated from this .proto will be * placed. If omitted, the Go package will be derived from the following: * - The basename of the package import path, if provided. * - Otherwise, the package statement in the .proto file, if present. * - Otherwise, the basename of the .proto file, without extension. * * Generated from protobuf field optional string go_package = 11; * @return string */ public function getGoPackage() { return isset($this->go_package) ? $this->go_package : ''; } public function hasGoPackage() { return isset($this->go_package); } public function clearGoPackage() { unset($this->go_package); } /** * Sets the Go package where structs generated from this .proto will be * placed. If omitted, the Go package will be derived from the following: * - The basename of the package import path, if provided. * - Otherwise, the package statement in the .proto file, if present. * - Otherwise, the basename of the .proto file, without extension. * * Generated from protobuf field optional string go_package = 11; * @param string $var * @return $this */ public function setGoPackage($var) { GPBUtil::checkString($var, True); $this->go_package = $var; return $this; } /** * Should generic services be generated in each language? "Generic" services * are not specific to any particular RPC system. They are generated by the * main code generators in each language (without additional plugins). * Generic services were the only kind of service generation supported by * early versions of google.protobuf. * Generic services are now considered deprecated in favor of using plugins * that generate code specific to your particular RPC system. Therefore, * these default to false. Old code which depends on generic services should * explicitly set them to true. * * Generated from protobuf field optional bool cc_generic_services = 16 [default = false]; * @return bool */ public function getCcGenericServices() { return isset($this->cc_generic_services) ? $this->cc_generic_services : false; } public function hasCcGenericServices() { return isset($this->cc_generic_services); } public function clearCcGenericServices() { unset($this->cc_generic_services); } /** * Should generic services be generated in each language? "Generic" services * are not specific to any particular RPC system. They are generated by the * main code generators in each language (without additional plugins). * Generic services were the only kind of service generation supported by * early versions of google.protobuf. * Generic services are now considered deprecated in favor of using plugins * that generate code specific to your particular RPC system. Therefore, * these default to false. Old code which depends on generic services should * explicitly set them to true. * * Generated from protobuf field optional bool cc_generic_services = 16 [default = false]; * @param bool $var * @return $this */ public function setCcGenericServices($var) { GPBUtil::checkBool($var); $this->cc_generic_services = $var; return $this; } /** * Generated from protobuf field optional bool java_generic_services = 17 [default = false]; * @return bool */ public function getJavaGenericServices() { return isset($this->java_generic_services) ? $this->java_generic_services : false; } public function hasJavaGenericServices() { return isset($this->java_generic_services); } public function clearJavaGenericServices() { unset($this->java_generic_services); } /** * Generated from protobuf field optional bool java_generic_services = 17 [default = false]; * @param bool $var * @return $this */ public function setJavaGenericServices($var) { GPBUtil::checkBool($var); $this->java_generic_services = $var; return $this; } /** * Generated from protobuf field optional bool py_generic_services = 18 [default = false]; * @return bool */ public function getPyGenericServices() { return isset($this->py_generic_services) ? $this->py_generic_services : false; } public function hasPyGenericServices() { return isset($this->py_generic_services); } public function clearPyGenericServices() { unset($this->py_generic_services); } /** * Generated from protobuf field optional bool py_generic_services = 18 [default = false]; * @param bool $var * @return $this */ public function setPyGenericServices($var) { GPBUtil::checkBool($var); $this->py_generic_services = $var; return $this; } /** * Generated from protobuf field optional bool php_generic_services = 42 [default = false]; * @return bool */ public function getPhpGenericServices() { return isset($this->php_generic_services) ? $this->php_generic_services : false; } public function hasPhpGenericServices() { return isset($this->php_generic_services); } public function clearPhpGenericServices() { unset($this->php_generic_services); } /** * Generated from protobuf field optional bool php_generic_services = 42 [default = false]; * @param bool $var * @return $this */ public function setPhpGenericServices($var) { GPBUtil::checkBool($var); $this->php_generic_services = $var; return $this; } /** * Is this file deprecated? * Depending on the target platform, this can emit Deprecated annotations * for everything in the file, or it will be completely ignored; in the very * least, this is a formalization for deprecating files. * * Generated from protobuf field optional bool deprecated = 23 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this file deprecated? * Depending on the target platform, this can emit Deprecated annotations * for everything in the file, or it will be completely ignored; in the very * least, this is a formalization for deprecating files. * * Generated from protobuf field optional bool deprecated = 23 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * Enables the use of arenas for the proto messages in this file. This applies * only to generated classes for C++. * * Generated from protobuf field optional bool cc_enable_arenas = 31 [default = true]; * @return bool */ public function getCcEnableArenas() { return isset($this->cc_enable_arenas) ? $this->cc_enable_arenas : false; } public function hasCcEnableArenas() { return isset($this->cc_enable_arenas); } public function clearCcEnableArenas() { unset($this->cc_enable_arenas); } /** * Enables the use of arenas for the proto messages in this file. This applies * only to generated classes for C++. * * Generated from protobuf field optional bool cc_enable_arenas = 31 [default = true]; * @param bool $var * @return $this */ public function setCcEnableArenas($var) { GPBUtil::checkBool($var); $this->cc_enable_arenas = $var; return $this; } /** * Sets the objective c class prefix which is prepended to all objective c * generated classes from this .proto. There is no default. * * Generated from protobuf field optional string objc_class_prefix = 36; * @return string */ public function getObjcClassPrefix() { return isset($this->objc_class_prefix) ? $this->objc_class_prefix : ''; } public function hasObjcClassPrefix() { return isset($this->objc_class_prefix); } public function clearObjcClassPrefix() { unset($this->objc_class_prefix); } /** * Sets the objective c class prefix which is prepended to all objective c * generated classes from this .proto. There is no default. * * Generated from protobuf field optional string objc_class_prefix = 36; * @param string $var * @return $this */ public function setObjcClassPrefix($var) { GPBUtil::checkString($var, True); $this->objc_class_prefix = $var; return $this; } /** * Namespace for generated classes; defaults to the package. * * Generated from protobuf field optional string csharp_namespace = 37; * @return string */ public function getCsharpNamespace() { return isset($this->csharp_namespace) ? $this->csharp_namespace : ''; } public function hasCsharpNamespace() { return isset($this->csharp_namespace); } public function clearCsharpNamespace() { unset($this->csharp_namespace); } /** * Namespace for generated classes; defaults to the package. * * Generated from protobuf field optional string csharp_namespace = 37; * @param string $var * @return $this */ public function setCsharpNamespace($var) { GPBUtil::checkString($var, True); $this->csharp_namespace = $var; return $this; } /** * By default Swift generators will take the proto package and CamelCase it * replacing '.' with underscore and use that to prefix the types/symbols * defined. When this options is provided, they will use this value instead * to prefix the types/symbols defined. * * Generated from protobuf field optional string swift_prefix = 39; * @return string */ public function getSwiftPrefix() { return isset($this->swift_prefix) ? $this->swift_prefix : ''; } public function hasSwiftPrefix() { return isset($this->swift_prefix); } public function clearSwiftPrefix() { unset($this->swift_prefix); } /** * By default Swift generators will take the proto package and CamelCase it * replacing '.' with underscore and use that to prefix the types/symbols * defined. When this options is provided, they will use this value instead * to prefix the types/symbols defined. * * Generated from protobuf field optional string swift_prefix = 39; * @param string $var * @return $this */ public function setSwiftPrefix($var) { GPBUtil::checkString($var, True); $this->swift_prefix = $var; return $this; } /** * Sets the php class prefix which is prepended to all php generated classes * from this .proto. Default is empty. * * Generated from protobuf field optional string php_class_prefix = 40; * @return string */ public function getPhpClassPrefix() { return isset($this->php_class_prefix) ? $this->php_class_prefix : ''; } public function hasPhpClassPrefix() { return isset($this->php_class_prefix); } public function clearPhpClassPrefix() { unset($this->php_class_prefix); } /** * Sets the php class prefix which is prepended to all php generated classes * from this .proto. Default is empty. * * Generated from protobuf field optional string php_class_prefix = 40; * @param string $var * @return $this */ public function setPhpClassPrefix($var) { GPBUtil::checkString($var, True); $this->php_class_prefix = $var; return $this; } /** * Use this option to change the namespace of php generated classes. Default * is empty. When this option is empty, the package name will be used for * determining the namespace. * * Generated from protobuf field optional string php_namespace = 41; * @return string */ public function getPhpNamespace() { return isset($this->php_namespace) ? $this->php_namespace : ''; } public function hasPhpNamespace() { return isset($this->php_namespace); } public function clearPhpNamespace() { unset($this->php_namespace); } /** * Use this option to change the namespace of php generated classes. Default * is empty. When this option is empty, the package name will be used for * determining the namespace. * * Generated from protobuf field optional string php_namespace = 41; * @param string $var * @return $this */ public function setPhpNamespace($var) { GPBUtil::checkString($var, True); $this->php_namespace = $var; return $this; } /** * Use this option to change the namespace of php generated metadata classes. * Default is empty. When this option is empty, the proto file name will be * used for determining the namespace. * * Generated from protobuf field optional string php_metadata_namespace = 44; * @return string */ public function getPhpMetadataNamespace() { return isset($this->php_metadata_namespace) ? $this->php_metadata_namespace : ''; } public function hasPhpMetadataNamespace() { return isset($this->php_metadata_namespace); } public function clearPhpMetadataNamespace() { unset($this->php_metadata_namespace); } /** * Use this option to change the namespace of php generated metadata classes. * Default is empty. When this option is empty, the proto file name will be * used for determining the namespace. * * Generated from protobuf field optional string php_metadata_namespace = 44; * @param string $var * @return $this */ public function setPhpMetadataNamespace($var) { GPBUtil::checkString($var, True); $this->php_metadata_namespace = $var; return $this; } /** * Use this option to change the package of ruby generated classes. Default * is empty. When this option is not set, the package name will be used for * determining the ruby package. * * Generated from protobuf field optional string ruby_package = 45; * @return string */ public function getRubyPackage() { return isset($this->ruby_package) ? $this->ruby_package : ''; } public function hasRubyPackage() { return isset($this->ruby_package); } public function clearRubyPackage() { unset($this->ruby_package); } /** * Use this option to change the package of ruby generated classes. Default * is empty. When this option is not set, the package name will be used for * determining the ruby package. * * Generated from protobuf field optional string ruby_package = 45; * @param string $var * @return $this */ public function setRubyPackage($var) { GPBUtil::checkString($var, True); $this->ruby_package = $var; return $this; } /** * The parser stores options it doesn't recognize here. * See the documentation for the "Options" section above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. * See the documentation for the "Options" section above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php000064400000003365147133775460017524 0ustar00google.protobuf.FileOptions.OptimizeMode */ class OptimizeMode { /** * Generate complete code for parsing, serialization, * * Generated from protobuf enum SPEED = 1; */ const SPEED = 1; /** * etc. * * Generated from protobuf enum CODE_SIZE = 2; */ const CODE_SIZE = 2; /** * Generate code using MessageLite and the lite runtime. * * Generated from protobuf enum LITE_RUNTIME = 3; */ const LITE_RUNTIME = 3; private static $valueToName = [ self::SPEED => 'SPEED', self::CODE_SIZE => 'CODE_SIZE', self::LITE_RUNTIME => 'LITE_RUNTIME', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(OptimizeMode::class, \Google\Protobuf\Internal\FileOptions_OptimizeMode::class); src/Google/Protobuf/Internal/FileOptions_OptimizeMode.php000064400000001115147133775460017573 0ustar00writeRaw("\"", 1); $field_name = GPBJsonWire::formatFieldName($field); $output->writeRaw($field_name, strlen($field_name)); $output->writeRaw("\":", 2); } return static::serializeFieldValueToStream( $value, $field, $output, !$has_field_name); } public static function serializeFieldValueToStream( $values, $field, &$output, $is_well_known = false) { if ($field->isMap()) { $output->writeRaw("{", 1); $first = true; $map_entry = $field->getMessageType(); $key_field = $map_entry->getFieldByNumber(1); $value_field = $map_entry->getFieldByNumber(2); switch ($key_field->getType()) { case GPBType::STRING: case GPBType::SFIXED64: case GPBType::INT64: case GPBType::SINT64: case GPBType::FIXED64: case GPBType::UINT64: $additional_quote = false; break; default: $additional_quote = true; } foreach ($values as $key => $value) { if ($first) { $first = false; } else { $output->writeRaw(",", 1); } if ($additional_quote) { $output->writeRaw("\"", 1); } if (!static::serializeSingularFieldValueToStream( $key, $key_field, $output, $is_well_known)) { return false; } if ($additional_quote) { $output->writeRaw("\"", 1); } $output->writeRaw(":", 1); if (!static::serializeSingularFieldValueToStream( $value, $value_field, $output, $is_well_known)) { return false; } } $output->writeRaw("}", 1); return true; } elseif ($field->isRepeated()) { $output->writeRaw("[", 1); $first = true; foreach ($values as $value) { if ($first) { $first = false; } else { $output->writeRaw(",", 1); } if (!static::serializeSingularFieldValueToStream( $value, $field, $output, $is_well_known)) { return false; } } $output->writeRaw("]", 1); return true; } else { return static::serializeSingularFieldValueToStream( $values, $field, $output, $is_well_known); } } private static function serializeSingularFieldValueToStream( $value, $field, &$output, $is_well_known = false) { switch ($field->getType()) { case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::INT32: $str_value = strval($value); $output->writeRaw($str_value, strlen($str_value)); break; case GPBType::FIXED32: case GPBType::UINT32: if ($value < 0) { $value = bcadd($value, "4294967296"); } $str_value = strval($value); $output->writeRaw($str_value, strlen($str_value)); break; case GPBType::FIXED64: case GPBType::UINT64: if ($value < 0) { $value = bcadd($value, "18446744073709551616"); } // Intentional fall through. case GPBType::SFIXED64: case GPBType::INT64: case GPBType::SINT64: $output->writeRaw("\"", 1); $str_value = strval($value); $output->writeRaw($str_value, strlen($str_value)); $output->writeRaw("\"", 1); break; case GPBType::FLOAT: if (is_nan($value)) { $str_value = "\"NaN\""; } elseif ($value === INF) { $str_value = "\"Infinity\""; } elseif ($value === -INF) { $str_value = "\"-Infinity\""; } else { $str_value = sprintf("%.8g", $value); } $output->writeRaw($str_value, strlen($str_value)); break; case GPBType::DOUBLE: if (is_nan($value)) { $str_value = "\"NaN\""; } elseif ($value === INF) { $str_value = "\"Infinity\""; } elseif ($value === -INF) { $str_value = "\"-Infinity\""; } else { $str_value = sprintf("%.17g", $value); } $output->writeRaw($str_value, strlen($str_value)); break; case GPBType::ENUM: $enum_desc = $field->getEnumType(); if ($enum_desc->getClass() === "Google\Protobuf\NullValue") { $output->writeRaw("null", 4); break; } $enum_value_desc = $enum_desc->getValueByNumber($value); if (!is_null($enum_value_desc)) { $str_value = $enum_value_desc->getName(); $output->writeRaw("\"", 1); $output->writeRaw($str_value, strlen($str_value)); $output->writeRaw("\"", 1); } else { $str_value = strval($value); $output->writeRaw($str_value, strlen($str_value)); } break; case GPBType::BOOL: if ($value) { $output->writeRaw("true", 4); } else { $output->writeRaw("false", 5); } break; case GPBType::BYTES: $bytes_value = base64_encode($value); $output->writeRaw("\"", 1); $output->writeRaw($bytes_value, strlen($bytes_value)); $output->writeRaw("\"", 1); break; case GPBType::STRING: $value = json_encode($value, JSON_UNESCAPED_UNICODE); $output->writeRaw($value, strlen($value)); break; // case GPBType::GROUP: // echo "GROUP\xA"; // trigger_error("Not implemented.", E_ERROR); // break; case GPBType::MESSAGE: $value->serializeToJsonStream($output); break; default: user_error("Unsupported type."); return false; } return true; } private static function formatFieldName($field) { return $field->getJsonName(); } // Used for escaping control chars in strings. private static $k_control_char_limit = 0x20; private static function jsonNiceEscape($c) { switch ($c) { case '"': return "\\\""; case '\\': return "\\\\"; case '/': return "\\/"; case '\b': return "\\b"; case '\f': return "\\f"; case '\n': return "\\n"; case '\r': return "\\r"; case '\t': return "\\t"; default: return NULL; } } private static function isJsonEscaped($c) { // See RFC 4627. return $c < chr($k_control_char_limit) || $c === "\"" || $c === "\\"; } public static function escapedJson($value) { $escaped_value = ""; $unescaped_run = ""; for ($i = 0; $i < strlen($value); $i++) { $c = $value[$i]; // Handle escaping. if (static::isJsonEscaped($c)) { // Use a "nice" escape, like \n, if one exists for this // character. $escape = static::jsonNiceEscape($c); if (is_null($escape)) { $escape = "\\u00" . bin2hex($c); } if ($unescaped_run !== "") { $escaped_value .= $unescaped_run; $unescaped_run = ""; } $escaped_value .= $escape; } else { if ($unescaped_run === "") { $unescaped_run .= $c; } } } $escaped_value .= $unescaped_run; return $escaped_value; } } src/Google/Protobuf/Internal/GPBLabel.php000064400000000635147133775460014231 0ustar00 0) { $high = (int) bcsub($high, 4294967296); } else { $high = (int) $high; } if (bccomp($low, 2147483647) > 0) { $low = (int) bcsub($low, 4294967296); } else { $low = (int) $low; } if ($isNeg) { $high = ~$high; $low = ~$low; $low++; if (!$low) { $high = (int)($high + 1); } } if ($trim) { $high = 0; } } public static function checkString(&$var, $check_utf8) { if (is_array($var) || is_object($var)) { throw new \InvalidArgumentException("Expect string."); } if (!is_string($var)) { $var = strval($var); } if ($check_utf8 && !preg_match('//u', $var)) { throw new \Exception("Expect utf-8 encoding."); } } public static function checkEnum(&$var) { static::checkInt32($var); } public static function checkInt32(&$var) { if (is_numeric($var)) { $var = intval($var); } else { throw new \Exception("Expect integer."); } } public static function checkUint32(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE === 8) { $var = intval($var); $var |= ((-(($var >> 31) & 0x1)) & ~0xFFFFFFFF); } else { if (bccomp($var, 0x7FFFFFFF) > 0) { $var = bcsub($var, "4294967296"); } $var = (int) $var; } } else { throw new \Exception("Expect integer."); } } public static function checkInt64(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE == 8) { $var = intval($var); } else { if (is_float($var) || is_integer($var) || (is_string($var) && bccomp($var, "9223372036854774784") < 0)) { $var = number_format($var, 0, ".", ""); } } } else { throw new \Exception("Expect integer."); } } public static function checkUint64(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE == 8) { $var = intval($var); } else { $var = number_format($var, 0, ".", ""); } } else { throw new \Exception("Expect integer."); } } public static function checkFloat(&$var) { if (is_float($var) || is_numeric($var)) { $var = unpack("f", pack("f", $var))[1]; } else { throw new \Exception("Expect float."); } } public static function checkDouble(&$var) { if (is_float($var) || is_numeric($var)) { $var = floatval($var); } else { throw new \Exception("Expect float."); } } public static function checkBool(&$var) { if (is_array($var) || is_object($var)) { throw new \Exception("Expect boolean."); } $var = boolval($var); } public static function checkMessage(&$var, $klass, $newClass = null) { if (!$var instanceof $klass && !is_null($var)) { throw new \Exception("Expect $klass."); } } public static function checkRepeatedField(&$var, $type, $klass = null) { if (!$var instanceof RepeatedField && !is_array($var)) { throw new \Exception("Expect array."); } if (is_array($var)) { $tmp = new RepeatedField($type, $klass); foreach ($var as $value) { $tmp[] = $value; } return $tmp; } else { if ($var->getType() != $type) { throw new \Exception( "Expect repeated field of different type."); } if ($var->getType() === GPBType::MESSAGE && $var->getClass() !== $klass && $var->getLegacyClass() !== $klass) { throw new \Exception( "Expect repeated field of " . $klass . "."); } return $var; } } public static function checkMapField(&$var, $key_type, $value_type, $klass = null) { if (!$var instanceof MapField && !is_array($var)) { throw new \Exception("Expect dict."); } if (is_array($var)) { $tmp = new MapField($key_type, $value_type, $klass); foreach ($var as $key => $value) { $tmp[$key] = $value; } return $tmp; } else { if ($var->getKeyType() != $key_type) { throw new \Exception("Expect map field of key type."); } if ($var->getValueType() != $value_type) { throw new \Exception("Expect map field of value type."); } if ($var->getValueType() === GPBType::MESSAGE && $var->getValueClass() !== $klass && $var->getLegacyValueClass() !== $klass) { throw new \Exception( "Expect map field of " . $klass . "."); } return $var; } } public static function Int64($value) { return new Int64($value); } public static function Uint64($value) { return new Uint64($value); } public static function getClassNamePrefix( $classname, $file_proto) { $option = $file_proto->getOptions(); $prefix = is_null($option) ? "" : $option->getPhpClassPrefix(); if ($prefix !== "") { return $prefix; } $reserved_words = array( "abstract"=>0, "and"=>0, "array"=>0, "as"=>0, "break"=>0, "callable"=>0, "case"=>0, "catch"=>0, "class"=>0, "clone"=>0, "const"=>0, "continue"=>0, "declare"=>0, "default"=>0, "die"=>0, "do"=>0, "echo"=>0, "else"=>0, "elseif"=>0, "empty"=>0, "enddeclare"=>0, "endfor"=>0, "endforeach"=>0, "endif"=>0, "endswitch"=>0, "endwhile"=>0, "eval"=>0, "exit"=>0, "extends"=>0, "final"=>0, "finally"=>0, "fn"=>0, "for"=>0, "foreach"=>0, "function"=>0, "global"=>0, "goto"=>0, "if"=>0, "implements"=>0, "include"=>0, "include_once"=>0, "instanceof"=>0, "insteadof"=>0, "interface"=>0, "isset"=>0, "list"=>0, "match"=>0, "namespace"=>0, "new"=>0, "or"=>0, "parent"=>0, "print"=>0, "private"=>0, "protected"=>0,"public"=>0, "readonly" => 0,"require"=>0, "require_once"=>0,"return"=>0, "self"=>0, "static"=>0, "switch"=>0, "throw"=>0,"trait"=>0, "try"=>0,"unset"=>0, "use"=>0, "var"=>0, "while"=>0,"xor"=>0, "yield"=>0, "int"=>0, "float"=>0, "bool"=>0, "string"=>0,"true"=>0, "false"=>0, "null"=>0, "void"=>0, "iterable"=>0 ); if (array_key_exists(strtolower($classname), $reserved_words)) { if ($file_proto->getPackage() === "google.protobuf") { return "GPB"; } else { return "PB"; } } return ""; } private static function getPreviouslyUnreservedClassNamePrefix( $classname, $file_proto) { $previously_unreserved_words = array( "readonly"=>0 ); if (array_key_exists(strtolower($classname), $previously_unreserved_words)) { $option = $file_proto->getOptions(); $prefix = is_null($option) ? "" : $option->getPhpClassPrefix(); if ($prefix !== "") { return $prefix; } return ""; } return self::getClassNamePrefix($classname, $file_proto); } public static function getLegacyClassNameWithoutPackage( $name, $file_proto) { $classname = implode('_', explode('.', $name)); return static::getClassNamePrefix($classname, $file_proto) . $classname; } public static function getClassNameWithoutPackage( $name, $file_proto) { $parts = explode('.', $name); foreach ($parts as $i => $part) { $parts[$i] = static::getClassNamePrefix($parts[$i], $file_proto) . $parts[$i]; } return implode('\\', $parts); } private static function getPreviouslyUnreservedClassNameWithoutPackage( $name, $file_proto) { $parts = explode('.', $name); foreach ($parts as $i => $part) { $parts[$i] = static::getPreviouslyUnreservedClassNamePrefix($parts[$i], $file_proto) . $parts[$i]; } return implode('\\', $parts); } public static function getFullClassName( $proto, $containing, $file_proto, &$message_name_without_package, &$classname, &$legacy_classname, &$fullname, &$previous_classname) { // Full name needs to start with '.'. $message_name_without_package = $proto->getName(); if ($containing !== "") { $message_name_without_package = $containing . "." . $message_name_without_package; } $package = $file_proto->getPackage(); if ($package === "") { $fullname = $message_name_without_package; } else { $fullname = $package . "." . $message_name_without_package; } $class_name_without_package = static::getClassNameWithoutPackage($message_name_without_package, $file_proto); $legacy_class_name_without_package = static::getLegacyClassNameWithoutPackage( $message_name_without_package, $file_proto); $previous_class_name_without_package = static::getPreviouslyUnreservedClassNameWithoutPackage( $message_name_without_package, $file_proto); $option = $file_proto->getOptions(); if (!is_null($option) && $option->hasPhpNamespace()) { $namespace = $option->getPhpNamespace(); if ($namespace !== "") { $classname = $namespace . "\\" . $class_name_without_package; $legacy_classname = $namespace . "\\" . $legacy_class_name_without_package; $previous_classname = $namespace . "\\" . $previous_class_name_without_package; return; } else { $classname = $class_name_without_package; $legacy_classname = $legacy_class_name_without_package; $previous_classname = $previous_class_name_without_package; return; } } if ($package === "") { $classname = $class_name_without_package; $legacy_classname = $legacy_class_name_without_package; $previous_classname = $previous_class_name_without_package; } else { $parts = array_map('ucwords', explode('.', $package)); foreach ($parts as $i => $part) { $parts[$i] = self::getClassNamePrefix($part, $file_proto).$part; } $classname = implode('\\', $parts) . "\\".self::getClassNamePrefix($class_name_without_package,$file_proto). $class_name_without_package; $legacy_classname = implode('\\', array_map('ucwords', explode('.', $package))). "\\".$legacy_class_name_without_package; $previous_classname = implode('\\', array_map('ucwords', explode('.', $package))). "\\".self::getPreviouslyUnreservedClassNamePrefix( $previous_class_name_without_package, $file_proto). $previous_class_name_without_package; } } public static function combineInt32ToInt64($high, $low) { $isNeg = $high < 0; if ($isNeg) { $high = ~$high; $low = ~$low; $low++; if (!$low) { $high = (int) ($high + 1); } } $result = bcadd(bcmul($high, 4294967296), $low); if ($low < 0) { $result = bcadd($result, 4294967296); } if ($isNeg) { $result = bcsub(0, $result); } return $result; } public static function parseTimestamp($timestamp) { // prevent parsing timestamps containing with the non-existent year "0000" // DateTime::createFromFormat parses without failing but as a nonsensical date if (substr($timestamp, 0, 4) === "0000") { throw new \Exception("Year cannot be zero."); } // prevent parsing timestamps ending with a lowercase z if (substr($timestamp, -1, 1) === "z") { throw new \Exception("Timezone cannot be a lowercase z."); } $nanoseconds = 0; $periodIndex = strpos($timestamp, "."); if ($periodIndex !== false) { $nanosecondsLength = 0; // find the next non-numeric character in the timestamp to calculate // the length of the nanoseconds text for ($i = $periodIndex + 1, $length = strlen($timestamp); $i < $length; $i++) { if (!is_numeric($timestamp[$i])) { $nanosecondsLength = $i - ($periodIndex + 1); break; } } if ($nanosecondsLength % 3 !== 0) { throw new \Exception("Nanoseconds must be disible by 3."); } if ($nanosecondsLength > 9) { throw new \Exception("Nanoseconds must be in the range of 0 to 999,999,999 nanoseconds."); } if ($nanosecondsLength > 0) { $nanoseconds = substr($timestamp, $periodIndex + 1, $nanosecondsLength); $nanoseconds = intval($nanoseconds); if ($nanosecondsLength < 9) { $nanoseconds = $nanoseconds * pow(10, 9 - $nanosecondsLength); } // remove the nanoseconds and preceding period from the timestamp $date = substr($timestamp, 0, $periodIndex); $timezone = substr($timestamp, $periodIndex + $nanosecondsLength + 1); $timestamp = $date.$timezone; } } $date = \DateTime::createFromFormat(\DateTime::RFC3339, $timestamp, new \DateTimeZone("UTC")); if ($date === false) { throw new \Exception("Invalid RFC 3339 timestamp."); } $value = new \Google\Protobuf\Timestamp(); $seconds = $date->format("U"); $value->setSeconds($seconds); $value->setNanos($nanoseconds); return $value; } public static function formatTimestamp($value) { if (bccomp($value->getSeconds(), "253402300800") != -1) { throw new GPBDecodeException("Duration number too large."); } if (bccomp($value->getSeconds(), "-62135596801") != 1) { throw new GPBDecodeException("Duration number too small."); } $nanoseconds = static::getNanosecondsForTimestamp($value->getNanos()); if (!empty($nanoseconds)) { $nanoseconds = ".".$nanoseconds; } $date = new \DateTime('@'.$value->getSeconds(), new \DateTimeZone("UTC")); return $date->format("Y-m-d\TH:i:s".$nanoseconds."\Z"); } public static function parseDuration($value) { if (strlen($value) < 2 || substr($value, -1) !== "s") { throw new GPBDecodeException("Missing s after duration string"); } $number = substr($value, 0, -1); if (bccomp($number, "315576000001") != -1) { throw new GPBDecodeException("Duration number too large."); } if (bccomp($number, "-315576000001") != 1) { throw new GPBDecodeException("Duration number too small."); } $pos = strrpos($number, "."); if ($pos !== false) { $seconds = substr($number, 0, $pos); if (bccomp($seconds, 0) < 0) { $nanos = bcmul("0" . substr($number, $pos), -1000000000); } else { $nanos = bcmul("0" . substr($number, $pos), 1000000000); } } else { $seconds = $number; $nanos = 0; } $duration = new Duration(); $duration->setSeconds($seconds); $duration->setNanos($nanos); return $duration; } public static function formatDuration($value) { if (bccomp($value->getSeconds(), '315576000001') != -1) { throw new GPBDecodeException('Duration number too large.'); } if (bccomp($value->getSeconds(), '-315576000001') != 1) { throw new GPBDecodeException('Duration number too small.'); } $nanos = $value->getNanos(); if ($nanos === 0) { return (string) $value->getSeconds(); } if ($nanos % 1000000 === 0) { $digits = 3; } elseif ($nanos % 1000 === 0) { $digits = 6; } else { $digits = 9; } $nanos = bcdiv($nanos, '1000000000', $digits); return bcadd($value->getSeconds(), $nanos, $digits); } public static function parseFieldMask($paths_string) { $field_mask = new FieldMask(); if (strlen($paths_string) === 0) { return $field_mask; } $path_strings = explode(",", $paths_string); $paths = $field_mask->getPaths(); foreach($path_strings as &$path_string) { $field_strings = explode(".", $path_string); foreach($field_strings as &$field_string) { $field_string = camel2underscore($field_string); } $path_string = implode(".", $field_strings); $paths[] = $path_string; } return $field_mask; } public static function formatFieldMask($field_mask) { $converted_paths = []; foreach($field_mask->getPaths() as $path) { $fields = explode('.', $path); $converted_path = []; foreach ($fields as $field) { $segments = explode('_', $field); $start = true; $converted_segments = ""; foreach($segments as $segment) { if (!$start) { $converted = ucfirst($segment); } else { $converted = $segment; $start = false; } $converted_segments .= $converted; } $converted_path []= $converted_segments; } $converted_path = implode(".", $converted_path); $converted_paths []= $converted_path; } return implode(",", $converted_paths); } public static function getNanosecondsForTimestamp($nanoseconds) { if ($nanoseconds == 0) { return ''; } if ($nanoseconds % static::NANOS_PER_MILLISECOND == 0) { return sprintf('%03d', $nanoseconds / static::NANOS_PER_MILLISECOND); } if ($nanoseconds % static::NANOS_PER_MICROSECOND == 0) { return sprintf('%06d', $nanoseconds / static::NANOS_PER_MICROSECOND); } return sprintf('%09d', $nanoseconds); } public static function hasSpecialJsonMapping($msg) { return is_a($msg, 'Google\Protobuf\Any') || is_a($msg, "Google\Protobuf\ListValue") || is_a($msg, "Google\Protobuf\Struct") || is_a($msg, "Google\Protobuf\Value") || is_a($msg, "Google\Protobuf\Duration") || is_a($msg, "Google\Protobuf\Timestamp") || is_a($msg, "Google\Protobuf\FieldMask") || static::hasJsonValue($msg); } public static function hasJsonValue($msg) { return is_a($msg, "Google\Protobuf\DoubleValue") || is_a($msg, "Google\Protobuf\FloatValue") || is_a($msg, "Google\Protobuf\Int64Value") || is_a($msg, "Google\Protobuf\UInt64Value") || is_a($msg, "Google\Protobuf\Int32Value") || is_a($msg, "Google\Protobuf\UInt32Value") || is_a($msg, "Google\Protobuf\BoolValue") || is_a($msg, "Google\Protobuf\StringValue") || is_a($msg, "Google\Protobuf\BytesValue"); } } src/Google/Protobuf/Internal/GPBWire.php000064400000040572147133775460014124 0ustar00> self::TAG_TYPE_BITS) & 0x1fffffff; } public static function getTagWireType($tag) { return $tag & 0x7; } public static function getWireType($type) { switch ($type) { case GPBType::FLOAT: case GPBType::FIXED32: case GPBType::SFIXED32: return self::WIRETYPE_FIXED32; case GPBType::DOUBLE: case GPBType::FIXED64: case GPBType::SFIXED64: return self::WIRETYPE_FIXED64; case GPBType::UINT32: case GPBType::UINT64: case GPBType::INT32: case GPBType::INT64: case GPBType::SINT32: case GPBType::SINT64: case GPBType::ENUM: case GPBType::BOOL: return self::WIRETYPE_VARINT; case GPBType::STRING: case GPBType::BYTES: case GPBType::MESSAGE: return self::WIRETYPE_LENGTH_DELIMITED; case GPBType::GROUP: user_error("Unsupported type."); return 0; default: user_error("Unsupported type."); return 0; } } // ZigZag Transform: Encodes signed integers so that they can be effectively // used with varint encoding. // // varint operates on unsigned integers, encoding smaller numbers into fewer // bytes. If you try to use it on a signed integer, it will treat this // number as a very large unsigned integer, which means that even small // signed numbers like -1 will take the maximum number of bytes (10) to // encode. zigZagEncode() maps signed integers to unsigned in such a way // that those with a small absolute value will have smaller encoded values, // making them appropriate for encoding using varint. // // int32 -> uint32 // ------------------------- // 0 -> 0 // -1 -> 1 // 1 -> 2 // -2 -> 3 // ... -> ... // 2147483647 -> 4294967294 // -2147483648 -> 4294967295 // // >> encode >> // << decode << public static function zigZagEncode32($int32) { if (PHP_INT_SIZE == 8) { $trim_int32 = $int32 & 0xFFFFFFFF; return (($trim_int32 << 1) ^ ($int32 << 32 >> 63)) & 0xFFFFFFFF; } else { return ($int32 << 1) ^ ($int32 >> 31); } } public static function zigZagDecode32($uint32) { // Fill high 32 bits. if (PHP_INT_SIZE === 8) { $uint32 |= ($uint32 & 0xFFFFFFFF); } $int32 = (($uint32 >> 1) & 0x7FFFFFFF) ^ (-($uint32 & 1)); return $int32; } public static function zigZagEncode64($int64) { if (PHP_INT_SIZE == 4) { if (bccomp($int64, 0) >= 0) { return bcmul($int64, 2); } else { return bcsub(bcmul(bcsub(0, $int64), 2), 1); } } else { return ((int)$int64 << 1) ^ ((int)$int64 >> 63); } } public static function zigZagDecode64($uint64) { if (PHP_INT_SIZE == 4) { if (bcmod($uint64, 2) == 0) { return bcdiv($uint64, 2, 0); } else { return bcsub(0, bcdiv(bcadd($uint64, 1), 2, 0)); } } else { return (($uint64 >> 1) & 0x7FFFFFFFFFFFFFFF) ^ (-($uint64 & 1)); } } public static function readInt32(&$input, &$value) { return $input->readVarint32($value); } public static function readInt64(&$input, &$value) { $success = $input->readVarint64($value); if (PHP_INT_SIZE == 4 && bccomp($value, "9223372036854775807") > 0) { $value = bcsub($value, "18446744073709551616"); } return $success; } public static function readUint32(&$input, &$value) { return self::readInt32($input, $value); } public static function readUint64(&$input, &$value) { return self::readInt64($input, $value); } public static function readSint32(&$input, &$value) { if (!$input->readVarint32($value)) { return false; } $value = GPBWire::zigZagDecode32($value); return true; } public static function readSint64(&$input, &$value) { if (!$input->readVarint64($value)) { return false; } $value = GPBWire::zigZagDecode64($value); return true; } public static function readFixed32(&$input, &$value) { return $input->readLittleEndian32($value); } public static function readFixed64(&$input, &$value) { return $input->readLittleEndian64($value); } public static function readSfixed32(&$input, &$value) { if (!self::readFixed32($input, $value)) { return false; } if (PHP_INT_SIZE === 8) { $value |= (-($value >> 31) << 32); } return true; } public static function readSfixed64(&$input, &$value) { $success = $input->readLittleEndian64($value); if (PHP_INT_SIZE == 4 && bccomp($value, "9223372036854775807") > 0) { $value = bcsub($value, "18446744073709551616"); } return $success; } public static function readFloat(&$input, &$value) { $data = null; if (!$input->readRaw(4, $data)) { return false; } $value = unpack('g', $data)[1]; return true; } public static function readDouble(&$input, &$value) { $data = null; if (!$input->readRaw(8, $data)) { return false; } $value = unpack('e', $data)[1]; return true; } public static function readBool(&$input, &$value) { if (!$input->readVarint64($value)) { return false; } if ($value == 0) { $value = false; } else { $value = true; } return true; } public static function readString(&$input, &$value) { $length = 0; return $input->readVarintSizeAsInt($length) && $input->readRaw($length, $value); } public static function readMessage(&$input, &$message) { $length = 0; if (!$input->readVarintSizeAsInt($length)) { return false; } $old_limit = 0; $recursion_limit = 0; $input->incrementRecursionDepthAndPushLimit( $length, $old_limit, $recursion_limit); if ($recursion_limit < 0 || !$message->parseFromStream($input)) { return false; } return $input->decrementRecursionDepthAndPopLimit($old_limit); } public static function writeTag(&$output, $tag) { return $output->writeTag($tag); } public static function writeInt32(&$output, $value) { return $output->writeVarint32($value, false); } public static function writeInt64(&$output, $value) { return $output->writeVarint64($value); } public static function writeUint32(&$output, $value) { return $output->writeVarint32($value, true); } public static function writeUint64(&$output, $value) { return $output->writeVarint64($value); } public static function writeSint32(&$output, $value) { $value = GPBWire::zigZagEncode32($value); return $output->writeVarint32($value, true); } public static function writeSint64(&$output, $value) { $value = GPBWire::zigZagEncode64($value); return $output->writeVarint64($value); } public static function writeFixed32(&$output, $value) { return $output->writeLittleEndian32($value); } public static function writeFixed64(&$output, $value) { return $output->writeLittleEndian64($value); } public static function writeSfixed32(&$output, $value) { return $output->writeLittleEndian32($value); } public static function writeSfixed64(&$output, $value) { return $output->writeLittleEndian64($value); } public static function writeBool(&$output, $value) { if ($value) { return $output->writeVarint32(1, true); } else { return $output->writeVarint32(0, true); } } public static function writeFloat(&$output, $value) { $data = pack("g", $value); return $output->writeRaw($data, 4); } public static function writeDouble(&$output, $value) { $data = pack("e", $value); return $output->writeRaw($data, 8); } public static function writeString(&$output, $value) { return self::writeBytes($output, $value); } public static function writeBytes(&$output, $value) { $size = strlen($value); if (!$output->writeVarint32($size, true)) { return false; } return $output->writeRaw($value, $size); } public static function writeMessage(&$output, $value) { $size = $value->byteSize(); if (!$output->writeVarint32($size, true)) { return false; } return $value->serializeToStream($output); } public static function makeTag($number, $type) { return ($number << 3) | self::getWireType($type); } public static function tagSize($field) { $tag = self::makeTag($field->getNumber(), $field->getType()); return self::varint32Size($tag); } public static function varint32Size($value, $sign_extended = false) { if ($value < 0) { if ($sign_extended) { return 10; } else { return 5; } } if ($value < (1 << 7)) { return 1; } if ($value < (1 << 14)) { return 2; } if ($value < (1 << 21)) { return 3; } if ($value < (1 << 28)) { return 4; } return 5; } public static function sint32Size($value) { $value = self::zigZagEncode32($value); return self::varint32Size($value); } public static function sint64Size($value) { $value = self::zigZagEncode64($value); return self::varint64Size($value); } public static function varint64Size($value) { if (PHP_INT_SIZE == 4) { if (bccomp($value, 0) < 0 || bccomp($value, "9223372036854775807") > 0) { return 10; } if (bccomp($value, 1 << 7) < 0) { return 1; } if (bccomp($value, 1 << 14) < 0) { return 2; } if (bccomp($value, 1 << 21) < 0) { return 3; } if (bccomp($value, 1 << 28) < 0) { return 4; } if (bccomp($value, '34359738368') < 0) { return 5; } if (bccomp($value, '4398046511104') < 0) { return 6; } if (bccomp($value, '562949953421312') < 0) { return 7; } if (bccomp($value, '72057594037927936') < 0) { return 8; } return 9; } else { if ($value < 0) { return 10; } if ($value < (1 << 7)) { return 1; } if ($value < (1 << 14)) { return 2; } if ($value < (1 << 21)) { return 3; } if ($value < (1 << 28)) { return 4; } if ($value < (1 << 35)) { return 5; } if ($value < (1 << 42)) { return 6; } if ($value < (1 << 49)) { return 7; } if ($value < (1 << 56)) { return 8; } return 9; } } public static function serializeFieldToStream( $value, $field, $need_tag, &$output) { if ($need_tag) { if (!GPBWire::writeTag( $output, self::makeTag( $field->getNumber(), $field->getType()))) { return false; } } switch ($field->getType()) { case GPBType::DOUBLE: if (!GPBWire::writeDouble($output, $value)) { return false; } break; case GPBType::FLOAT: if (!GPBWire::writeFloat($output, $value)) { return false; } break; case GPBType::INT64: if (!GPBWire::writeInt64($output, $value)) { return false; } break; case GPBType::UINT64: if (!GPBWire::writeUint64($output, $value)) { return false; } break; case GPBType::INT32: if (!GPBWire::writeInt32($output, $value)) { return false; } break; case GPBType::FIXED32: if (!GPBWire::writeFixed32($output, $value)) { return false; } break; case GPBType::FIXED64: if (!GPBWire::writeFixed64($output, $value)) { return false; } break; case GPBType::BOOL: if (!GPBWire::writeBool($output, $value)) { return false; } break; case GPBType::STRING: if (!GPBWire::writeString($output, $value)) { return false; } break; // case GPBType::GROUP: // echo "GROUP\xA"; // trigger_error("Not implemented.", E_ERROR); // break; case GPBType::MESSAGE: if (!GPBWire::writeMessage($output, $value)) { return false; } break; case GPBType::BYTES: if (!GPBWire::writeBytes($output, $value)) { return false; } break; case GPBType::UINT32: if (PHP_INT_SIZE === 8 && $value < 0) { $value += 4294967296; } if (!GPBWire::writeUint32($output, $value)) { return false; } break; case GPBType::ENUM: if (!GPBWire::writeInt32($output, $value)) { return false; } break; case GPBType::SFIXED32: if (!GPBWire::writeSfixed32($output, $value)) { return false; } break; case GPBType::SFIXED64: if (!GPBWire::writeSfixed64($output, $value)) { return false; } break; case GPBType::SINT32: if (!GPBWire::writeSint32($output, $value)) { return false; } break; case GPBType::SINT64: if (!GPBWire::writeSint64($output, $value)) { return false; } break; default: user_error("Unsupported type."); return false; } return true; } } src/Google/Protobuf/Internal/GPBWireType.php000064400000001030147133775460014750 0ustar00google.protobuf.GeneratedCodeInfo */ class GeneratedCodeInfo extends \Google\Protobuf\Internal\Message { /** * An Annotation connects some span of text in generated code to an element * of its generating .proto file. * * Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1; */ private $annotation; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\GeneratedCodeInfo\Annotation>|\Google\Protobuf\Internal\RepeatedField $annotation * An Annotation connects some span of text in generated code to an element * of its generating .proto file. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * An Annotation connects some span of text in generated code to an element * of its generating .proto file. * * Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1; * @return \Google\Protobuf\Internal\RepeatedField */ public function getAnnotation() { return $this->annotation; } /** * An Annotation connects some span of text in generated code to an element * of its generating .proto file. * * Generated from protobuf field repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1; * @param array<\Google\Protobuf\Internal\GeneratedCodeInfo\Annotation>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setAnnotation($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\GeneratedCodeInfo\Annotation::class); $this->annotation = $arr; return $this; } } src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php000064400000016737147133775460020312 0ustar00google.protobuf.GeneratedCodeInfo.Annotation */ class Annotation extends \Google\Protobuf\Internal\Message { /** * Identifies the element in the original source .proto file. This field * is formatted the same as SourceCodeInfo.Location.path. * * Generated from protobuf field repeated int32 path = 1 [packed = true]; */ private $path; /** * Identifies the filesystem path to the original source .proto. * * Generated from protobuf field optional string source_file = 2; */ protected $source_file = null; /** * Identifies the starting offset in bytes in the generated code * that relates to the identified object. * * Generated from protobuf field optional int32 begin = 3; */ protected $begin = null; /** * Identifies the ending offset in bytes in the generated code that * relates to the identified object. The end offset should be one past * the last relevant byte (so the length of the text = end - begin). * * Generated from protobuf field optional int32 end = 4; */ protected $end = null; /** * Generated from protobuf field optional .google.protobuf.GeneratedCodeInfo.Annotation.Semantic semantic = 5; */ protected $semantic = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array|\Google\Protobuf\Internal\RepeatedField $path * Identifies the element in the original source .proto file. This field * is formatted the same as SourceCodeInfo.Location.path. * @type string $source_file * Identifies the filesystem path to the original source .proto. * @type int $begin * Identifies the starting offset in bytes in the generated code * that relates to the identified object. * @type int $end * Identifies the ending offset in bytes in the generated code that * relates to the identified object. The end offset should be one past * the last relevant byte (so the length of the text = end - begin). * @type int $semantic * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Identifies the element in the original source .proto file. This field * is formatted the same as SourceCodeInfo.Location.path. * * Generated from protobuf field repeated int32 path = 1 [packed = true]; * @return \Google\Protobuf\Internal\RepeatedField */ public function getPath() { return $this->path; } /** * Identifies the element in the original source .proto file. This field * is formatted the same as SourceCodeInfo.Location.path. * * Generated from protobuf field repeated int32 path = 1 [packed = true]; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setPath($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32); $this->path = $arr; return $this; } /** * Identifies the filesystem path to the original source .proto. * * Generated from protobuf field optional string source_file = 2; * @return string */ public function getSourceFile() { return isset($this->source_file) ? $this->source_file : ''; } public function hasSourceFile() { return isset($this->source_file); } public function clearSourceFile() { unset($this->source_file); } /** * Identifies the filesystem path to the original source .proto. * * Generated from protobuf field optional string source_file = 2; * @param string $var * @return $this */ public function setSourceFile($var) { GPBUtil::checkString($var, True); $this->source_file = $var; return $this; } /** * Identifies the starting offset in bytes in the generated code * that relates to the identified object. * * Generated from protobuf field optional int32 begin = 3; * @return int */ public function getBegin() { return isset($this->begin) ? $this->begin : 0; } public function hasBegin() { return isset($this->begin); } public function clearBegin() { unset($this->begin); } /** * Identifies the starting offset in bytes in the generated code * that relates to the identified object. * * Generated from protobuf field optional int32 begin = 3; * @param int $var * @return $this */ public function setBegin($var) { GPBUtil::checkInt32($var); $this->begin = $var; return $this; } /** * Identifies the ending offset in bytes in the generated code that * relates to the identified object. The end offset should be one past * the last relevant byte (so the length of the text = end - begin). * * Generated from protobuf field optional int32 end = 4; * @return int */ public function getEnd() { return isset($this->end) ? $this->end : 0; } public function hasEnd() { return isset($this->end); } public function clearEnd() { unset($this->end); } /** * Identifies the ending offset in bytes in the generated code that * relates to the identified object. The end offset should be one past * the last relevant byte (so the length of the text = end - begin). * * Generated from protobuf field optional int32 end = 4; * @param int $var * @return $this */ public function setEnd($var) { GPBUtil::checkInt32($var); $this->end = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.GeneratedCodeInfo.Annotation.Semantic semantic = 5; * @return int */ public function getSemantic() { return isset($this->semantic) ? $this->semantic : 0; } public function hasSemantic() { return isset($this->semantic); } public function clearSemantic() { unset($this->semantic); } /** * Generated from protobuf field optional .google.protobuf.GeneratedCodeInfo.Annotation.Semantic semantic = 5; * @param int $var * @return $this */ public function setSemantic($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\GeneratedCodeInfo\Annotation\Semantic::class); $this->semantic = $var; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Annotation::class, \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation::class); src/Google/Protobuf/Internal/GeneratedCodeInfo_Annotation.php000064400000001141147133775460020351 0ustar00getPublicDescriptor(); } } src/Google/Protobuf/Internal/HasPublicDescriptorTrait.php000064400000000731147133775460017573 0ustar00public_desc; } } src/Google/Protobuf/Internal/MapEntry.php000064400000002412147133775460014413 0ustar00getFieldByNumber(2); if ($value_field->getType() == GPBType::MESSAGE) { $klass = $value_field->getMessageType()->getClass(); $value = new $klass; $this->setValue($value); } } public function setKey($key) { $this->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.php000064400000016617147133775460014351 0ustar00container = []; $this->key_type = $key_type; $this->value_type = $value_type; $this->klass = $klass; if ($this->value_type == GPBType::MESSAGE) { $pool = DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName($klass); if ($desc == NULL) { new $klass; // No msg class instance has been created before. $desc = $pool->getDescriptorByClassName($klass); } $this->klass = $desc->getClass(); $this->legacy_klass = $desc->getLegacyClass(); } } /** * @ignore */ public function getKeyType() { return $this->key_type; } /** * @ignore */ public function getValueType() { return $this->value_type; } /** * @ignore */ public function getValueClass() { return $this->klass; } /** * @ignore */ public function getLegacyValueClass() { return $this->legacy_klass; } /** * Return the element at the given key. * * This will also be called for: $ele = $arr[$key] * * @param int|string $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. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] 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 int|string $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. * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function offsetSet($key, $value) { $this->checkKey($this->key_type, $key); switch ($this->value_type) { case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::INT32: case GPBType::ENUM: GPBUtil::checkInt32($value); break; case GPBType::FIXED32: case GPBType::UINT32: GPBUtil::checkUint32($value); break; case GPBType::SFIXED64: case GPBType::SINT64: case GPBType::INT64: GPBUtil::checkInt64($value); break; case GPBType::FIXED64: case GPBType::UINT64: GPBUtil::checkUint64($value); break; case GPBType::FLOAT: GPBUtil::checkFloat($value); break; case GPBType::DOUBLE: GPBUtil::checkDouble($value); break; case GPBType::BOOL: GPBUtil::checkBool($value); break; case GPBType::STRING: GPBUtil::checkString($value, true); break; case GPBType::MESSAGE: if (is_null($value)) { trigger_error("Map element cannot be null.", E_USER_ERROR); } GPBUtil::checkMessage($value, $this->klass); break; default: break; } $this->container[$key] = $value; } /** * Remove the element at the given key. * * This will also be called for: unset($arr) * * @param int|string $key The key of the element to be removed. * @return void * @throws \ErrorException Invalid type for key. * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function offsetUnset($key) { $this->checkKey($this->key_type, $key); unset($this->container[$key]); } /** * Check the existence of the element at the given key. * * This will also be called for: isset($arr) * * @param int|string $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): bool { $this->checkKey($this->key_type, $key); return isset($this->container[$key]); } /** * @ignore */ public function getIterator(): Traversable { return new MapFieldIter($this->container, $this->key_type); } /** * Return the number of stored elements. * * This will also be called for: count($arr) * * @return integer The number of stored elements. */ public function count(): int { return count($this->container); } /** * @ignore */ private function checkKey($key_type, &$key) { switch ($key_type) { case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::INT32: GPBUtil::checkInt32($key); break; case GPBType::FIXED32: case GPBType::UINT32: GPBUtil::checkUint32($key); break; case GPBType::SFIXED64: case GPBType::SINT64: case GPBType::INT64: GPBUtil::checkInt64($key); break; case GPBType::FIXED64: case GPBType::UINT64: GPBUtil::checkUint64($key); break; case GPBType::BOOL: GPBUtil::checkBool($key); break; case GPBType::STRING: GPBUtil::checkString($key, true); break; default: trigger_error( "Given type cannot be map key.", E_USER_ERROR); break; } } } src/Google/Protobuf/Internal/MapFieldIter.php000064400000005752147133775460015173 0ustar00container = $container; $this->key_type = $key_type; } /** * Reset the status of the iterator * * @return void * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function rewind() { reset($this->container); } /** * Return the element at the current position. * * @return object The element at the current position. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] public function current() { return current($this->container); } /** * Return the current key. * * @return object The current key. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] public function key() { $key = key($this->container); switch ($this->key_type) { case GPBType::INT64: case GPBType::UINT64: case GPBType::FIXED64: case GPBType::SFIXED64: case GPBType::SINT64: if (PHP_INT_SIZE === 8) { return $key; } // Intentionally fall through case GPBType::STRING: // PHP associative array stores int string as int for key. return strval($key); case GPBType::BOOL: // PHP associative array stores bool as integer for key. return boolval($key); default: return $key; } } /** * Move to the next position. * * @return void * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function next() { next($this->container); } /** * Check whether there are more elements to iterate. * * @return bool True if there are more elements to iterate. */ public function valid(): bool { return key($this->container) !== null; } } src/Google/Protobuf/Internal/Message.php000064400000225347147133775460014256 0ustar00initWithDescriptor($data); } else { $this->initWithGeneratedPool(); if (is_array($data)) { $this->mergeFromArray($data); } else if (!empty($data)) { throw new \InvalidArgumentException( 'Message constructor must be an array or null.' ); } } } /** * @ignore */ private function initWithGeneratedPool() { $pool = DescriptorPool::getGeneratedPool(); $this->desc = $pool->getDescriptorByClassName(get_class($this)); if (is_null($this->desc)) { throw new \InvalidArgumentException( get_class($this) ." is not found in descriptor pool. " . 'Only generated classes may derive from Message.'); } 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"); } } } } /** * @ignore */ private function initWithDescriptor(Descriptor $desc) { $this->desc = $desc; foreach ($desc->getField() as $field) { $setter = $field->getSetter(); $defaultValue = $this->defaultValue($field); $this->$setter($defaultValue); } } protected function readWrapperValue($member) { $field = $this->desc->getFieldByName($member); $oneof_index = $field->getOneofIndex(); if ($oneof_index === -1) { $wrapper = $this->$member; } else { $wrapper = $this->readOneof($field->getNumber()); } if (is_null($wrapper)) { return NULL; } else { return $wrapper->getValue(); } } protected function writeWrapperValue($member, $value) { $field = $this->desc->getFieldByName($member); $wrapped_value = $value; if (!is_null($value)) { $desc = $field->getMessageType(); $klass = $desc->getClass(); $wrapped_value = new $klass; $wrapped_value->setValue($value); } $oneof_index = $field->getOneofIndex(); if ($oneof_index === -1) { $this->$member = $wrapped_value; } else { $this->writeOneof($field->getNumber(), $wrapped_value); } } 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 hasOneof($number) { $field = $this->desc->getFieldByNumber($number); $oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()]; $oneof_name = $oneof->getName(); $oneof_field = $this->$oneof_name; return $number === $oneof_field->getNumber(); } protected function writeOneof($number, $value) { $field = $this->desc->getFieldByNumber($number); $oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()]; $oneof_name = $oneof->getName(); if ($value === null) { $this->$oneof_name = new OneofField($oneof); } else { $oneof_field = $this->$oneof_name; $oneof_field->setValue($value); $oneof_field->setFieldName($field->getName()); $oneof_field->setNumber($number); } } protected function whichOneof($oneof_name) { $oneof_field = $this->$oneof_name; $number = $oneof_field->getNumber(); if ($number == 0) { return ""; } $field = $this->desc->getFieldByNumber($number); return $field->getName(); } /** * @ignore */ private function defaultValue($field) { $value = null; switch ($field->getType()) { case GPBType::DOUBLE: case GPBType::FLOAT: return 0.0; case GPBType::UINT32: case GPBType::INT32: case GPBType::FIXED32: case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::ENUM: return 0; case GPBType::INT64: case GPBType::UINT64: case GPBType::FIXED64: case GPBType::SFIXED64: case GPBType::SINT64: if (PHP_INT_SIZE === 4) { return '0'; } else { return 0; } case GPBType::BOOL: return false; case GPBType::STRING: case GPBType::BYTES: return ""; case GPBType::GROUP: case GPBType::MESSAGE: return null; default: user_error("Unsupported type."); return false; } } /** * @ignore */ private function skipField($input, $tag) { $number = GPBWire::getTagFieldNumber($tag); if ($number === 0) { throw new GPBDecodeException("Illegal field number zero."); } $start = $input->current(); switch (GPBWire::getTagWireType($tag)) { case GPBWireType::VARINT: $uint64 = 0; if (!$input->readVarint64($uint64)) { throw new GPBDecodeException( "Unexpected EOF inside varint."); } break; case GPBWireType::FIXED64: $uint64 = 0; if (!$input->readLittleEndian64($uint64)) { throw new GPBDecodeException( "Unexpected EOF inside fixed64."); } break; case GPBWireType::FIXED32: $uint32 = 0; if (!$input->readLittleEndian32($uint32)) { throw new GPBDecodeException( "Unexpected EOF inside fixed32."); } break; case GPBWireType::LENGTH_DELIMITED: $length = 0; if (!$input->readVarint32($length)) { throw new GPBDecodeException( "Unexpected EOF inside length."); } $data = NULL; if (!$input->readRaw($length, $data)) { throw new GPBDecodeException( "Unexpected EOF inside length delimited data."); } break; case GPBWireType::START_GROUP: case GPBWireType::END_GROUP: throw new GPBDecodeException("Unexpected wire type."); default: throw new GPBDecodeException("Unexpected wire type."); } $end = $input->current(); $bytes = str_repeat(chr(0), CodedOutputStream::MAX_VARINT64_BYTES); $size = CodedOutputStream::writeVarintToArray($tag, $bytes, true); $this->unknown .= substr($bytes, 0, $size) . $input->substr($start, $end); } /** * @ignore */ private static function parseFieldFromStreamNoTag($input, $field, &$value) { switch ($field->getType()) { case GPBType::DOUBLE: if (!GPBWire::readDouble($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside double field."); } break; case GPBType::FLOAT: if (!GPBWire::readFloat($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside float field."); } break; case GPBType::INT64: if (!GPBWire::readInt64($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside int64 field."); } break; case GPBType::UINT64: if (!GPBWire::readUint64($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside uint64 field."); } break; case GPBType::INT32: if (!GPBWire::readInt32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside int32 field."); } break; case GPBType::FIXED64: if (!GPBWire::readFixed64($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside fixed64 field."); } break; case GPBType::FIXED32: if (!GPBWire::readFixed32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside fixed32 field."); } break; case GPBType::BOOL: if (!GPBWire::readBool($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside bool field."); } break; case GPBType::STRING: // We don't check UTF-8 here; that will be validated by the // setter later. if (!GPBWire::readString($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside string field."); } break; case GPBType::GROUP: trigger_error("Not implemented.", E_USER_ERROR); break; case GPBType::MESSAGE: if ($field->isMap()) { $value = new MapEntry($field->getMessageType()); } else { $klass = $field->getMessageType()->getClass(); $value = new $klass; } if (!GPBWire::readMessage($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside message."); } break; case GPBType::BYTES: if (!GPBWire::readString($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside bytes field."); } break; case GPBType::UINT32: if (!GPBWire::readUint32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside uint32 field."); } break; case GPBType::ENUM: // TODO: Check unknown enum value. if (!GPBWire::readInt32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside enum field."); } break; case GPBType::SFIXED32: if (!GPBWire::readSfixed32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside sfixed32 field."); } break; case GPBType::SFIXED64: if (!GPBWire::readSfixed64($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside sfixed64 field."); } break; case GPBType::SINT32: if (!GPBWire::readSint32($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside sint32 field."); } break; case GPBType::SINT64: if (!GPBWire::readSint64($input, $value)) { throw new GPBDecodeException( "Unexpected EOF inside sint64 field."); } break; default: user_error("Unsupported type."); return false; } return true; } /** * @ignore */ private function parseFieldFromStream($tag, $input, $field) { $value = null; if (is_null($field)) { $value_format = GPBWire::UNKNOWN; } elseif (GPBWire::getTagWireType($tag) === GPBWire::getWireType($field->getType())) { $value_format = GPBWire::NORMAL_FORMAT; } elseif ($field->isPackable() && GPBWire::getTagWireType($tag) === GPBWire::WIRETYPE_LENGTH_DELIMITED) { $value_format = GPBWire::PACKED_FORMAT; } else { // the wire type doesn't match. Put it in our unknown field set. $value_format = GPBWire::UNKNOWN; } if ($value_format === GPBWire::UNKNOWN) { $this->skipField($input, $tag); return; } elseif ($value_format === GPBWire::NORMAL_FORMAT) { self::parseFieldFromStreamNoTag($input, $field, $value); } elseif ($value_format === GPBWire::PACKED_FORMAT) { $length = 0; if (!GPBWire::readInt32($input, $length)) { throw new GPBDecodeException( "Unexpected EOF inside packed length."); } $limit = $input->pushLimit($length); $getter = $field->getGetter(); while ($input->bytesUntilLimit() > 0) { self::parseFieldFromStreamNoTag($input, $field, $value); $this->appendHelper($field, $value); } $input->popLimit($limit); return; } else { return; } if ($field->isMap()) { $this->kvUpdateHelper($field, $value->getKey(), $value->getValue()); } else if ($field->isRepeated()) { $this->appendHelper($field, $value); } else { $setter = $field->getSetter(); $this->$setter($value); } } /** * Clear all containing fields. * @return null */ public function clear() { $this->unknown = ""; foreach ($this->desc->getField() as $field) { $setter = $field->getSetter(); if ($field->isMap()) { $message_type = $field->getMessageType(); $key_field = $message_type->getFieldByNumber(1); $value_field = $message_type->getFieldByNumber(2); switch ($value_field->getType()) { case GPBType::MESSAGE: case GPBType::GROUP: $map_field = new MapField( $key_field->getType(), $value_field->getType(), $value_field->getMessageType()->getClass()); $this->$setter($map_field); break; case GPBType::ENUM: $map_field = new MapField( $key_field->getType(), $value_field->getType(), $value_field->getEnumType()->getClass()); $this->$setter($map_field); break; default: $map_field = new MapField( $key_field->getType(), $value_field->getType()); $this->$setter($map_field); break; } } else if ($field->getLabel() === GPBLabel::REPEATED) { switch ($field->getType()) { case GPBType::MESSAGE: case GPBType::GROUP: $repeated_field = new RepeatedField( $field->getType(), $field->getMessageType()->getClass()); $this->$setter($repeated_field); break; case GPBType::ENUM: $repeated_field = new RepeatedField( $field->getType(), $field->getEnumType()->getClass()); $this->$setter($repeated_field); break; default: $repeated_field = new RepeatedField($field->getType()); $this->$setter($repeated_field); break; } } else if ($field->getOneofIndex() !== -1) { $oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()]; $oneof_name = $oneof->getName(); $this->$oneof_name = new OneofField($oneof); } else if ($field->getLabel() === GPBLabel::OPTIONAL) { switch ($field->getType()) { case GPBType::DOUBLE : case GPBType::FLOAT : $this->$setter(0.0); break; case GPBType::INT32 : case GPBType::FIXED32 : case GPBType::UINT32 : case GPBType::SFIXED32 : case GPBType::SINT32 : case GPBType::ENUM : $this->$setter(0); break; case GPBType::BOOL : $this->$setter(false); break; case GPBType::STRING : case GPBType::BYTES : $this->$setter(""); break; case GPBType::GROUP : case GPBType::MESSAGE : $null = null; $this->$setter($null); break; } if (PHP_INT_SIZE == 4) { switch ($field->getType()) { case GPBType::INT64: case GPBType::UINT64: case GPBType::FIXED64: case GPBType::SFIXED64: case GPBType::SINT64: $this->$setter("0"); } } else { switch ($field->getType()) { case GPBType::INT64: case GPBType::UINT64: case GPBType::FIXED64: case GPBType::SFIXED64: case GPBType::SINT64: $this->$setter(0); } } } } } /** * Clear all unknown fields previously parsed. * @return null */ public function discardUnknownFields() { $this->unknown = ""; foreach ($this->desc->getField() as $field) { if ($field->getType() != GPBType::MESSAGE) { continue; } if ($field->isMap()) { $value_field = $field->getMessageType()->getFieldByNumber(2); if ($value_field->getType() != GPBType::MESSAGE) { continue; } $getter = $field->getGetter(); $map = $this->$getter(); foreach ($map as $key => $value) { $value->discardUnknownFields(); } } else if ($field->getLabel() === GPBLabel::REPEATED) { $getter = $field->getGetter(); $arr = $this->$getter(); foreach ($arr as $sub) { $sub->discardUnknownFields(); } } else if ($field->getLabel() === GPBLabel::OPTIONAL) { $getter = $field->getGetter(); $sub = $this->$getter(); if (!is_null($sub)) { $sub->discardUnknownFields(); } } } } /** * Merges the contents of the specified message into current message. * * This method merges the contents of the specified message into the * current message. Singular fields that are set in the specified message * overwrite the corresponding fields in the current message. Repeated * fields are appended. Map fields key-value pairs are overwritten. * Singular/Oneof sub-messages are recursively merged. All overwritten * sub-messages are deep-copied. * * @param object $msg Protobuf message to be merged from. * @return null */ public function mergeFrom($msg) { if (get_class($this) !== get_class($msg)) { user_error("Cannot merge messages with different class."); return; } foreach ($this->desc->getField() as $field) { $setter = $field->getSetter(); $getter = $field->getGetter(); if ($field->isMap()) { if (count($msg->$getter()) != 0) { $value_field = $field->getMessageType()->getFieldByNumber(2); foreach ($msg->$getter() as $key => $value) { if ($value_field->getType() == GPBType::MESSAGE) { $klass = $value_field->getMessageType()->getClass(); $copy = new $klass; $copy->mergeFrom($value); $this->kvUpdateHelper($field, $key, $copy); } else { $this->kvUpdateHelper($field, $key, $value); } } } } else if ($field->getLabel() === GPBLabel::REPEATED) { if (count($msg->$getter()) != 0) { foreach ($msg->$getter() as $tmp) { if ($field->getType() == GPBType::MESSAGE) { $klass = $field->getMessageType()->getClass(); $copy = new $klass; $copy->mergeFrom($tmp); $this->appendHelper($field, $copy); } else { $this->appendHelper($field, $tmp); } } } } else if ($field->getLabel() === GPBLabel::OPTIONAL) { if($msg->$getter() !== $this->defaultValue($field)) { $tmp = $msg->$getter(); if ($field->getType() == GPBType::MESSAGE) { if (is_null($this->$getter())) { $klass = $field->getMessageType()->getClass(); $new_msg = new $klass; $this->$setter($new_msg); } $this->$getter()->mergeFrom($tmp); } else { $this->$setter($tmp); } } } } } /** * Parses a protocol buffer contained in a string. * * This function takes a string in the (non-human-readable) binary wire * format, matching the encoding output by serializeToString(). * See mergeFrom() for merging behavior, if the field is already set in the * specified message. * * @param string $data Binary protobuf data. * @return null * @throws \Exception Invalid data. */ public function mergeFromString($data) { $input = new CodedInputStream($data); $this->parseFromStream($input); } /** * Parses a json string to protobuf message. * * This function takes a string in the json wire format, matching the * encoding output by serializeToJsonString(). * See mergeFrom() for merging behavior, if the field is already set in the * specified message. * * @param string $data Json protobuf data. * @param bool $ignore_unknown * @return null * @throws \Exception Invalid data. */ public function mergeFromJsonString($data, $ignore_unknown = false) { $input = new RawInputStream($data); $this->parseFromJsonStream($input, $ignore_unknown); } /** * @ignore */ public function parseFromStream($input) { while (true) { $tag = $input->readTag(); // End of input. This is a valid place to end, so return true. if ($tag === 0) { return true; } $number = GPBWire::getTagFieldNumber($tag); $field = $this->desc->getFieldByNumber($number); $this->parseFieldFromStream($tag, $input, $field); } } private function convertJsonValueToProtoValue( $value, $field, $ignore_unknown, $is_map_key = false) { switch ($field->getType()) { case GPBType::MESSAGE: $klass = $field->getMessageType()->getClass(); $submsg = new $klass; if (is_a($submsg, "Google\Protobuf\Duration")) { if (is_null($value)) { return $this->defaultValue($field); } else if (!is_string($value)) { throw new GPBDecodeException("Expect string."); } return GPBUtil::parseDuration($value); } else if ($field->isTimestamp()) { if (is_null($value)) { return $this->defaultValue($field); } else if (!is_string($value)) { throw new GPBDecodeException("Expect string."); } try { $timestamp = GPBUtil::parseTimestamp($value); } catch (\Exception $e) { throw new GPBDecodeException( "Invalid RFC 3339 timestamp: ".$e->getMessage()); } $submsg->setSeconds($timestamp->getSeconds()); $submsg->setNanos($timestamp->getNanos()); } else if (is_a($submsg, "Google\Protobuf\FieldMask")) { if (is_null($value)) { return $this->defaultValue($field); } try { return GPBUtil::parseFieldMask($value); } catch (\Exception $e) { throw new GPBDecodeException( "Invalid FieldMask: ".$e->getMessage()); } } else { if (is_null($value) && !is_a($submsg, "Google\Protobuf\Value")) { return $this->defaultValue($field); } if (GPBUtil::hasSpecialJsonMapping($submsg)) { } elseif (!is_object($value) && !is_array($value)) { throw new GPBDecodeException("Expect message."); } $submsg->mergeFromJsonArray($value, $ignore_unknown); } return $submsg; case GPBType::ENUM: if (is_null($value)) { return $this->defaultValue($field); } if (is_integer($value)) { return $value; } $enum_value = $field->getEnumType()->getValueByName($value); if (!is_null($enum_value)) { return $enum_value->getNumber(); } else if ($ignore_unknown) { return $this->defaultValue($field); } else { throw new GPBDecodeException( "Enum field only accepts integer or enum value name"); } case GPBType::STRING: if (is_null($value)) { return $this->defaultValue($field); } if (is_numeric($value)) { return strval($value); } if (!is_string($value)) { throw new GPBDecodeException( "String field only accepts string value"); } return $value; case GPBType::BYTES: if (is_null($value)) { return $this->defaultValue($field); } if (!is_string($value)) { throw new GPBDecodeException( "Byte field only accepts string value"); } $proto_value = base64_decode($value, true); if ($proto_value === false) { throw new GPBDecodeException("Invalid base64 characters"); } return $proto_value; case GPBType::BOOL: if (is_null($value)) { return $this->defaultValue($field); } if ($is_map_key) { if ($value === "true") { return true; } if ($value === "false") { return false; } throw new GPBDecodeException( "Bool field only accepts bool value"); } if (!is_bool($value)) { throw new GPBDecodeException( "Bool field only accepts bool value"); } return $value; case GPBType::FLOAT: case GPBType::DOUBLE: if (is_null($value)) { return $this->defaultValue($field); } if ($value === "Infinity") { return INF; } if ($value === "-Infinity") { return -INF; } if ($value === "NaN") { return NAN; } return $value; case GPBType::INT32: case GPBType::SINT32: case GPBType::SFIXED32: if (is_null($value)) { return $this->defaultValue($field); } if (!is_numeric($value)) { throw new GPBDecodeException( "Invalid data type for int32 field"); } if (is_string($value) && trim($value) !== $value) { throw new GPBDecodeException( "Invalid data type for int32 field"); } if (bccomp($value, "2147483647") > 0) { throw new GPBDecodeException( "Int32 too large"); } if (bccomp($value, "-2147483648") < 0) { throw new GPBDecodeException( "Int32 too small"); } return $value; case GPBType::UINT32: case GPBType::FIXED32: if (is_null($value)) { return $this->defaultValue($field); } if (!is_numeric($value)) { throw new GPBDecodeException( "Invalid data type for uint32 field"); } if (is_string($value) && trim($value) !== $value) { throw new GPBDecodeException( "Invalid data type for int32 field"); } if (bccomp($value, 4294967295) > 0) { throw new GPBDecodeException( "Uint32 too large"); } return $value; case GPBType::INT64: case GPBType::SINT64: case GPBType::SFIXED64: if (is_null($value)) { return $this->defaultValue($field); } if (!is_numeric($value)) { throw new GPBDecodeException( "Invalid data type for int64 field"); } if (is_string($value) && trim($value) !== $value) { throw new GPBDecodeException( "Invalid data type for int64 field"); } if (bccomp($value, "9223372036854775807") > 0) { throw new GPBDecodeException( "Int64 too large"); } if (bccomp($value, "-9223372036854775808") < 0) { throw new GPBDecodeException( "Int64 too small"); } return $value; case GPBType::UINT64: case GPBType::FIXED64: if (is_null($value)) { return $this->defaultValue($field); } if (!is_numeric($value)) { throw new GPBDecodeException( "Invalid data type for int64 field"); } if (is_string($value) && trim($value) !== $value) { throw new GPBDecodeException( "Invalid data type for int64 field"); } if (bccomp($value, "18446744073709551615") > 0) { throw new GPBDecodeException( "Uint64 too large"); } if (bccomp($value, "9223372036854775807") > 0) { $value = bcsub($value, "18446744073709551616"); } return $value; default: return $value; } } /** * Populates the message from a user-supplied PHP array. Array keys * correspond to Message properties and nested message properties. * * Example: * ``` * $message->mergeFromArray([ * 'name' => 'This is a message name', * 'interval' => [ * 'startTime' => time() - 60, * 'endTime' => time(), * ] * ]); * ``` * * This method will trigger an error if it is passed data that cannot * be converted to the correct type. For example, a StringValue field * must receive data that is either a string or a StringValue object. * * @param array $array An array containing message properties and values. * @return null */ protected function mergeFromArray(array $array) { // Just call the setters for the field names foreach ($array as $key => $value) { $field = $this->desc->getFieldByName($key); if (is_null($field)) { throw new \UnexpectedValueException( 'Invalid message property: ' . $key); } $setter = $field->getSetter(); if ($field->isMap()) { $valueField = $field->getMessageType()->getFieldByName('value'); if (!is_null($valueField) && $valueField->isWrapperType()) { self::normalizeArrayElementsToMessageType($value, $valueField->getMessageType()->getClass()); } } elseif ($field->isWrapperType()) { $class = $field->getMessageType()->getClass(); if ($field->isRepeated()) { self::normalizeArrayElementsToMessageType($value, $class); } else { self::normalizeToMessageType($value, $class); } } $this->$setter($value); } } /** * Tries to normalize the elements in $value into a provided protobuf * wrapper type $class. If $value is any type other than array, we do * not do any conversion, and instead rely on the existing protobuf * type checking. If $value is an array, we process each element and * try to convert it to an instance of $class. * * @param mixed $value The array of values to normalize. * @param string $class The expected wrapper class name */ private static function normalizeArrayElementsToMessageType(&$value, $class) { if (!is_array($value)) { // In the case that $value is not an array, we do not want to // attempt any conversion. Note that this includes the cases // when $value is a RepeatedField of MapField. In those cases, // we do not need to convert the elements, as they should // already be the correct types. return; } else { // Normalize each element in the array. foreach ($value as $key => &$elementValue) { self::normalizeToMessageType($elementValue, $class); } } } /** * Tries to normalize $value into a provided protobuf wrapper type $class. * If $value is any type other than an object, we attempt to construct an * instance of $class and assign $value to it using the setValue method * shared by all wrapper types. * * This method will raise an error if it receives a type that cannot be * assigned to the wrapper type via setValue. * * @param mixed $value The value to normalize. * @param string $class The expected wrapper class name */ private static function normalizeToMessageType(&$value, $class) { if (is_null($value) || is_object($value)) { // This handles the case that $value is an instance of $class. We // choose not to do any more strict checking here, relying on the // existing type checking done by GPBUtil. return; } else { // Try to instantiate $class and set the value try { $msg = new $class; $msg->setValue($value); $value = $msg; return; } catch (\Exception $exception) { trigger_error( "Error normalizing value to type '$class': " . $exception->getMessage(), E_USER_ERROR ); } } } protected function mergeFromJsonArray($array, $ignore_unknown) { if (is_a($this, "Google\Protobuf\Any")) { $this->clear(); $this->setTypeUrl($array["@type"]); $msg = $this->unpack(); if (GPBUtil::hasSpecialJsonMapping($msg)) { $msg->mergeFromJsonArray($array["value"], $ignore_unknown); } else { unset($array["@type"]); $msg->mergeFromJsonArray($array, $ignore_unknown); } $this->setValue($msg->serializeToString()); return; } if (is_a($this, "Google\Protobuf\DoubleValue") || is_a($this, "Google\Protobuf\FloatValue") || is_a($this, "Google\Protobuf\Int64Value") || is_a($this, "Google\Protobuf\UInt64Value") || is_a($this, "Google\Protobuf\Int32Value") || is_a($this, "Google\Protobuf\UInt32Value") || is_a($this, "Google\Protobuf\BoolValue") || is_a($this, "Google\Protobuf\StringValue")) { $this->setValue($array); return; } if (is_a($this, "Google\Protobuf\BytesValue")) { $this->setValue(base64_decode($array)); return; } if (is_a($this, "Google\Protobuf\Duration")) { $this->mergeFrom(GPBUtil::parseDuration($array)); return; } if (is_a($this, "Google\Protobuf\FieldMask")) { $this->mergeFrom(GPBUtil::parseFieldMask($array)); return; } if (is_a($this, "Google\Protobuf\Timestamp")) { $this->mergeFrom(GPBUtil::parseTimestamp($array)); return; } if (is_a($this, "Google\Protobuf\Struct")) { $fields = $this->getFields(); foreach($array as $key => $value) { $v = new Value(); $v->mergeFromJsonArray($value, $ignore_unknown); $fields[$key] = $v; } return; } if (is_a($this, "Google\Protobuf\Value")) { if (is_bool($array)) { $this->setBoolValue($array); } elseif (is_string($array)) { $this->setStringValue($array); } elseif (is_null($array)) { $this->setNullValue(0); } elseif (is_double($array) || is_integer($array)) { $this->setNumberValue($array); } elseif (is_array($array)) { if (array_values($array) !== $array) { // Associative array $struct_value = $this->getStructValue(); if (is_null($struct_value)) { $struct_value = new Struct(); $this->setStructValue($struct_value); } foreach ($array as $key => $v) { $value = new Value(); $value->mergeFromJsonArray($v, $ignore_unknown); $values = $struct_value->getFields(); $values[$key]= $value; } } else { // Array $list_value = $this->getListValue(); if (is_null($list_value)) { $list_value = new ListValue(); $this->setListValue($list_value); } foreach ($array as $v) { $value = new Value(); $value->mergeFromJsonArray($v, $ignore_unknown); $values = $list_value->getValues(); $values[]= $value; } } } else { throw new GPBDecodeException("Invalid type for Value."); } return; } $this->mergeFromArrayJsonImpl($array, $ignore_unknown); } private function mergeFromArrayJsonImpl($array, $ignore_unknown) { foreach ($array as $key => $value) { $field = $this->desc->getFieldByJsonName($key); if (is_null($field)) { $field = $this->desc->getFieldByName($key); if (is_null($field)) { if ($ignore_unknown) { continue; } else { throw new GPBDecodeException( $key . ' is unknown.' ); } } } if ($field->isMap()) { if (is_null($value)) { continue; } $key_field = $field->getMessageType()->getFieldByNumber(1); $value_field = $field->getMessageType()->getFieldByNumber(2); foreach ($value as $tmp_key => $tmp_value) { if (is_null($tmp_value)) { throw new \Exception( "Map value field element cannot be null."); } $proto_key = $this->convertJsonValueToProtoValue( $tmp_key, $key_field, $ignore_unknown, true); $proto_value = $this->convertJsonValueToProtoValue( $tmp_value, $value_field, $ignore_unknown); self::kvUpdateHelper($field, $proto_key, $proto_value); } } else if ($field->isRepeated()) { if (is_null($value)) { continue; } foreach ($value as $tmp) { if (is_null($tmp)) { throw new \Exception( "Repeated field elements cannot be null."); } $proto_value = $this->convertJsonValueToProtoValue( $tmp, $field, $ignore_unknown); self::appendHelper($field, $proto_value); } } else { $setter = $field->getSetter(); $proto_value = $this->convertJsonValueToProtoValue( $value, $field, $ignore_unknown); if ($field->getType() === GPBType::MESSAGE) { if (is_null($proto_value)) { continue; } $getter = $field->getGetter(); $submsg = $this->$getter(); if (!is_null($submsg)) { $submsg->mergeFrom($proto_value); continue; } } $this->$setter($proto_value); } } } /** * @ignore */ public function parseFromJsonStream($input, $ignore_unknown) { $array = json_decode($input->getData(), true, 512, JSON_BIGINT_AS_STRING); if ($this instanceof \Google\Protobuf\ListValue) { $array = ["values"=>$array]; } if (is_null($array)) { if ($this instanceof \Google\Protobuf\Value) { $this->setNullValue(\Google\Protobuf\NullValue::NULL_VALUE); return; } else { throw new GPBDecodeException( "Cannot decode json string: " . $input->getData()); } } try { $this->mergeFromJsonArray($array, $ignore_unknown); } catch (\Exception $e) { throw new GPBDecodeException($e->getMessage(), $e->getCode(), $e); } } /** * @ignore */ private function serializeSingularFieldToStream($field, &$output) { if (!$this->existField($field)) { return true; } $getter = $field->getGetter(); $value = $this->$getter(); if (!GPBWire::serializeFieldToStream($value, $field, true, $output)) { return false; } return true; } /** * @ignore */ private function serializeRepeatedFieldToStream($field, &$output) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count === 0) { return true; } $packed = $field->getPacked(); if ($packed) { if (!GPBWire::writeTag( $output, GPBWire::makeTag($field->getNumber(), GPBType::STRING))) { return false; } $size = 0; foreach ($values as $value) { $size += $this->fieldDataOnlyByteSize($field, $value); } if (!$output->writeVarint32($size, true)) { return false; } } foreach ($values as $value) { if (!GPBWire::serializeFieldToStream( $value, $field, !$packed, $output)) { return false; } } return true; } /** * @ignore */ private function serializeMapFieldToStream($field, $output) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count === 0) { return true; } foreach ($values as $key => $value) { $map_entry = new MapEntry($field->getMessageType()); $map_entry->setKey($key); $map_entry->setValue($value); if (!GPBWire::serializeFieldToStream( $map_entry, $field, true, $output)) { return false; } } return true; } /** * @ignore */ private function serializeFieldToStream(&$output, $field) { if ($field->isMap()) { return $this->serializeMapFieldToStream($field, $output); } elseif ($field->isRepeated()) { return $this->serializeRepeatedFieldToStream($field, $output); } else { return $this->serializeSingularFieldToStream($field, $output); } } /** * @ignore */ private function serializeFieldToJsonStream(&$output, $field) { $getter = $field->getGetter(); $values = $this->$getter(); return GPBJsonWire::serializeFieldToStream( $values, $field, $output, !GPBUtil::hasSpecialJsonMapping($this)); } /** * @ignore */ public function serializeToStream(&$output) { $fields = $this->desc->getField(); foreach ($fields as $field) { if (!$this->serializeFieldToStream($output, $field)) { return false; } } $output->writeRaw($this->unknown, strlen($this->unknown)); return true; } /** * @ignore */ public function serializeToJsonStream(&$output) { if (is_a($this, 'Google\Protobuf\Any')) { $output->writeRaw("{", 1); $type_field = $this->desc->getFieldByNumber(1); $value_msg = $this->unpack(); // Serialize type url. $output->writeRaw("\"@type\":", 8); $output->writeRaw("\"", 1); $output->writeRaw($this->getTypeUrl(), strlen($this->getTypeUrl())); $output->writeRaw("\"", 1); // Serialize value if (GPBUtil::hasSpecialJsonMapping($value_msg)) { $output->writeRaw(",\"value\":", 9); $value_msg->serializeToJsonStream($output); } else { $value_fields = $value_msg->desc->getField(); foreach ($value_fields as $field) { if ($value_msg->existField($field)) { $output->writeRaw(",", 1); if (!$value_msg->serializeFieldToJsonStream($output, $field)) { return false; } } } } $output->writeRaw("}", 1); } elseif (is_a($this, 'Google\Protobuf\FieldMask')) { $field_mask = GPBUtil::formatFieldMask($this); $output->writeRaw("\"", 1); $output->writeRaw($field_mask, strlen($field_mask)); $output->writeRaw("\"", 1); } elseif (is_a($this, 'Google\Protobuf\Duration')) { $duration = GPBUtil::formatDuration($this) . "s"; $output->writeRaw("\"", 1); $output->writeRaw($duration, strlen($duration)); $output->writeRaw("\"", 1); } elseif (get_class($this) === 'Google\Protobuf\Timestamp') { $timestamp = GPBUtil::formatTimestamp($this); $timestamp = json_encode($timestamp); $output->writeRaw($timestamp, strlen($timestamp)); } elseif (get_class($this) === 'Google\Protobuf\ListValue') { $field = $this->desc->getField()[1]; if (!$this->existField($field)) { $output->writeRaw("[]", 2); } else { if (!$this->serializeFieldToJsonStream($output, $field)) { return false; } } } elseif (get_class($this) === 'Google\Protobuf\Struct') { $field = $this->desc->getField()[1]; if (!$this->existField($field)) { $output->writeRaw("{}", 2); } else { if (!$this->serializeFieldToJsonStream($output, $field)) { return false; } } } else { if (!GPBUtil::hasSpecialJsonMapping($this)) { $output->writeRaw("{", 1); } $fields = $this->desc->getField(); $first = true; foreach ($fields as $field) { if ($this->existField($field) || GPBUtil::hasJsonValue($this)) { if ($first) { $first = false; } else { $output->writeRaw(",", 1); } if (!$this->serializeFieldToJsonStream($output, $field)) { return false; } } } if (!GPBUtil::hasSpecialJsonMapping($this)) { $output->writeRaw("}", 1); } } return true; } /** * Serialize the message to string. * @return string Serialized binary protobuf data. */ public function serializeToString() { $output = new CodedOutputStream($this->byteSize()); $this->serializeToStream($output); return $output->getData(); } /** * Serialize the message to json string. * @return string Serialized json protobuf data. */ public function serializeToJsonString() { $output = new CodedOutputStream($this->jsonByteSize()); $this->serializeToJsonStream($output); return $output->getData(); } /** * @ignore */ private function existField($field) { $getter = $field->getGetter(); $hazzer = "has" . substr($getter, 3); if (method_exists($this, $hazzer)) { return $this->$hazzer(); } else if ($field->getOneofIndex() !== -1) { // For old generated code, which does not have hazzers for oneof // fields. $oneof = $this->desc->getOneofDecl()[$field->getOneofIndex()]; $oneof_name = $oneof->getName(); return $this->$oneof_name->getNumber() === $field->getNumber(); } $values = $this->$getter(); if ($field->isMap()) { return count($values) !== 0; } elseif ($field->isRepeated()) { return count($values) !== 0; } else { return $values !== $this->defaultValue($field); } } /** * @ignore */ private function repeatedFieldDataOnlyByteSize($field) { $size = 0; $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count !== 0) { $size += $count * GPBWire::tagSize($field); foreach ($values as $value) { $size += $this->singularFieldDataOnlyByteSize($field); } } } /** * @ignore */ private function fieldDataOnlyByteSize($field, $value) { $size = 0; switch ($field->getType()) { case GPBType::BOOL: $size += 1; break; case GPBType::FLOAT: case GPBType::FIXED32: case GPBType::SFIXED32: $size += 4; break; case GPBType::DOUBLE: case GPBType::FIXED64: case GPBType::SFIXED64: $size += 8; break; case GPBType::INT32: case GPBType::ENUM: $size += GPBWire::varint32Size($value, true); break; case GPBType::UINT32: $size += GPBWire::varint32Size($value); break; case GPBType::UINT64: case GPBType::INT64: $size += GPBWire::varint64Size($value); break; case GPBType::SINT32: $size += GPBWire::sint32Size($value); break; case GPBType::SINT64: $size += GPBWire::sint64Size($value); break; case GPBType::STRING: case GPBType::BYTES: $size += strlen($value); $size += GPBWire::varint32Size($size); break; case GPBType::MESSAGE: $size += $value->byteSize(); $size += GPBWire::varint32Size($size); break; case GPBType::GROUP: // TODO: Add support. user_error("Unsupported type."); break; default: user_error("Unsupported type."); return 0; } return $size; } /** * @ignore */ private function fieldDataOnlyJsonByteSize($field, $value) { $size = 0; switch ($field->getType()) { case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::INT32: $size += strlen(strval($value)); break; case GPBType::FIXED32: case GPBType::UINT32: if ($value < 0) { $value = bcadd($value, "4294967296"); } $size += strlen(strval($value)); break; case GPBType::FIXED64: case GPBType::UINT64: if ($value < 0) { $value = bcadd($value, "18446744073709551616"); } // Intentional fall through. case GPBType::SFIXED64: case GPBType::INT64: case GPBType::SINT64: $size += 2; // size for "" $size += strlen(strval($value)); break; case GPBType::FLOAT: if (is_nan($value)) { $size += strlen("NaN") + 2; } elseif ($value === INF) { $size += strlen("Infinity") + 2; } elseif ($value === -INF) { $size += strlen("-Infinity") + 2; } else { $size += strlen(sprintf("%.8g", $value)); } break; case GPBType::DOUBLE: if (is_nan($value)) { $size += strlen("NaN") + 2; } elseif ($value === INF) { $size += strlen("Infinity") + 2; } elseif ($value === -INF) { $size += strlen("-Infinity") + 2; } else { $size += strlen(sprintf("%.17g", $value)); } break; case GPBType::ENUM: $enum_desc = $field->getEnumType(); if ($enum_desc->getClass() === "Google\Protobuf\NullValue") { $size += 4; break; } $enum_value_desc = $enum_desc->getValueByNumber($value); if (!is_null($enum_value_desc)) { $size += 2; // size for "" $size += strlen($enum_value_desc->getName()); } else { $str_value = strval($value); $size += strlen($str_value); } break; case GPBType::BOOL: if ($value) { $size += 4; } else { $size += 5; } break; case GPBType::STRING: $value = json_encode($value, JSON_UNESCAPED_UNICODE); $size += strlen($value); break; case GPBType::BYTES: # if (is_a($this, "Google\Protobuf\BytesValue")) { # $size += strlen(json_encode($value)); # } else { # $size += strlen(base64_encode($value)); # $size += 2; // size for \"\" # } $size += strlen(base64_encode($value)); $size += 2; // size for \"\" break; case GPBType::MESSAGE: $size += $value->jsonByteSize(); break; # case GPBType::GROUP: # // TODO: Add support. # user_error("Unsupported type."); # break; default: user_error("Unsupported type " . $field->getType()); return 0; } return $size; } /** * @ignore */ private function fieldByteSize($field) { $size = 0; if ($field->isMap()) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count !== 0) { $size += $count * GPBWire::tagSize($field); $message_type = $field->getMessageType(); $key_field = $message_type->getFieldByNumber(1); $value_field = $message_type->getFieldByNumber(2); foreach ($values as $key => $value) { $data_size = 0; if ($key != $this->defaultValue($key_field)) { $data_size += $this->fieldDataOnlyByteSize( $key_field, $key); $data_size += GPBWire::tagSize($key_field); } if ($value != $this->defaultValue($value_field)) { $data_size += $this->fieldDataOnlyByteSize( $value_field, $value); $data_size += GPBWire::tagSize($value_field); } $size += GPBWire::varint32Size($data_size) + $data_size; } } } elseif ($field->isRepeated()) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count !== 0) { if ($field->getPacked()) { $data_size = 0; foreach ($values as $value) { $data_size += $this->fieldDataOnlyByteSize($field, $value); } $size += GPBWire::tagSize($field); $size += GPBWire::varint32Size($data_size); $size += $data_size; } else { $size += $count * GPBWire::tagSize($field); foreach ($values as $value) { $size += $this->fieldDataOnlyByteSize($field, $value); } } } } elseif ($this->existField($field)) { $size += GPBWire::tagSize($field); $getter = $field->getGetter(); $value = $this->$getter(); $size += $this->fieldDataOnlyByteSize($field, $value); } return $size; } /** * @ignore */ private function fieldJsonByteSize($field) { $size = 0; if ($field->isMap()) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count !== 0) { if (!GPBUtil::hasSpecialJsonMapping($this)) { $size += 3; // size for "\"\":". $size += strlen($field->getJsonName()); // size for field name } $size += 2; // size for "{}". $size += $count - 1; // size for commas $getter = $field->getGetter(); $map_entry = $field->getMessageType(); $key_field = $map_entry->getFieldByNumber(1); $value_field = $map_entry->getFieldByNumber(2); switch ($key_field->getType()) { case GPBType::STRING: case GPBType::SFIXED64: case GPBType::INT64: case GPBType::SINT64: case GPBType::FIXED64: case GPBType::UINT64: $additional_quote = false; break; default: $additional_quote = true; } foreach ($values as $key => $value) { if ($additional_quote) { $size += 2; // size for "" } $size += $this->fieldDataOnlyJsonByteSize($key_field, $key); $size += $this->fieldDataOnlyJsonByteSize($value_field, $value); $size += 1; // size for : } } } elseif ($field->isRepeated()) { $getter = $field->getGetter(); $values = $this->$getter(); $count = count($values); if ($count !== 0) { if (!GPBUtil::hasSpecialJsonMapping($this)) { $size += 3; // size for "\"\":". $size += strlen($field->getJsonName()); // size for field name } $size += 2; // size for "[]". $size += $count - 1; // size for commas $getter = $field->getGetter(); foreach ($values as $value) { $size += $this->fieldDataOnlyJsonByteSize($field, $value); } } } elseif ($this->existField($field) || GPBUtil::hasJsonValue($this)) { if (!GPBUtil::hasSpecialJsonMapping($this)) { $size += 3; // size for "\"\":". $size += strlen($field->getJsonName()); // size for field name } $getter = $field->getGetter(); $value = $this->$getter(); $size += $this->fieldDataOnlyJsonByteSize($field, $value); } return $size; } /** * @ignore */ public function byteSize() { $size = 0; $fields = $this->desc->getField(); foreach ($fields as $field) { $size += $this->fieldByteSize($field); } $size += strlen($this->unknown); return $size; } private function appendHelper($field, $append_value) { $getter = $field->getGetter(); $setter = $field->getSetter(); $field_arr_value = $this->$getter(); $field_arr_value[] = $append_value; if (!is_object($field_arr_value)) { $this->$setter($field_arr_value); } } private function kvUpdateHelper($field, $update_key, $update_value) { $getter = $field->getGetter(); $setter = $field->getSetter(); $field_arr_value = $this->$getter(); $field_arr_value[$update_key] = $update_value; if (!is_object($field_arr_value)) { $this->$setter($field_arr_value); } } /** * @ignore */ public function jsonByteSize() { $size = 0; if (is_a($this, 'Google\Protobuf\Any')) { // Size for "{}". $size += 2; // Size for "\"@type\":". $size += 8; // Size for url. +2 for "" /. $size += strlen($this->getTypeUrl()) + 2; $value_msg = $this->unpack(); if (GPBUtil::hasSpecialJsonMapping($value_msg)) { // Size for "\",value\":". $size += 9; $size += $value_msg->jsonByteSize(); } else { $value_size = $value_msg->jsonByteSize(); // size === 2 it's empty message {} which is not serialized inside any if ($value_size !== 2) { // Size for value. +1 for comma, -2 for "{}". $size += $value_size -1; } } } elseif (get_class($this) === 'Google\Protobuf\FieldMask') { $field_mask = GPBUtil::formatFieldMask($this); $size += strlen($field_mask) + 2; // 2 for "" } elseif (get_class($this) === 'Google\Protobuf\Duration') { $duration = GPBUtil::formatDuration($this) . "s"; $size += strlen($duration) + 2; // 2 for "" } elseif (get_class($this) === 'Google\Protobuf\Timestamp') { $timestamp = GPBUtil::formatTimestamp($this); $timestamp = json_encode($timestamp); $size += strlen($timestamp); } elseif (get_class($this) === 'Google\Protobuf\ListValue') { $field = $this->desc->getField()[1]; if ($this->existField($field)) { $field_size = $this->fieldJsonByteSize($field); $size += $field_size; } else { // Size for "[]". $size += 2; } } elseif (get_class($this) === 'Google\Protobuf\Struct') { $field = $this->desc->getField()[1]; if ($this->existField($field)) { $field_size = $this->fieldJsonByteSize($field); $size += $field_size; } else { // Size for "{}". $size += 2; } } else { if (!GPBUtil::hasSpecialJsonMapping($this)) { // Size for "{}". $size += 2; } $fields = $this->desc->getField(); $count = 0; foreach ($fields as $field) { $field_size = $this->fieldJsonByteSize($field); $size += $field_size; if ($field_size != 0) { $count++; } } // size for comma $size += $count > 0 ? ($count - 1) : 0; } return $size; } public function __debugInfo() { if (is_a($this, 'Google\Protobuf\FieldMask')) { return ['paths' => $this->getPaths()->__debugInfo()]; } if (is_a($this, 'Google\Protobuf\Value')) { switch ($this->getKind()) { case 'null_value': return ['nullValue' => $this->getNullValue()]; case 'number_value': return ['numberValue' => $this->getNumberValue()]; case 'string_value': return ['stringValue' => $this->getStringValue()]; case 'bool_value': return ['boolValue' => $this->getBoolValue()]; case 'struct_value': return ['structValue' => $this->getStructValue()->__debugInfo()]; case 'list_value': return ['listValue' => $this->getListValue()->__debugInfo()]; } return []; } if (is_a($this, 'Google\Protobuf\BoolValue') || is_a($this, 'Google\Protobuf\BytesValue') || is_a($this, 'Google\Protobuf\DoubleValue') || is_a($this, 'Google\Protobuf\FloatValue') || is_a($this, 'Google\Protobuf\StringValue') || is_a($this, 'Google\Protobuf\Int32Value') || is_a($this, 'Google\Protobuf\Int64Value') || is_a($this, 'Google\Protobuf\UInt32Value') || is_a($this, 'Google\Protobuf\UInt64Value') ) { return [ 'value' => json_decode($this->serializeToJsonString(), true), ]; } if ( is_a($this, 'Google\Protobuf\Duration') || is_a($this, 'Google\Protobuf\Timestamp') ) { return [ 'seconds' => $this->getSeconds(), 'nanos' => $this->getNanos(), ]; } return json_decode($this->serializeToJsonString(), true); } } src/Google/Protobuf/Internal/MessageBuilderContext.php000064400000005270147133775460017121 0ustar00descriptor = 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.php000064400000045664147133775460015634 0ustar00google.protobuf.MessageOptions */ class MessageOptions extends \Google\Protobuf\Internal\Message { /** * Set true to use the old proto1 MessageSet wire format for extensions. * This is provided for backwards-compatibility with the MessageSet wire * format. You should not use this for any other reason: It's less * efficient, has fewer features, and is more complicated. * The message must be defined exactly as follows: * message Foo { * option message_set_wire_format = true; * extensions 4 to max; * } * Note that the message cannot have any defined fields; MessageSets only * have extensions. * All extensions of your type must be singular messages; e.g. they cannot * be int32s, enums, or repeated messages. * Because this is an option, the above two restrictions are not enforced by * the protocol compiler. * * Generated from protobuf field optional bool message_set_wire_format = 1 [default = false]; */ protected $message_set_wire_format = null; /** * Disables the generation of the standard "descriptor()" accessor, which can * conflict with a field of the same name. This is meant to make migration * from proto1 easier; new code should avoid fields named "descriptor". * * Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false]; */ protected $no_standard_descriptor_accessor = null; /** * Is this message deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the message, or it will be completely ignored; in the very least, * this is a formalization for deprecating messages. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; */ protected $deprecated = null; /** * 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. * Whether the message is an automatically generated map entry type for the * maps field. * For maps fields: * map map_field = 1; * The parsed descriptor looks like: * message MapFieldEntry { * option map_entry = true; * optional KeyType key = 1; * optional ValueType value = 2; * } * repeated MapFieldEntry map_field = 1; * Implementations may choose not to generate the map_entry=true message, but * use a native map in the target language to hold the keys and values. * The reflection APIs in such implementations still need to work as * if the field is a repeated message field. * * Generated from protobuf field optional bool map_entry = 7; */ protected $map_entry = null; /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * This should only be used as a temporary measure against broken builds due * to the change in behavior for JSON field name conflicts. * TODO This is legacy behavior we plan to remove once downstream * teams have had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; * @deprecated */ protected $deprecated_legacy_json_field_conflicts = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $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. * @type bool $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". * @type bool $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. * @type bool $map_entry * 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. * Whether the message is an automatically generated map entry type for the * maps field. * For maps fields: * map map_field = 1; * The parsed descriptor looks like: * message MapFieldEntry { * option map_entry = true; * optional KeyType key = 1; * optional ValueType value = 2; * } * repeated MapFieldEntry map_field = 1; * Implementations may choose not to generate the map_entry=true message, but * use a native map in the target language to hold the keys and values. * The reflection APIs in such implementations still need to work as * if the field is a repeated message field. * @type bool $deprecated_legacy_json_field_conflicts * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * This should only be used as a temporary measure against broken builds due * to the change in behavior for JSON field name conflicts. * TODO This is legacy behavior we plan to remove once downstream * teams have had time to migrate. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Set true to use the old proto1 MessageSet wire format for extensions. * This is provided for backwards-compatibility with the MessageSet wire * format. You should not use this for any other reason: It's less * efficient, has fewer features, and is more complicated. * The message must be defined exactly as follows: * message Foo { * option message_set_wire_format = true; * extensions 4 to max; * } * Note that the message cannot have any defined fields; MessageSets only * have extensions. * All extensions of your type must be singular messages; e.g. they cannot * be int32s, enums, or repeated messages. * Because this is an option, the above two restrictions are not enforced by * the protocol compiler. * * Generated from protobuf field optional bool message_set_wire_format = 1 [default = false]; * @return bool */ public function getMessageSetWireFormat() { return isset($this->message_set_wire_format) ? $this->message_set_wire_format : false; } public function hasMessageSetWireFormat() { return isset($this->message_set_wire_format); } public function clearMessageSetWireFormat() { unset($this->message_set_wire_format); } /** * Set true to use the old proto1 MessageSet wire format for extensions. * This is provided for backwards-compatibility with the MessageSet wire * format. You should not use this for any other reason: It's less * efficient, has fewer features, and is more complicated. * The message must be defined exactly as follows: * message Foo { * option message_set_wire_format = true; * extensions 4 to max; * } * Note that the message cannot have any defined fields; MessageSets only * have extensions. * All extensions of your type must be singular messages; e.g. they cannot * be int32s, enums, or repeated messages. * Because this is an option, the above two restrictions are not enforced by * the protocol compiler. * * Generated from protobuf field optional bool message_set_wire_format = 1 [default = false]; * @param bool $var * @return $this */ public function setMessageSetWireFormat($var) { GPBUtil::checkBool($var); $this->message_set_wire_format = $var; return $this; } /** * Disables the generation of the standard "descriptor()" accessor, which can * conflict with a field of the same name. This is meant to make migration * from proto1 easier; new code should avoid fields named "descriptor". * * Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false]; * @return bool */ public function getNoStandardDescriptorAccessor() { return isset($this->no_standard_descriptor_accessor) ? $this->no_standard_descriptor_accessor : false; } public function hasNoStandardDescriptorAccessor() { return isset($this->no_standard_descriptor_accessor); } public function clearNoStandardDescriptorAccessor() { unset($this->no_standard_descriptor_accessor); } /** * Disables the generation of the standard "descriptor()" accessor, which can * conflict with a field of the same name. This is meant to make migration * from proto1 easier; new code should avoid fields named "descriptor". * * Generated from protobuf field optional bool no_standard_descriptor_accessor = 2 [default = false]; * @param bool $var * @return $this */ public function setNoStandardDescriptorAccessor($var) { GPBUtil::checkBool($var); $this->no_standard_descriptor_accessor = $var; return $this; } /** * Is this message deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the message, or it will be completely ignored; in the very least, * this is a formalization for deprecating messages. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this message deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the message, or it will be completely ignored; in the very least, * this is a formalization for deprecating messages. * * Generated from protobuf field optional bool deprecated = 3 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * 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. * Whether the message is an automatically generated map entry type for the * maps field. * For maps fields: * map map_field = 1; * The parsed descriptor looks like: * message MapFieldEntry { * option map_entry = true; * optional KeyType key = 1; * optional ValueType value = 2; * } * repeated MapFieldEntry map_field = 1; * Implementations may choose not to generate the map_entry=true message, but * use a native map in the target language to hold the keys and values. * The reflection APIs in such implementations still need to work as * if the field is a repeated message field. * * Generated from protobuf field optional bool map_entry = 7; * @return bool */ public function getMapEntry() { return isset($this->map_entry) ? $this->map_entry : false; } public function hasMapEntry() { return isset($this->map_entry); } public function clearMapEntry() { unset($this->map_entry); } /** * 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. * Whether the message is an automatically generated map entry type for the * maps field. * For maps fields: * map map_field = 1; * The parsed descriptor looks like: * message MapFieldEntry { * option map_entry = true; * optional KeyType key = 1; * optional ValueType value = 2; * } * repeated MapFieldEntry map_field = 1; * Implementations may choose not to generate the map_entry=true message, but * use a native map in the target language to hold the keys and values. * The reflection APIs in such implementations still need to work as * if the field is a repeated message field. * * Generated from protobuf field optional bool map_entry = 7; * @param bool $var * @return $this */ public function setMapEntry($var) { GPBUtil::checkBool($var); $this->map_entry = $var; return $this; } /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * This should only be used as a temporary measure against broken builds due * to the change in behavior for JSON field name conflicts. * TODO This is legacy behavior we plan to remove once downstream * teams have had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; * @return bool * @deprecated */ public function getDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); return isset($this->deprecated_legacy_json_field_conflicts) ? $this->deprecated_legacy_json_field_conflicts : false; } public function hasDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); return isset($this->deprecated_legacy_json_field_conflicts); } public function clearDeprecatedLegacyJsonFieldConflicts() { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); unset($this->deprecated_legacy_json_field_conflicts); } /** * Enable the legacy handling of JSON field name conflicts. This lowercases * and strips underscored from the fields before comparison in proto3 only. * The new behavior takes `json_name` into account and applies to proto2 as * well. * This should only be used as a temporary measure against broken builds due * to the change in behavior for JSON field name conflicts. * TODO This is legacy behavior we plan to remove once downstream * teams have had time to migrate. * * Generated from protobuf field optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; * @param bool $var * @return $this * @deprecated */ public function setDeprecatedLegacyJsonFieldConflicts($var) { @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED); GPBUtil::checkBool($var); $this->deprecated_legacy_json_field_conflicts = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/MethodDescriptorProto.php000064400000016662147133775460017173 0ustar00google.protobuf.MethodDescriptorProto */ class MethodDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Input and output type names. These are resolved in the same way as * FieldDescriptorProto.type_name, but must refer to a message type. * * Generated from protobuf field optional string input_type = 2; */ protected $input_type = null; /** * Generated from protobuf field optional string output_type = 3; */ protected $output_type = null; /** * Generated from protobuf field optional .google.protobuf.MethodOptions options = 4; */ protected $options = null; /** * Identifies if client streams multiple client messages * * Generated from protobuf field optional bool client_streaming = 5 [default = false]; */ protected $client_streaming = null; /** * Identifies if server streams multiple server messages * * Generated from protobuf field optional bool server_streaming = 6 [default = false]; */ protected $server_streaming = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type string $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. * @type string $output_type * @type \Google\Protobuf\Internal\MethodOptions $options * @type bool $client_streaming * Identifies if client streams multiple client messages * @type bool $server_streaming * Identifies if server streams multiple server messages * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Input and output type names. These are resolved in the same way as * FieldDescriptorProto.type_name, but must refer to a message type. * * Generated from protobuf field optional string input_type = 2; * @return string */ public function getInputType() { return isset($this->input_type) ? $this->input_type : ''; } public function hasInputType() { return isset($this->input_type); } public function clearInputType() { unset($this->input_type); } /** * Input and output type names. These are resolved in the same way as * FieldDescriptorProto.type_name, but must refer to a message type. * * Generated from protobuf field optional string input_type = 2; * @param string $var * @return $this */ public function setInputType($var) { GPBUtil::checkString($var, True); $this->input_type = $var; return $this; } /** * Generated from protobuf field optional string output_type = 3; * @return string */ public function getOutputType() { return isset($this->output_type) ? $this->output_type : ''; } public function hasOutputType() { return isset($this->output_type); } public function clearOutputType() { unset($this->output_type); } /** * Generated from protobuf field optional string output_type = 3; * @param string $var * @return $this */ public function setOutputType($var) { GPBUtil::checkString($var, True); $this->output_type = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.MethodOptions options = 4; * @return \Google\Protobuf\Internal\MethodOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.MethodOptions options = 4; * @param \Google\Protobuf\Internal\MethodOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\MethodOptions::class); $this->options = $var; return $this; } /** * Identifies if client streams multiple client messages * * Generated from protobuf field optional bool client_streaming = 5 [default = false]; * @return bool */ public function getClientStreaming() { return isset($this->client_streaming) ? $this->client_streaming : false; } public function hasClientStreaming() { return isset($this->client_streaming); } public function clearClientStreaming() { unset($this->client_streaming); } /** * Identifies if client streams multiple client messages * * Generated from protobuf field optional bool client_streaming = 5 [default = false]; * @param bool $var * @return $this */ public function setClientStreaming($var) { GPBUtil::checkBool($var); $this->client_streaming = $var; return $this; } /** * Identifies if server streams multiple server messages * * Generated from protobuf field optional bool server_streaming = 6 [default = false]; * @return bool */ public function getServerStreaming() { return isset($this->server_streaming) ? $this->server_streaming : false; } public function hasServerStreaming() { return isset($this->server_streaming); } public function clearServerStreaming() { unset($this->server_streaming); } /** * Identifies if server streams multiple server messages * * Generated from protobuf field optional bool server_streaming = 6 [default = false]; * @param bool $var * @return $this */ public function setServerStreaming($var) { GPBUtil::checkBool($var); $this->server_streaming = $var; return $this; } } src/Google/Protobuf/Internal/MethodOptions.php000064400000012535147133775460015457 0ustar00google.protobuf.MethodOptions */ class MethodOptions extends \Google\Protobuf\Internal\Message { /** * Is this method deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the method, or it will be completely ignored; in the very least, * this is a formalization for deprecating methods. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; */ protected $deprecated = null; /** * Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN]; */ protected $idempotency_level = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $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. * @type int $idempotency_level * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Is this method deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the method, or it will be completely ignored; in the very least, * this is a formalization for deprecating methods. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this method deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the method, or it will be completely ignored; in the very least, * this is a formalization for deprecating methods. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN]; * @return int */ public function getIdempotencyLevel() { return isset($this->idempotency_level) ? $this->idempotency_level : 0; } public function hasIdempotencyLevel() { return isset($this->idempotency_level); } public function clearIdempotencyLevel() { unset($this->idempotency_level); } /** * Generated from protobuf field optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN]; * @param int $var * @return $this */ public function setIdempotencyLevel($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Internal\MethodOptions\IdempotencyLevel::class); $this->idempotency_level = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php000064400000003667147133775460020735 0ustar00google.protobuf.MethodOptions.IdempotencyLevel */ class IdempotencyLevel { /** * Generated from protobuf enum IDEMPOTENCY_UNKNOWN = 0; */ const IDEMPOTENCY_UNKNOWN = 0; /** * implies idempotent * * Generated from protobuf enum NO_SIDE_EFFECTS = 1; */ const NO_SIDE_EFFECTS = 1; /** * idempotent, but may have side effects * * Generated from protobuf enum IDEMPOTENT = 2; */ const IDEMPOTENT = 2; private static $valueToName = [ self::IDEMPOTENCY_UNKNOWN => 'IDEMPOTENCY_UNKNOWN', self::NO_SIDE_EFFECTS => 'NO_SIDE_EFFECTS', self::IDEMPOTENT => 'IDEMPOTENT', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(IdempotencyLevel::class, \Google\Protobuf\Internal\MethodOptions_IdempotencyLevel::class); src/Google/Protobuf/Internal/MethodOptions_IdempotencyLevel.php000064400000001153147133775460021001 0ustar00public_desc = new \Google\Protobuf\OneofDescriptor($this); } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } public function addField(FieldDescriptor $field) { $this->fields[] = $field; } public function getFields() { return $this->fields; } public function isSynthetic() { return !is_null($this->fields) && count($this->fields) === 1 && $this->fields[0]->getProto3Optional(); } public static function buildFromProto($oneof_proto, $desc, $index) { $oneof = new OneofDescriptor(); $oneof->setName($oneof_proto->getName()); foreach ($desc->getField() as $field) { /** @var FieldDescriptor $field */ if ($field->getOneofIndex() == $index) { $oneof->addField($field); $field->setContainingOneof($oneof); } } return $oneof; } } src/Google/Protobuf/Internal/OneofDescriptorProto.php000064400000005140147133775460017006 0ustar00google.protobuf.OneofDescriptorProto */ class OneofDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field optional .google.protobuf.OneofOptions options = 2; */ protected $options = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type \Google\Protobuf\Internal\OneofOptions $options * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field optional .google.protobuf.OneofOptions options = 2; * @return \Google\Protobuf\Internal\OneofOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.OneofOptions options = 2; * @param \Google\Protobuf\Internal\OneofOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\OneofOptions::class); $this->options = $var; return $this; } } src/Google/Protobuf/Internal/OneofField.php000064400000001762147133775460014675 0ustar00desc = $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.php000064400000004345147133775460015305 0ustar00google.protobuf.OneofOptions */ class OneofOptions extends \Google\Protobuf\Internal\Message { /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/RawInputStream.php000064400000001022147133775460015575 0ustar00buffer = $buffer; } public function getData() { return $this->buffer; } } src/Google/Protobuf/Internal/RepeatedField.php000064400000016245147133775460015362 0ustar00container = []; $this->type = $type; if ($this->type == GPBType::MESSAGE) { $pool = DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName($klass); if ($desc == NULL) { new $klass; // No msg class instance has been created before. $desc = $pool->getDescriptorByClassName($klass); } $this->klass = $desc->getClass(); $this->legacy_klass = $desc->getLegacyClass(); } } /** * @ignore */ public function getType() { return $this->type; } /** * @ignore */ public function getClass() { return $this->klass; } /** * @ignore */ public function getLegacyClass() { return $this->legacy_klass; } /** * Return the element at the given index. * * This will also be called for: $ele = $arr[0] * * @param integer $offset The index of the element to be fetched. * @return mixed The stored element at given index. * @throws \ErrorException Invalid type for index. * @throws \ErrorException Non-existing index. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] 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 int|null $offset The index of the element to be assigned. * @param mixed $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. * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function offsetSet($offset, $value) { switch ($this->type) { case GPBType::SFIXED32: case GPBType::SINT32: case GPBType::INT32: case GPBType::ENUM: GPBUtil::checkInt32($value); break; case GPBType::FIXED32: case GPBType::UINT32: GPBUtil::checkUint32($value); break; case GPBType::SFIXED64: case GPBType::SINT64: case GPBType::INT64: GPBUtil::checkInt64($value); break; case GPBType::FIXED64: 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::BYTES: GPBUtil::checkString($value, false); break; case GPBType::STRING: GPBUtil::checkString($value, true); break; case GPBType::MESSAGE: if (is_null($value)) { throw new \TypeError("RepeatedField element cannot be null."); } 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 integer $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. * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function offsetUnset($offset) { $count = count($this->container); if (!is_numeric($offset) || $count === 0 || $offset < 0 || $offset >= $count) { trigger_error( "Cannot remove element at the given index", E_USER_ERROR); return; } array_splice($this->container, $offset, 1); } /** * Check the existence of the element at the given index. * * This will also be called for: isset($arr) * * @param integer $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): bool { return isset($this->container[$offset]); } /** * @ignore */ public function getIterator(): Traversable { 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(): int { return count($this->container); } public function __debugInfo() { return array_map( function ($item) { if ($item instanceof Message || $item instanceof RepeatedField) { return $item->__debugInfo(); } return $item; }, iterator_to_array($this) ); } } src/Google/Protobuf/Internal/RepeatedFieldIter.php000064400000004442147133775460016202 0ustar00position = 0; $this->container = $container; } /** * Reset the status of the iterator * * @return void * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] public function rewind() { $this->position = 0; } /** * Return the element at the current position. * * @return object The element at the current position. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] public function current() { return $this->container[$this->position]; } /** * Return the current position. * * @return integer The current position. * @todo need to add return type mixed (require update php version to 8.0) */ #[\ReturnTypeWillChange] public function key() { return $this->position; } /** * Move to the next position. * * @return void * @todo need to add return type void (require update php version to 7.1) */ #[\ReturnTypeWillChange] 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(): bool { return isset($this->container[$this->position]); } } src/Google/Protobuf/Internal/ServiceDescriptorProto.php000064400000007200147133775460017337 0ustar00google.protobuf.ServiceDescriptorProto */ class ServiceDescriptorProto extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field optional string name = 1; */ protected $name = null; /** * Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2; */ private $method; /** * Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3; */ protected $options = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * @type array<\Google\Protobuf\Internal\MethodDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $method * @type \Google\Protobuf\Internal\ServiceOptions $options * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field optional string name = 1; * @return string */ public function getName() { return isset($this->name) ? $this->name : ''; } public function hasName() { return isset($this->name); } public function clearName() { unset($this->name); } /** * Generated from protobuf field optional string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getMethod() { return $this->method; } /** * Generated from protobuf field repeated .google.protobuf.MethodDescriptorProto method = 2; * @param array<\Google\Protobuf\Internal\MethodDescriptorProto>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setMethod($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\MethodDescriptorProto::class); $this->method = $arr; return $this; } /** * Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3; * @return \Google\Protobuf\Internal\ServiceOptions|null */ public function getOptions() { return $this->options; } public function hasOptions() { return isset($this->options); } public function clearOptions() { unset($this->options); } /** * Generated from protobuf field optional .google.protobuf.ServiceOptions options = 3; * @param \Google\Protobuf\Internal\ServiceOptions $var * @return $this */ public function setOptions($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Internal\ServiceOptions::class); $this->options = $var; return $this; } } src/Google/Protobuf/Internal/ServiceOptions.php000064400000010225147133775460015631 0ustar00google.protobuf.ServiceOptions */ class ServiceOptions extends \Google\Protobuf\Internal\Message { /** * Is this service deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the service, or it will be completely ignored; in the very least, * this is a formalization for deprecating services. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; */ protected $deprecated = null; /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; */ private $uninterpreted_option; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type bool $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. * @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option * The parser stores options it doesn't recognize here. See above. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Is this service deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the service, or it will be completely ignored; in the very least, * this is a formalization for deprecating services. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; * @return bool */ public function getDeprecated() { return isset($this->deprecated) ? $this->deprecated : false; } public function hasDeprecated() { return isset($this->deprecated); } public function clearDeprecated() { unset($this->deprecated); } /** * Is this service deprecated? * Depending on the target platform, this can emit Deprecated annotations * for the service, or it will be completely ignored; in the very least, * this is a formalization for deprecating services. * * Generated from protobuf field optional bool deprecated = 33 [default = false]; * @param bool $var * @return $this */ public function setDeprecated($var) { GPBUtil::checkBool($var); $this->deprecated = $var; return $this; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @return \Google\Protobuf\Internal\RepeatedField */ public function getUninterpretedOption() { return $this->uninterpreted_option; } /** * The parser stores options it doesn't recognize here. See above. * * Generated from protobuf field repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; * @param array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setUninterpretedOption($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class); $this->uninterpreted_option = $arr; return $this; } } src/Google/Protobuf/Internal/SourceCodeInfo.php000064400000027422147133775460015533 0ustar00google.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 descendant. For example, a "group" defines * both a type and a field in a single declaration. Thus, the locations * corresponding to the type and field and their components will overlap. * - Code which tries to interpret locations should probably be designed to * ignore those that it doesn't understand, as more types of locations could * be recorded in the future. * * Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1; */ private $location; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\SourceCodeInfo\Location>|\Google\Protobuf\Internal\RepeatedField $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 descendant. 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. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * 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 descendant. For example, a "group" defines * both a type and a field in a single declaration. Thus, the locations * corresponding to the type and field and their components will overlap. * - Code which tries to interpret locations should probably be designed to * ignore those that it doesn't understand, as more types of locations could * be recorded in the future. * * Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1; * @return \Google\Protobuf\Internal\RepeatedField */ public function getLocation() { return $this->location; } /** * A Location identifies a piece of source code in a .proto file which * corresponds to a particular definition. This information is intended * to be useful to IDEs, code indexers, documentation generators, and similar * tools. * For example, say we have a file like: * message Foo { * optional string foo = 1; * } * Let's look at just the field definition: * optional string foo = 1; * ^ ^^ ^^ ^ ^^^ * a bc de f ghi * We have the following locations: * span path represents * [a,i) [ 4, 0, 2, 0 ] The whole field definition. * [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). * [c,d) [ 4, 0, 2, 0, 5 ] The type (string). * [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). * [g,h) [ 4, 0, 2, 0, 3 ] The number (1). * Notes: * - A location may refer to a repeated field itself (i.e. not to any * particular index within it). This is used whenever a set of elements are * logically enclosed in a single code segment. For example, an entire * extend block (possibly containing multiple extension definitions) will * have an outer location whose path refers to the "extensions" repeated * field without an index. * - Multiple locations may have the same path. This happens when a single * logical declaration is spread out across multiple places. The most * obvious example is the "extend" block again -- there may be multiple * extend blocks in the same scope, each of which will have the same path. * - A location's span is not always a subset of its parent's span. For * example, the "extendee" of an extension declaration appears at the * beginning of the "extend" block and is shared by all extensions within * the block. * - Just because a location's span is a subset of some other location's span * does not mean that it is a descendant. For example, a "group" defines * both a type and a field in a single declaration. Thus, the locations * corresponding to the type and field and their components will overlap. * - Code which tries to interpret locations should probably be designed to * ignore those that it doesn't understand, as more types of locations could * be recorded in the future. * * Generated from protobuf field repeated .google.protobuf.SourceCodeInfo.Location location = 1; * @param array<\Google\Protobuf\Internal\SourceCodeInfo\Location>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setLocation($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\SourceCodeInfo\Location::class); $this->location = $arr; return $this; } } src/Google/Protobuf/Internal/SourceCodeInfo/Location.php000064400000044532147133775460017304 0ustar00google.protobuf.SourceCodeInfo.Location */ class 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 occurs. * For example, this path: * [ 4, 3, 2, 7, 1 ] * refers to: * file.message_type(3) // 4, 3 * .field(7) // 2, 7 * .name() // 1 * This is because FileDescriptorProto.message_type has field number 4: * repeated DescriptorProto message_type = 4; * and DescriptorProto.field has field number 2: * repeated FieldDescriptorProto field = 2; * and FieldDescriptorProto.name has field number 1: * optional string name = 1; * Thus, the above path gives the location of a field name. If we removed * the last element: * [ 4, 3, 2, 7 ] * this path refers to the whole field declaration (from the beginning * of the label to the terminating semicolon). * * Generated from protobuf field repeated int32 path = 1 [packed = true]; */ private $path; /** * Always has exactly three or four elements: start line, start column, * end line (optional, otherwise assumed same as start line), end column. * These are packed into a single field for efficiency. Note that line * and column numbers are zero-based -- typically you will want to add * 1 to each before displaying to a user. * * Generated from protobuf field repeated int32 span = 2 [packed = true]; */ private $span; /** * 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 moo. * // * // Another line attached to moo. * optional double moo = 4; * // Detached comment for corge. This is not leading or trailing comments * // to moo or corge because there are blank lines separating it from * // both. * // Detached comment for corge paragraph 2. * optional string corge = 5; * /* Block comment attached * * to corge. Leading asterisks * * will be removed. */ * /* Block comment attached to * * grault. */ * optional int32 grault = 6; * // ignored detached comments. * * Generated from protobuf field optional string leading_comments = 3; */ protected $leading_comments = null; /** * Generated from protobuf field optional string trailing_comments = 4; */ protected $trailing_comments = null; /** * Generated from protobuf field repeated string leading_detached_comments = 6; */ private $leading_detached_comments; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array|\Google\Protobuf\Internal\RepeatedField $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 occurs. * 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). * @type array|\Google\Protobuf\Internal\RepeatedField $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. * @type string $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 moo. * // * // Another line attached to moo. * optional double moo = 4; * // Detached comment for corge. This is not leading or trailing comments * // to moo 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. * @type string $trailing_comments * @type array|\Google\Protobuf\Internal\RepeatedField $leading_detached_comments * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * 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 occurs. * For example, this path: * [ 4, 3, 2, 7, 1 ] * refers to: * file.message_type(3) // 4, 3 * .field(7) // 2, 7 * .name() // 1 * This is because FileDescriptorProto.message_type has field number 4: * repeated DescriptorProto message_type = 4; * and DescriptorProto.field has field number 2: * repeated FieldDescriptorProto field = 2; * and FieldDescriptorProto.name has field number 1: * optional string name = 1; * Thus, the above path gives the location of a field name. If we removed * the last element: * [ 4, 3, 2, 7 ] * this path refers to the whole field declaration (from the beginning * of the label to the terminating semicolon). * * Generated from protobuf field repeated int32 path = 1 [packed = true]; * @return \Google\Protobuf\Internal\RepeatedField */ public function getPath() { return $this->path; } /** * Identifies which part of the FileDescriptorProto was defined at this * location. * Each element is a field number or an index. They form a path from * the root FileDescriptorProto to the place where the definition occurs. * For example, this path: * [ 4, 3, 2, 7, 1 ] * refers to: * file.message_type(3) // 4, 3 * .field(7) // 2, 7 * .name() // 1 * This is because FileDescriptorProto.message_type has field number 4: * repeated DescriptorProto message_type = 4; * and DescriptorProto.field has field number 2: * repeated FieldDescriptorProto field = 2; * and FieldDescriptorProto.name has field number 1: * optional string name = 1; * Thus, the above path gives the location of a field name. If we removed * the last element: * [ 4, 3, 2, 7 ] * this path refers to the whole field declaration (from the beginning * of the label to the terminating semicolon). * * Generated from protobuf field repeated int32 path = 1 [packed = true]; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setPath($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32); $this->path = $arr; return $this; } /** * Always has exactly three or four elements: start line, start column, * end line (optional, otherwise assumed same as start line), end column. * These are packed into a single field for efficiency. Note that line * and column numbers are zero-based -- typically you will want to add * 1 to each before displaying to a user. * * Generated from protobuf field repeated int32 span = 2 [packed = true]; * @return \Google\Protobuf\Internal\RepeatedField */ public function getSpan() { return $this->span; } /** * Always has exactly three or four elements: start line, start column, * end line (optional, otherwise assumed same as start line), end column. * These are packed into a single field for efficiency. Note that line * and column numbers are zero-based -- typically you will want to add * 1 to each before displaying to a user. * * Generated from protobuf field repeated int32 span = 2 [packed = true]; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setSpan($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32); $this->span = $arr; return $this; } /** * 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 moo. * // * // Another line attached to moo. * optional double moo = 4; * // Detached comment for corge. This is not leading or trailing comments * // to moo or corge because there are blank lines separating it from * // both. * // Detached comment for corge paragraph 2. * optional string corge = 5; * /* Block comment attached * * to corge. Leading asterisks * * will be removed. */ * /* Block comment attached to * * grault. */ * optional int32 grault = 6; * // ignored detached comments. * * Generated from protobuf field optional string leading_comments = 3; * @return string */ public function getLeadingComments() { return isset($this->leading_comments) ? $this->leading_comments : ''; } public function hasLeadingComments() { return isset($this->leading_comments); } public function clearLeadingComments() { unset($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 moo. * // * // Another line attached to moo. * optional double moo = 4; * // Detached comment for corge. This is not leading or trailing comments * // to moo or corge because there are blank lines separating it from * // both. * // Detached comment for corge paragraph 2. * optional string corge = 5; * /* Block comment attached * * to corge. Leading asterisks * * will be removed. */ * /* Block comment attached to * * grault. */ * optional int32 grault = 6; * // ignored detached comments. * * Generated from protobuf field optional string leading_comments = 3; * @param string $var * @return $this */ public function setLeadingComments($var) { GPBUtil::checkString($var, True); $this->leading_comments = $var; return $this; } /** * Generated from protobuf field optional string trailing_comments = 4; * @return string */ public function getTrailingComments() { return isset($this->trailing_comments) ? $this->trailing_comments : ''; } public function hasTrailingComments() { return isset($this->trailing_comments); } public function clearTrailingComments() { unset($this->trailing_comments); } /** * Generated from protobuf field optional string trailing_comments = 4; * @param string $var * @return $this */ public function setTrailingComments($var) { GPBUtil::checkString($var, True); $this->trailing_comments = $var; return $this; } /** * Generated from protobuf field repeated string leading_detached_comments = 6; * @return \Google\Protobuf\Internal\RepeatedField */ public function getLeadingDetachedComments() { return $this->leading_detached_comments; } /** * Generated from protobuf field repeated string leading_detached_comments = 6; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setLeadingDetachedComments($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->leading_detached_comments = $arr; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Location::class, \Google\Protobuf\Internal\SourceCodeInfo_Location::class); src/Google/Protobuf/Internal/SourceCodeInfo_Location.php000064400000001110147133775460017345 0ustar00seconds = $datetime->getTimestamp(); $this->nanos = 1000 * $datetime->format('u'); } /** * Converts Timestamp to PHP DateTime. * * @return \DateTime $datetime */ public function toDateTime() { $time = sprintf('%s.%06d', $this->seconds, $this->nanos / 1000); return \DateTime::createFromFormat('U.u', $time); } } src/Google/Protobuf/Internal/UninterpretedOption.php000064400000020602147133775460016676 0ustar00google.protobuf.UninterpretedOption */ class UninterpretedOption extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2; */ private $name; /** * The value of the uninterpreted option, in whatever type the tokenizer * identified it as during parsing. Exactly one of these should be set. * * Generated from protobuf field optional string identifier_value = 3; */ protected $identifier_value = null; /** * Generated from protobuf field optional uint64 positive_int_value = 4; */ protected $positive_int_value = null; /** * Generated from protobuf field optional int64 negative_int_value = 5; */ protected $negative_int_value = null; /** * Generated from protobuf field optional double double_value = 6; */ protected $double_value = null; /** * Generated from protobuf field optional bytes string_value = 7; */ protected $string_value = null; /** * Generated from protobuf field optional string aggregate_value = 8; */ protected $aggregate_value = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Internal\UninterpretedOption\NamePart>|\Google\Protobuf\Internal\RepeatedField $name * @type string $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. * @type int|string $positive_int_value * @type int|string $negative_int_value * @type float $double_value * @type string $string_value * @type string $aggregate_value * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getName() { return $this->name; } /** * Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2; * @param array<\Google\Protobuf\Internal\UninterpretedOption\NamePart>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setName($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption\NamePart::class); $this->name = $arr; return $this; } /** * The value of the uninterpreted option, in whatever type the tokenizer * identified it as during parsing. Exactly one of these should be set. * * Generated from protobuf field optional string identifier_value = 3; * @return string */ public function getIdentifierValue() { return isset($this->identifier_value) ? $this->identifier_value : ''; } public function hasIdentifierValue() { return isset($this->identifier_value); } public function clearIdentifierValue() { unset($this->identifier_value); } /** * The value of the uninterpreted option, in whatever type the tokenizer * identified it as during parsing. Exactly one of these should be set. * * Generated from protobuf field optional string identifier_value = 3; * @param string $var * @return $this */ public function setIdentifierValue($var) { GPBUtil::checkString($var, True); $this->identifier_value = $var; return $this; } /** * Generated from protobuf field optional uint64 positive_int_value = 4; * @return int|string */ public function getPositiveIntValue() { return isset($this->positive_int_value) ? $this->positive_int_value : 0; } public function hasPositiveIntValue() { return isset($this->positive_int_value); } public function clearPositiveIntValue() { unset($this->positive_int_value); } /** * Generated from protobuf field optional uint64 positive_int_value = 4; * @param int|string $var * @return $this */ public function setPositiveIntValue($var) { GPBUtil::checkUint64($var); $this->positive_int_value = $var; return $this; } /** * Generated from protobuf field optional int64 negative_int_value = 5; * @return int|string */ public function getNegativeIntValue() { return isset($this->negative_int_value) ? $this->negative_int_value : 0; } public function hasNegativeIntValue() { return isset($this->negative_int_value); } public function clearNegativeIntValue() { unset($this->negative_int_value); } /** * Generated from protobuf field optional int64 negative_int_value = 5; * @param int|string $var * @return $this */ public function setNegativeIntValue($var) { GPBUtil::checkInt64($var); $this->negative_int_value = $var; return $this; } /** * Generated from protobuf field optional double double_value = 6; * @return float */ public function getDoubleValue() { return isset($this->double_value) ? $this->double_value : 0.0; } public function hasDoubleValue() { return isset($this->double_value); } public function clearDoubleValue() { unset($this->double_value); } /** * Generated from protobuf field optional double double_value = 6; * @param float $var * @return $this */ public function setDoubleValue($var) { GPBUtil::checkDouble($var); $this->double_value = $var; return $this; } /** * Generated from protobuf field optional bytes string_value = 7; * @return string */ public function getStringValue() { return isset($this->string_value) ? $this->string_value : ''; } public function hasStringValue() { return isset($this->string_value); } public function clearStringValue() { unset($this->string_value); } /** * Generated from protobuf field optional bytes string_value = 7; * @param string $var * @return $this */ public function setStringValue($var) { GPBUtil::checkString($var, False); $this->string_value = $var; return $this; } /** * Generated from protobuf field optional string aggregate_value = 8; * @return string */ public function getAggregateValue() { return isset($this->aggregate_value) ? $this->aggregate_value : ''; } public function hasAggregateValue() { return isset($this->aggregate_value); } public function clearAggregateValue() { unset($this->aggregate_value); } /** * Generated from protobuf field optional string aggregate_value = 8; * @param string $var * @return $this */ public function setAggregateValue($var) { GPBUtil::checkString($var, True); $this->aggregate_value = $var; return $this; } } src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php000064400000006012147133775460020404 0ustar00google.protobuf.UninterpretedOption.NamePart */ class NamePart extends \Google\Protobuf\Internal\Message { /** * Generated from protobuf field required string name_part = 1; */ protected $name_part = null; /** * Generated from protobuf field required bool is_extension = 2; */ protected $is_extension = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name_part * @type bool $is_extension * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce(); parent::__construct($data); } /** * Generated from protobuf field required string name_part = 1; * @return string */ public function getNamePart() { return isset($this->name_part) ? $this->name_part : ''; } public function hasNamePart() { return isset($this->name_part); } public function clearNamePart() { unset($this->name_part); } /** * Generated from protobuf field required string name_part = 1; * @param string $var * @return $this */ public function setNamePart($var) { GPBUtil::checkString($var, True); $this->name_part = $var; return $this; } /** * Generated from protobuf field required bool is_extension = 2; * @return bool */ public function getIsExtension() { return isset($this->is_extension) ? $this->is_extension : false; } public function hasIsExtension() { return isset($this->is_extension); } public function clearIsExtension() { unset($this->is_extension); } /** * Generated from protobuf field required bool is_extension = 2; * @param bool $var * @return $this */ public function setIsExtension($var) { GPBUtil::checkBool($var); $this->is_extension = $var; return $this; } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(NamePart::class, \Google\Protobuf\Internal\UninterpretedOption_NamePart::class); src/Google/Protobuf/Internal/UninterpretedOption_NamePart.php000064400000001141147133775460020462 0ustar00google.protobuf.ListValue */ class ListValue extends \Google\Protobuf\Internal\Message { /** * Repeated field of dynamically typed values. * * Generated from protobuf field repeated .google.protobuf.Value values = 1; */ private $values; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array<\Google\Protobuf\Value>|\Google\Protobuf\Internal\RepeatedField $values * Repeated field of dynamically typed values. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Struct::initOnce(); parent::__construct($data); } /** * Repeated field of dynamically typed values. * * Generated from protobuf field repeated .google.protobuf.Value values = 1; * @return \Google\Protobuf\Internal\RepeatedField */ public function getValues() { return $this->values; } /** * Repeated field of dynamically typed values. * * Generated from protobuf field repeated .google.protobuf.Value values = 1; * @param array<\Google\Protobuf\Value>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setValues($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Value::class); $this->values = $arr; return $this; } } src/Google/Protobuf/Method.php000064400000015622147133775460012327 0ustar00google.protobuf.Method */ class Method extends \Google\Protobuf\Internal\Message { /** * The simple name of this method. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * A URL of the input message type. * * Generated from protobuf field string request_type_url = 2; */ protected $request_type_url = ''; /** * If true, the request is streamed. * * Generated from protobuf field bool request_streaming = 3; */ protected $request_streaming = false; /** * The URL of the output message type. * * Generated from protobuf field string response_type_url = 4; */ protected $response_type_url = ''; /** * If true, the response is streamed. * * Generated from protobuf field bool response_streaming = 5; */ protected $response_streaming = false; /** * Any metadata attached to the method. * * Generated from protobuf field repeated .google.protobuf.Option options = 6; */ private $options; /** * The source syntax of this method. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; */ protected $syntax = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * The simple name of this method. * @type string $request_type_url * A URL of the input message type. * @type bool $request_streaming * If true, the request is streamed. * @type string $response_type_url * The URL of the output message type. * @type bool $response_streaming * If true, the response is streamed. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * Any metadata attached to the method. * @type int $syntax * The source syntax of this method. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Api::initOnce(); parent::__construct($data); } /** * The simple name of this method. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * The simple name of this method. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * A URL of the input message type. * * Generated from protobuf field string request_type_url = 2; * @return string */ public function getRequestTypeUrl() { return $this->request_type_url; } /** * A URL of the input message type. * * Generated from protobuf field string request_type_url = 2; * @param string $var * @return $this */ public function setRequestTypeUrl($var) { GPBUtil::checkString($var, True); $this->request_type_url = $var; return $this; } /** * If true, the request is streamed. * * Generated from protobuf field bool request_streaming = 3; * @return bool */ public function getRequestStreaming() { return $this->request_streaming; } /** * If true, the request is streamed. * * Generated from protobuf field bool request_streaming = 3; * @param bool $var * @return $this */ public function setRequestStreaming($var) { GPBUtil::checkBool($var); $this->request_streaming = $var; return $this; } /** * The URL of the output message type. * * Generated from protobuf field string response_type_url = 4; * @return string */ public function getResponseTypeUrl() { return $this->response_type_url; } /** * The URL of the output message type. * * Generated from protobuf field string response_type_url = 4; * @param string $var * @return $this */ public function setResponseTypeUrl($var) { GPBUtil::checkString($var, True); $this->response_type_url = $var; return $this; } /** * If true, the response is streamed. * * Generated from protobuf field bool response_streaming = 5; * @return bool */ public function getResponseStreaming() { return $this->response_streaming; } /** * If true, the response is streamed. * * Generated from protobuf field bool response_streaming = 5; * @param bool $var * @return $this */ public function setResponseStreaming($var) { GPBUtil::checkBool($var); $this->response_streaming = $var; return $this; } /** * Any metadata attached to the method. * * Generated from protobuf field repeated .google.protobuf.Option options = 6; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * Any metadata attached to the method. * * Generated from protobuf field repeated .google.protobuf.Option options = 6; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } /** * The source syntax of this method. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; * @return int */ public function getSyntax() { return $this->syntax; } /** * The source syntax of this method. * * Generated from protobuf field .google.protobuf.Syntax syntax = 7; * @param int $var * @return $this */ public function setSyntax($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Syntax::class); $this->syntax = $var; return $this; } } src/Google/Protobuf/Mixin.php000064400000012042147133775460012164 0ustar00google.protobuf.Mixin */ class Mixin extends \Google\Protobuf\Internal\Message { /** * The fully qualified name of the interface which is included. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * If non-empty specifies a path under which inherited HTTP paths * are rooted. * * Generated from protobuf field string root = 2; */ protected $root = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * The fully qualified name of the interface which is included. * @type string $root * If non-empty specifies a path under which inherited HTTP paths * are rooted. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Api::initOnce(); parent::__construct($data); } /** * The fully qualified name of the interface which is included. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * The fully qualified name of the interface which is included. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * If non-empty specifies a path under which inherited HTTP paths * are rooted. * * Generated from protobuf field string root = 2; * @return string */ public function getRoot() { return $this->root; } /** * If non-empty specifies a path under which inherited HTTP paths * are rooted. * * Generated from protobuf field string root = 2; * @param string $var * @return $this */ public function setRoot($var) { GPBUtil::checkString($var, True); $this->root = $var; return $this; } } src/Google/Protobuf/NullValue.php000064400000002345147133775460013014 0ustar00google.protobuf.NullValue */ class NullValue { /** * Null value. * * Generated from protobuf enum NULL_VALUE = 0; */ const NULL_VALUE = 0; private static $valueToName = [ self::NULL_VALUE => 'NULL_VALUE', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } src/Google/Protobuf/OneofDescriptor.php000064400000002755147133775460014217 0ustar00internal_desc = $internal_desc; } /** * @return string The name of the oneof */ public function getName() { return $this->internal_desc->getName(); } /** * @param int $index Must be >= 0 and < getFieldCount() * @return FieldDescriptor */ public function getField($index) { if ( is_null($this->internal_desc->getFields()) || !isset($this->internal_desc->getFields()[$index]) ) { return null; } return $this->getPublicDescriptor($this->internal_desc->getFields()[$index]); } /** * @return int Number of fields in the oneof */ public function getFieldCount() { return count($this->internal_desc->getFields()); } public function isSynthetic() { return $this->internal_desc->isSynthetic(); } } src/Google/Protobuf/Option.php000064400000010751147133775460012355 0ustar00google.protobuf.Option */ class Option extends \Google\Protobuf\Internal\Message { /** * The option's name. For protobuf built-in options (options defined in * descriptor.proto), this is the short name. For example, `"map_entry"`. * For custom options, it should be the fully-qualified name. For example, * `"google.api.http"`. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * The option's value packed in an Any message. If the value is a primitive, * the corresponding wrapper type defined in google/protobuf/wrappers.proto * should be used. If the value is an enum, it should be stored as an int32 * value using the google.protobuf.Int32Value type. * * Generated from protobuf field .google.protobuf.Any value = 2; */ protected $value = null; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * The option's name. For protobuf built-in options (options defined in * descriptor.proto), this is the short name. For example, `"map_entry"`. * For custom options, it should be the fully-qualified name. For example, * `"google.api.http"`. * @type \Google\Protobuf\Any $value * The option's value packed in an Any message. If the value is a primitive, * the corresponding wrapper type defined in google/protobuf/wrappers.proto * should be used. If the value is an enum, it should be stored as an int32 * value using the google.protobuf.Int32Value type. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Type::initOnce(); parent::__construct($data); } /** * The option's name. For protobuf built-in options (options defined in * descriptor.proto), this is the short name. For example, `"map_entry"`. * For custom options, it should be the fully-qualified name. For example, * `"google.api.http"`. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * The option's name. For protobuf built-in options (options defined in * descriptor.proto), this is the short name. For example, `"map_entry"`. * For custom options, it should be the fully-qualified name. For example, * `"google.api.http"`. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * The option's value packed in an Any message. If the value is a primitive, * the corresponding wrapper type defined in google/protobuf/wrappers.proto * should be used. If the value is an enum, it should be stored as an int32 * value using the google.protobuf.Int32Value type. * * Generated from protobuf field .google.protobuf.Any value = 2; * @return \Google\Protobuf\Any|null */ public function getValue() { return $this->value; } public function hasValue() { return isset($this->value); } public function clearValue() { unset($this->value); } /** * The option's value packed in an Any message. If the value is a primitive, * the corresponding wrapper type defined in google/protobuf/wrappers.proto * should be used. If the value is an enum, it should be stored as an int32 * value using the google.protobuf.Int32Value type. * * Generated from protobuf field .google.protobuf.Any value = 2; * @param \Google\Protobuf\Any $var * @return $this */ public function setValue($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Any::class); $this->value = $var; return $this; } } src/Google/Protobuf/SourceContext.php000064400000004156147133775460013714 0ustar00google.protobuf.SourceContext */ class SourceContext extends \Google\Protobuf\Internal\Message { /** * The path-qualified name of the .proto file that contained the associated * protobuf element. For example: `"google/protobuf/source_context.proto"`. * * Generated from protobuf field string file_name = 1; */ protected $file_name = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $file_name * The path-qualified name of the .proto file that contained the associated * protobuf element. For example: `"google/protobuf/source_context.proto"`. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\SourceContext::initOnce(); parent::__construct($data); } /** * The path-qualified name of the .proto file that contained the associated * protobuf element. For example: `"google/protobuf/source_context.proto"`. * * Generated from protobuf field string file_name = 1; * @return string */ public function getFileName() { return $this->file_name; } /** * The path-qualified name of the .proto file that contained the associated * protobuf element. For example: `"google/protobuf/source_context.proto"`. * * Generated from protobuf field string file_name = 1; * @param string $var * @return $this */ public function setFileName($var) { GPBUtil::checkString($var, True); $this->file_name = $var; return $this; } } src/Google/Protobuf/StringValue.php000064400000002766147133775460013357 0ustar00google.protobuf.StringValue */ class StringValue extends \Google\Protobuf\Internal\Message { /** * The string value. * * Generated from protobuf field string value = 1; */ protected $value = ''; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $value * The string value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The string value. * * Generated from protobuf field string value = 1; * @return string */ public function getValue() { return $this->value; } /** * The string value. * * Generated from protobuf field string value = 1; * @param string $var * @return $this */ public function setValue($var) { GPBUtil::checkString($var, True); $this->value = $var; return $this; } } src/Google/Protobuf/Struct.php000064400000004323147133775460012367 0ustar00google.protobuf.Struct */ class Struct extends \Google\Protobuf\Internal\Message { /** * Unordered map of dynamically typed values. * * Generated from protobuf field map fields = 1; */ private $fields; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type array|\Google\Protobuf\Internal\MapField $fields * Unordered map of dynamically typed values. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Struct::initOnce(); parent::__construct($data); } /** * Unordered map of dynamically typed values. * * Generated from protobuf field map fields = 1; * @return \Google\Protobuf\Internal\MapField */ public function getFields() { return $this->fields; } /** * Unordered map of dynamically typed values. * * Generated from protobuf field map fields = 1; * @param array|\Google\Protobuf\Internal\MapField $var * @return $this */ public function setFields($var) { $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Value::class); $this->fields = $arr; return $this; } } src/Google/Protobuf/Syntax.php000064400000002512147133775460012367 0ustar00google.protobuf.Syntax */ class Syntax { /** * Syntax `proto2`. * * Generated from protobuf enum SYNTAX_PROTO2 = 0; */ const SYNTAX_PROTO2 = 0; /** * Syntax `proto3`. * * Generated from protobuf enum SYNTAX_PROTO3 = 1; */ const SYNTAX_PROTO3 = 1; private static $valueToName = [ self::SYNTAX_PROTO2 => 'SYNTAX_PROTO2', self::SYNTAX_PROTO3 => 'SYNTAX_PROTO3', ]; public static function name($value) { if (!isset(self::$valueToName[$value])) { throw new UnexpectedValueException(sprintf( 'Enum %s has no name defined for value %s', __CLASS__, $value)); } return self::$valueToName[$value]; } public static function value($name) { $const = __CLASS__ . '::' . strtoupper($name); if (!defined($const)) { throw new UnexpectedValueException(sprintf( 'Enum %s has no value defined for name %s', __CLASS__, $name)); } return constant($const); } } src/Google/Protobuf/Timestamp.php000064400000016512147133775460013051 0ustar00google.protobuf.Timestamp */ class Timestamp extends \Google\Protobuf\Internal\TimestampBase { /** * Represents seconds of UTC time since Unix epoch * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to * 9999-12-31T23:59:59Z inclusive. * * Generated from protobuf field int64 seconds = 1; */ protected $seconds = 0; /** * Non-negative fractions of a second at nanosecond resolution. Negative * second values with fractions must still have non-negative nanos values * that count forward in time. Must be from 0 to 999,999,999 * inclusive. * * Generated from protobuf field int32 nanos = 2; */ protected $nanos = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int|string $seconds * Represents seconds of UTC time since Unix epoch * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to * 9999-12-31T23:59:59Z inclusive. * @type int $nanos * Non-negative fractions of a second at nanosecond resolution. Negative * second values with fractions must still have non-negative nanos values * that count forward in time. Must be from 0 to 999,999,999 * inclusive. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Timestamp::initOnce(); parent::__construct($data); } /** * Represents seconds of UTC time since Unix epoch * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to * 9999-12-31T23:59:59Z inclusive. * * Generated from protobuf field int64 seconds = 1; * @return int|string */ public function getSeconds() { return $this->seconds; } /** * Represents seconds of UTC time since Unix epoch * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to * 9999-12-31T23:59:59Z inclusive. * * Generated from protobuf field int64 seconds = 1; * @param int|string $var * @return $this */ public function setSeconds($var) { GPBUtil::checkInt64($var); $this->seconds = $var; return $this; } /** * Non-negative fractions of a second at nanosecond resolution. Negative * second values with fractions must still have non-negative nanos values * that count forward in time. Must be from 0 to 999,999,999 * inclusive. * * Generated from protobuf field int32 nanos = 2; * @return int */ public function getNanos() { return $this->nanos; } /** * Non-negative fractions of a second at nanosecond resolution. Negative * second values with fractions must still have non-negative nanos values * that count forward in time. Must be from 0 to 999,999,999 * inclusive. * * Generated from protobuf field int32 nanos = 2; * @param int $var * @return $this */ public function setNanos($var) { GPBUtil::checkInt32($var); $this->nanos = $var; return $this; } } src/Google/Protobuf/Type.php000064400000015154147133775460012030 0ustar00google.protobuf.Type */ class Type extends \Google\Protobuf\Internal\Message { /** * The fully qualified message name. * * Generated from protobuf field string name = 1; */ protected $name = ''; /** * The list of fields. * * Generated from protobuf field repeated .google.protobuf.Field fields = 2; */ private $fields; /** * The list of types appearing in `oneof` definitions in this type. * * Generated from protobuf field repeated string oneofs = 3; */ private $oneofs; /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 4; */ private $options; /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; */ protected $source_context = null; /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 6; */ protected $syntax = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type string $name * The fully qualified message name. * @type array<\Google\Protobuf\Field>|\Google\Protobuf\Internal\RepeatedField $fields * The list of fields. * @type array|\Google\Protobuf\Internal\RepeatedField $oneofs * The list of types appearing in `oneof` definitions in this type. * @type array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $options * The protocol buffer options. * @type \Google\Protobuf\SourceContext $source_context * The source context. * @type int $syntax * The source syntax. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Type::initOnce(); parent::__construct($data); } /** * The fully qualified message name. * * Generated from protobuf field string name = 1; * @return string */ public function getName() { return $this->name; } /** * The fully qualified message name. * * Generated from protobuf field string name = 1; * @param string $var * @return $this */ public function setName($var) { GPBUtil::checkString($var, True); $this->name = $var; return $this; } /** * The list of fields. * * Generated from protobuf field repeated .google.protobuf.Field fields = 2; * @return \Google\Protobuf\Internal\RepeatedField */ public function getFields() { return $this->fields; } /** * The list of fields. * * Generated from protobuf field repeated .google.protobuf.Field fields = 2; * @param array<\Google\Protobuf\Field>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setFields($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Field::class); $this->fields = $arr; return $this; } /** * The list of types appearing in `oneof` definitions in this type. * * Generated from protobuf field repeated string oneofs = 3; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOneofs() { return $this->oneofs; } /** * The list of types appearing in `oneof` definitions in this type. * * Generated from protobuf field repeated string oneofs = 3; * @param array|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOneofs($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); $this->oneofs = $arr; return $this; } /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 4; * @return \Google\Protobuf\Internal\RepeatedField */ public function getOptions() { return $this->options; } /** * The protocol buffer options. * * Generated from protobuf field repeated .google.protobuf.Option options = 4; * @param array<\Google\Protobuf\Option>|\Google\Protobuf\Internal\RepeatedField $var * @return $this */ public function setOptions($var) { $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Option::class); $this->options = $arr; return $this; } /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; * @return \Google\Protobuf\SourceContext|null */ public function getSourceContext() { return $this->source_context; } public function hasSourceContext() { return isset($this->source_context); } public function clearSourceContext() { unset($this->source_context); } /** * The source context. * * Generated from protobuf field .google.protobuf.SourceContext source_context = 5; * @param \Google\Protobuf\SourceContext $var * @return $this */ public function setSourceContext($var) { GPBUtil::checkMessage($var, \Google\Protobuf\SourceContext::class); $this->source_context = $var; return $this; } /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 6; * @return int */ public function getSyntax() { return $this->syntax; } /** * The source syntax. * * Generated from protobuf field .google.protobuf.Syntax syntax = 6; * @param int $var * @return $this */ public function setSyntax($var) { GPBUtil::checkEnum($var, \Google\Protobuf\Syntax::class); $this->syntax = $var; return $this; } } src/Google/Protobuf/UInt32Value.php000064400000002746147133775460013133 0ustar00google.protobuf.UInt32Value */ class UInt32Value extends \Google\Protobuf\Internal\Message { /** * The uint32 value. * * Generated from protobuf field uint32 value = 1; */ protected $value = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $value * The uint32 value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The uint32 value. * * Generated from protobuf field uint32 value = 1; * @return int */ public function getValue() { return $this->value; } /** * The uint32 value. * * Generated from protobuf field uint32 value = 1; * @param int $var * @return $this */ public function setValue($var) { GPBUtil::checkUint32($var); $this->value = $var; return $this; } } src/Google/Protobuf/UInt64Value.php000064400000002773147133775460013140 0ustar00google.protobuf.UInt64Value */ class UInt64Value extends \Google\Protobuf\Internal\Message { /** * The uint64 value. * * Generated from protobuf field uint64 value = 1; */ protected $value = 0; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int|string $value * The uint64 value. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Wrappers::initOnce(); parent::__construct($data); } /** * The uint64 value. * * Generated from protobuf field uint64 value = 1; * @return int|string */ public function getValue() { return $this->value; } /** * The uint64 value. * * Generated from protobuf field uint64 value = 1; * @param int|string $var * @return $this */ public function setValue($var) { GPBUtil::checkUint64($var); $this->value = $var; return $this; } } src/Google/Protobuf/Value.php000064400000013355147133775460012164 0ustar00google.protobuf.Value */ class Value extends \Google\Protobuf\Internal\Message { protected $kind; /** * Constructor. * * @param array $data { * Optional. Data for populating the Message object. * * @type int $null_value * Represents a null value. * @type float $number_value * Represents a double value. * @type string $string_value * Represents a string value. * @type bool $bool_value * Represents a boolean value. * @type \Google\Protobuf\Struct $struct_value * Represents a structured value. * @type \Google\Protobuf\ListValue $list_value * Represents a repeated `Value`. * } */ public function __construct($data = NULL) { \GPBMetadata\Google\Protobuf\Struct::initOnce(); parent::__construct($data); } /** * Represents a null value. * * Generated from protobuf field .google.protobuf.NullValue null_value = 1; * @return int */ public function getNullValue() { return $this->readOneof(1); } public function hasNullValue() { return $this->hasOneof(1); } /** * Represents a null value. * * Generated from protobuf field .google.protobuf.NullValue null_value = 1; * @param int $var * @return $this */ public function setNullValue($var) { GPBUtil::checkEnum($var, \Google\Protobuf\NullValue::class); $this->writeOneof(1, $var); return $this; } /** * Represents a double value. * * Generated from protobuf field double number_value = 2; * @return float */ public function getNumberValue() { return $this->readOneof(2); } public function hasNumberValue() { return $this->hasOneof(2); } /** * Represents a double value. * * Generated from protobuf field double number_value = 2; * @param float $var * @return $this */ public function setNumberValue($var) { GPBUtil::checkDouble($var); $this->writeOneof(2, $var); return $this; } /** * Represents a string value. * * Generated from protobuf field string string_value = 3; * @return string */ public function getStringValue() { return $this->readOneof(3); } public function hasStringValue() { return $this->hasOneof(3); } /** * Represents a string value. * * Generated from protobuf field string string_value = 3; * @param string $var * @return $this */ public function setStringValue($var) { GPBUtil::checkString($var, True); $this->writeOneof(3, $var); return $this; } /** * Represents a boolean value. * * Generated from protobuf field bool bool_value = 4; * @return bool */ public function getBoolValue() { return $this->readOneof(4); } public function hasBoolValue() { return $this->hasOneof(4); } /** * Represents a boolean value. * * Generated from protobuf field bool bool_value = 4; * @param bool $var * @return $this */ public function setBoolValue($var) { GPBUtil::checkBool($var); $this->writeOneof(4, $var); return $this; } /** * Represents a structured value. * * Generated from protobuf field .google.protobuf.Struct struct_value = 5; * @return \Google\Protobuf\Struct|null */ public function getStructValue() { return $this->readOneof(5); } public function hasStructValue() { return $this->hasOneof(5); } /** * Represents a structured value. * * Generated from protobuf field .google.protobuf.Struct struct_value = 5; * @param \Google\Protobuf\Struct $var * @return $this */ public function setStructValue($var) { GPBUtil::checkMessage($var, \Google\Protobuf\Struct::class); $this->writeOneof(5, $var); return $this; } /** * Represents a repeated `Value`. * * Generated from protobuf field .google.protobuf.ListValue list_value = 6; * @return \Google\Protobuf\ListValue|null */ public function getListValue() { return $this->readOneof(6); } public function hasListValue() { return $this->hasOneof(6); } /** * Represents a repeated `Value`. * * Generated from protobuf field .google.protobuf.ListValue list_value = 6; * @param \Google\Protobuf\ListValue $var * @return $this */ public function setListValue($var) { GPBUtil::checkMessage($var, \Google\Protobuf\ListValue::class); $this->writeOneof(6, $var); return $this; } /** * @return string */ public function getKind() { return $this->whichOneof("kind"); } } src/phpdoc.dist.xml000064400000000624147133775460010317 0ustar00 doc doc Google/Protobuf/Internal/MapField.php Google/Protobuf/Internal/Message.php Google/Protobuf/Internal/RepeatedField.php