/** * @param \google\protobuf\DescriptorProto $descriptor * @param string $default * * @return string */ protected function getUniqueFieldName(DescriptorProto $descriptor, $default) { $extensions = $descriptor->getExtensionList() ?: []; $fields = $descriptor->getFieldList() ?: []; $name = $default; $names = []; $count = 0; foreach ($fields as $field) { $names[$field->getName()] = true; } foreach ($extensions as $field) { $names[$field->getName()] = true; } while (isset($names[$name])) { $name = $default . $count++; } return $name; }
/** * @param \google\protobuf\FileDescriptorProto $fileDescriptor * @param \google\protobuf\DescriptorProto $messageDescriptor * @param string $parent * * @return \Protobuf\Compiler\Entity */ protected function generateMessage(FileDescriptorProto $fileDescriptor, DescriptorProto $messageDescriptor, $parent = null) { $type = Entity::TYPE_MESSAGE; $name = $messageDescriptor->getName(); $entity = new Entity($type, $name, $messageDescriptor, $fileDescriptor, $parent); if ($messageDescriptor->hasExtensionList() && $this->containsProtobufExtension($messageDescriptor->getExtensionList())) { $entity->setProtobufExtension(true); } return $entity; }