<?php
namespace google\protobuf;

// @@protoc_insertion_point(namespace:.google.protobuf.FileDescriptorProto)

/**
 * Generated by the protocol buffer compiler.  DO NOT EDIT!
 * source: google/protobuf/descriptor.proto
 *
 * Describes a complete .proto file.
 *
 * -*- magic methods -*-
 *
 * @method string getName()
 * @method void setName(string $value)
 * @method string getPackage()
 * @method void setPackage(string $value)
 * @method array getDependency()
 * @method void appendDependency(string $value)
 * @method array getPublicDependency()
 * @method void appendPublicDependency(string $value)
 * @method array getWeakDependency()
 * @method void appendWeakDependency(string $value)
 * @method array getMessageType()
 * @method void appendMessageType(\google\protobuf\DescriptorProto $value)
 * @method array getEnumType()
 * @method void appendEnumType(\google\protobuf\EnumDescriptorProto $value)
 * @method array getService()
 * @method void appendService(\google\protobuf\ServiceDescriptorProto $value)
 * @method array getExtension()
 * @method void appendExtension(\google\protobuf\FieldDescriptorProto $value)
 * @method \google\protobuf\FileOptions getOptions()
 * @method void setOptions(\google\protobuf\FileOptions $value)
 * @method \google\protobuf\SourceCodeInfo getSourceCodeInfo()
 * @method void setSourceCodeInfo(\google\protobuf\SourceCodeInfo $value)
 */
class FileDescriptorProto extends \ProtocolBuffers\Message
{
  // @@protoc_insertion_point(traits:.google.protobuf.FileDescriptorProto)
  
  /**
   * @var string $name
   * @tag 1
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   *
   * file name, relative to root of source tree
   *
   **/
  protected $name;
  
  /**
   * @var string $package
   * @tag 2
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   *
   * e.g. "foo", "foo.bar", etc.
   *
   **/
  protected $package;
  
  /**
   * Names of files imported by this file.
   *
   * @var array $dependency
   * @tag 3
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   **/
  protected $dependency;
  
  /**
   * Indexes of the public imported files in the dependency list above.
   *
   * @var array $public_dependency
   * @tag 10
   * @label optional
   * @type \ProtocolBuffers::TYPE_INT32
   **/
  protected $public_dependency;
  
  /**
   * Indexes of the weak imported files in the dependency list.
   * For Google-internal migration only. Do not use.
   *
   * @var array $weak_dependency
   * @tag 11
   * @label optional
   * @type \ProtocolBuffers::TYPE_INT32
   **/
  protected $weak_dependency;
  
  /**
   * All top-level definitions in this file.
   *
   * @var array $message_type
   * @tag 4
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   * @see \google\protobuf\DescriptorProto
   **/
  protected $message_type;
  
  /**
   * @var array $enum_type
   * @tag 5
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   * @see \google\protobuf\EnumDescriptorProto
   **/
  protected $enum_type;
  
  /**
   * @var array $service
   * @tag 6
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   * @see \google\protobuf\ServiceDescriptorProto
   **/
  protected $service;
  
  /**
   * @var array $extension
   * @tag 7
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   * @see \google\protobuf\FieldDescriptorProto
   **/
  protected $extension;
  
  /**
   * @var \google\protobuf\FileOptions $options
   * @tag 8
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   **/
  protected $options;
  
  /**
   * This field contains optional information about the original source code.
   * You may safely remove this entire field whithout harming runtime
   * functionality of the descriptors -- the information is needed only by
   * development tools.
   *
   * @var \google\protobuf\SourceCodeInfo $source_code_info
   * @tag 9
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   **/
  protected $source_code_info;
  
  
  // @@protoc_insertion_point(properties_scope:.google.protobuf.FileDescriptorProto)

  // @@protoc_insertion_point(class_scope:.google.protobuf.FileDescriptorProto)

  /**
   * get descriptor for protocol buffers
   * 
   * @return \ProtocolBuffersDescriptor
   */
  public static function getDescriptor()
  {
    static $descriptor;
    
    if (!isset($descriptor)) {
      $desc = new \ProtocolBuffers\DescriptorBuilder();
      $desc->addField(1, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_STRING,
        "name"     => "name",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(2, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_STRING,
        "name"     => "package",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(3, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_STRING,
        "name"     => "dependency",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(10, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_INT32,
        "name"     => "public_dependency",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
      )));
      $desc->addField(11, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_INT32,
        "name"     => "weak_dependency",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
      )));
      $desc->addField(4, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "message_type",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\DescriptorProto',
      )));
      $desc->addField(5, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "enum_type",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\EnumDescriptorProto',
      )));
      $desc->addField(6, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "service",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\ServiceDescriptorProto',
      )));
      $desc->addField(7, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "extension",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\FieldDescriptorProto',
      )));
      $desc->addField(8, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "options",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\FileOptions',
      )));
      $desc->addField(9, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "source_code_info",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\SourceCodeInfo',
      )));
      // @@protoc_insertion_point(builder_scope:.google.protobuf.FileDescriptorProto)

      $descriptor = $desc->build();
    }
    return $descriptor;
  }

}
