Update PHP descriptors (#3391)
* Add descriptors test * Update descriptors tests * Add public descriptors * Add test_desriptors.proto to test script * Update composer files * Remove references to GPBType, update tests to be compatible with c * Update for c extension compatibility * Remove nested enums for descriptor, update tests * Strip leading '.' from descriptor name * Update tests with test for getClass, fix OneofDescriptor * Add new files to Makefile.ampull/3459/head
parent
1ab5adbdec
commit
21b0e5587c
17 changed files with 617 additions and 21 deletions
@ -0,0 +1,100 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf; |
||||||
|
|
||||||
|
use Google\Protobuf\Internal\GetPublicDescriptorTrait; |
||||||
|
|
||||||
|
class Descriptor |
||||||
|
{ |
||||||
|
use GetPublicDescriptorTrait; |
||||||
|
|
||||||
|
private $internal_desc; |
||||||
|
|
||||||
|
/** |
||||||
|
* @internal |
||||||
|
*/ |
||||||
|
public function __construct($internal_desc) |
||||||
|
{ |
||||||
|
$this->internal_desc = $internal_desc; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string Full protobuf message name |
||||||
|
*/ |
||||||
|
public function getFullName() |
||||||
|
{ |
||||||
|
return trim($this->internal_desc->getFullName(), "."); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string PHP class name |
||||||
|
*/ |
||||||
|
public function getClass() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getClass(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param int $index Must be >= 0 and < getFieldCount() |
||||||
|
* @return FieldDescriptor |
||||||
|
*/ |
||||||
|
public function getField($index) |
||||||
|
{ |
||||||
|
return $this->getPublicDescriptor($this->internal_desc->getFieldByIndex($index)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int Number of fields in message |
||||||
|
*/ |
||||||
|
public function getFieldCount() |
||||||
|
{ |
||||||
|
return count($this->internal_desc->getField()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param int $index Must be >= 0 and < getOneofDeclCount() |
||||||
|
* @return OneofDescriptor |
||||||
|
*/ |
||||||
|
public function getOneofDecl($index) |
||||||
|
{ |
||||||
|
return $this->getPublicDescriptor($this->internal_desc->getOneofDecl()[$index]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int Number of oneofs in message |
||||||
|
*/ |
||||||
|
public function getOneofDeclCount() |
||||||
|
{ |
||||||
|
return count($this->internal_desc->getOneofDecl()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,76 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf; |
||||||
|
|
||||||
|
class DescriptorPool |
||||||
|
{ |
||||||
|
private static $pool; |
||||||
|
|
||||||
|
private $internal_pool; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return DescriptorPool |
||||||
|
*/ |
||||||
|
public static function getGeneratedPool() |
||||||
|
{ |
||||||
|
if (!isset(self::$pool)) { |
||||||
|
self::$pool = new DescriptorPool(\Google\Protobuf\Internal\DescriptorPool::getGeneratedPool()); |
||||||
|
} |
||||||
|
return self::$pool; |
||||||
|
} |
||||||
|
|
||||||
|
private function __construct($internal_pool) |
||||||
|
{ |
||||||
|
$this->internal_pool = $internal_pool; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param string $className A fully qualified protobuf class name |
||||||
|
* @return Descriptor |
||||||
|
*/ |
||||||
|
public function getDescriptorByClassName($className) |
||||||
|
{ |
||||||
|
$desc = $this->internal_pool->getDescriptorByClassName($className); |
||||||
|
return is_null($desc) ? null : $desc->getPublicDescriptor(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param string $className A fully qualified protobuf class name |
||||||
|
* @return EnumDescriptor |
||||||
|
*/ |
||||||
|
public function getEnumDescriptorByClassName($className) |
||||||
|
{ |
||||||
|
$desc = $this->internal_pool->getEnumDescriptorByClassName($className); |
||||||
|
return is_null($desc) ? null : $desc->getPublicDescriptor(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,79 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf; |
||||||
|
|
||||||
|
class EnumDescriptor |
||||||
|
{ |
||||||
|
private $internal_desc; |
||||||
|
|
||||||
|
/** |
||||||
|
* @internal |
||||||
|
*/ |
||||||
|
public function __construct($internal_desc) |
||||||
|
{ |
||||||
|
$this->internal_desc = $internal_desc; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string Full protobuf message name |
||||||
|
*/ |
||||||
|
public function getFullName() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getFullName(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string PHP class name |
||||||
|
*/ |
||||||
|
public function getClass() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getClass(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param int $index Must be >= 0 and < getValueCount() |
||||||
|
* @return EnumValueDescriptor |
||||||
|
*/ |
||||||
|
public function getValue($index) |
||||||
|
{ |
||||||
|
return $this->internal_desc->getValueDescriptorByIndex($index); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int Number of values in enum |
||||||
|
*/ |
||||||
|
public function getValueCount() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getValueCount(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,117 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf; |
||||||
|
|
||||||
|
use Google\Protobuf\Internal\GetPublicDescriptorTrait; |
||||||
|
use Google\Protobuf\Internal\GPBType; |
||||||
|
|
||||||
|
class FieldDescriptor |
||||||
|
{ |
||||||
|
use GetPublicDescriptorTrait; |
||||||
|
|
||||||
|
private $internal_desc; |
||||||
|
|
||||||
|
/** |
||||||
|
* @internal |
||||||
|
*/ |
||||||
|
public function __construct($internal_desc) |
||||||
|
{ |
||||||
|
$this->internal_desc = $internal_desc; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string Field name |
||||||
|
*/ |
||||||
|
public function getName() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getName(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int Protobuf field number |
||||||
|
*/ |
||||||
|
public function getNumber() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getNumber(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int |
||||||
|
*/ |
||||||
|
public function getLabel() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getLabel(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int |
||||||
|
*/ |
||||||
|
public function getType() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getType(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return Descriptor Returns a descriptor for the field type if the field type is a message, otherwise throws \Exception |
||||||
|
* @throws \Exception |
||||||
|
*/ |
||||||
|
public function getMessageType() |
||||||
|
{ |
||||||
|
if ($this->getType() == GPBType::MESSAGE) { |
||||||
|
return $this->getPublicDescriptor($this->internal_desc->getMessageType()); |
||||||
|
} else { |
||||||
|
throw new \Exception("Cannot get message type for non-message field '" . $this->getName() . "'"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return EnumDescriptor Returns an enum descriptor if the field type is an enum, otherwise throws \Exception |
||||||
|
* @throws \Exception |
||||||
|
*/ |
||||||
|
public function getEnumType() |
||||||
|
{ |
||||||
|
if ($this->getType() == GPBType::ENUM) { |
||||||
|
return $this->getPublicDescriptor($this->internal_desc->getEnumType()); |
||||||
|
} else { |
||||||
|
throw new \Exception("Cannot get enum type for non-enum field '" . $this->getName() . "'"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return boolean |
||||||
|
*/ |
||||||
|
public function isMap() |
||||||
|
{ |
||||||
|
return $this->internal_desc->isMap(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf\Internal; |
||||||
|
|
||||||
|
trait GetPublicDescriptorTrait |
||||||
|
{ |
||||||
|
private function getPublicDescriptor($desc) |
||||||
|
{ |
||||||
|
return is_null($desc) ? null : $desc->getPublicDescriptor(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2008 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf\Internal; |
||||||
|
|
||||||
|
trait HasPublicDescriptorTrait |
||||||
|
{ |
||||||
|
private $public_desc; |
||||||
|
|
||||||
|
public function getPublicDescriptor() |
||||||
|
{ |
||||||
|
return $this->public_desc; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,75 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Protocol Buffers - Google's data interchange format |
||||||
|
// Copyright 2017 Google Inc. All rights reserved. |
||||||
|
// https://developers.google.com/protocol-buffers/ |
||||||
|
// |
||||||
|
// 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 Google Inc. 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 |
||||||
|
// OWNER 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. |
||||||
|
|
||||||
|
namespace Google\Protobuf; |
||||||
|
|
||||||
|
use Google\Protobuf\Internal\GetPublicDescriptorTrait; |
||||||
|
|
||||||
|
class OneofDescriptor |
||||||
|
{ |
||||||
|
use GetPublicDescriptorTrait; |
||||||
|
|
||||||
|
private $internal_desc; |
||||||
|
|
||||||
|
/** |
||||||
|
* @internal |
||||||
|
*/ |
||||||
|
public function __construct($internal_desc) |
||||||
|
{ |
||||||
|
$this->internal_desc = $internal_desc; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string The name of the oneof |
||||||
|
*/ |
||||||
|
public function getName() |
||||||
|
{ |
||||||
|
return $this->internal_desc->getName(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param int $index Must be >= 0 and < getFieldCount() |
||||||
|
* @return FieldDescriptor |
||||||
|
*/ |
||||||
|
public function getField($index) |
||||||
|
{ |
||||||
|
return $this->getPublicDescriptor($this->internal_desc->getFields()[$index]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return int Number of fields in the oneof |
||||||
|
*/ |
||||||
|
public function getFieldCount() |
||||||
|
{ |
||||||
|
return count($this->internal_desc->getFields()); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue