<?php
namespace google\protobuf;

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

/**
 * Generated by the protocol buffer compiler.  DO NOT EDIT!
 * source: google/protobuf/descriptor.proto
 *
 * -*- magic methods -*-
 *
 * @method string getJavaPackage()
 * @method void setJavaPackage(string $value)
 * @method string getJavaOuterClassname()
 * @method void setJavaOuterClassname(string $value)
 * @method bool getJavaMultipleFiles()
 * @method void setJavaMultipleFiles(bool $value)
 * @method bool getJavaGenerateEqualsAndHash()
 * @method void setJavaGenerateEqualsAndHash(bool $value)
 * @method \google\protobuf\FileOptions\OptimizeMode getOptimizeFor()
 * @method void setOptimizeFor(\google\protobuf\FileOptions\OptimizeMode $value)
 * @method string getGoPackage()
 * @method void setGoPackage(string $value)
 * @method bool getCcGenericServices()
 * @method void setCcGenericServices(bool $value)
 * @method bool getJavaGenericServices()
 * @method void setJavaGenericServices(bool $value)
 * @method bool getPyGenericServices()
 * @method void setPyGenericServices(bool $value)
 * @method array getUninterpretedOption()
 * @method void appendUninterpretedOption(\google\protobuf\UninterpretedOption $value)
 */
class FileOptions extends \ProtocolBuffers\Message
{
  // @@protoc_insertion_point(traits:.google.protobuf.FileOptions)
  
  /**
   * 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.
   *
   * @var string $java_package
   * @tag 1
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   **/
  protected $java_package;
  
  /**
   * If set, all the classes from the .proto file are wrapped in a single
   * outer class with the given name.  This applies to both Proto1
   * (equivalent to the old "--one_java_file" option) and Proto2 (where
   * a .proto always translates to a single class, but you may want to
   * explicitly choose the class name).
   *
   * @var string $java_outer_classname
   * @tag 8
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   **/
  protected $java_outer_classname;
  
  /**
   * If set true, then the Java code generator will generate a separate .java
   * file for each top-level message, enum, and service defined in the .proto
   * file.  Thus, these types will//not* be nested inside the outer class
   * named by java_outer_classname.  However, the outer class will still be
   * generated to contain the file's getDescriptor() method as well as any
   * top-level extensions defined in the file.
   *
   * @var bool $java_multiple_files
   * @tag 10
   * @label optional
   * @type \ProtocolBuffers::TYPE_BOOL
   **/
  protected $java_multiple_files;
  
  /**
   * If set true, then the Java code generator will generate equals() and
   * hashCode() methods for all messages defined in the .proto file. This is
   * purely a speed optimization, as the AbstractMessage base class includes
   * reflection-based implementations of these methods.
   *
   * @var bool $java_generate_equals_and_hash
   * @tag 20
   * @label optional
   * @type \ProtocolBuffers::TYPE_BOOL
   **/
  protected $java_generate_equals_and_hash;
  
  /**
   * @var \google\protobuf\FileOptions\OptimizeMode $optimize_for
   * @tag 9
   * @label optional
   * @type \ProtocolBuffers::TYPE_ENUM
   * @see \google\protobuf\FileOptions\OptimizeMode
   **/
  protected $optimize_for;
  
  /**
   * Sets the Go package where structs generated from this .proto will be
   * placed.  There is no default.
   *
   * @var string $go_package
   * @tag 11
   * @label optional
   * @type \ProtocolBuffers::TYPE_STRING
   **/
  protected $go_package;
  
  /**
   * Should generic services be generated in each language?  "Generic" services
   * are not specific to any particular RPC system.  They are generated by the
   * main code generators in each language (without additional plugins).
   * Generic services were the only kind of service generation supported by
   * early versions of proto2.
   * 
   * 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.
   *
   * @var bool $cc_generic_services
   * @tag 16
   * @label optional
   * @type \ProtocolBuffers::TYPE_BOOL
   **/
  protected $cc_generic_services;
  
  /**
   * @var bool $java_generic_services
   * @tag 17
   * @label optional
   * @type \ProtocolBuffers::TYPE_BOOL
   **/
  protected $java_generic_services;
  
  /**
   * @var bool $py_generic_services
   * @tag 18
   * @label optional
   * @type \ProtocolBuffers::TYPE_BOOL
   **/
  protected $py_generic_services;
  
  /**
   * The parser stores options it doesn't recognize here. See above.
   *
   * @var array $uninterpreted_option
   * @tag 999
   * @label optional
   * @type \ProtocolBuffers::TYPE_MESSAGE
   * @see \google\protobuf\UninterpretedOption
   **/
  protected $uninterpreted_option;
  
  
  // @@protoc_insertion_point(properties_scope:.google.protobuf.FileOptions)

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

  /**
   * 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"     => "java_package",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(8, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_STRING,
        "name"     => "java_outer_classname",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(10, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_BOOL,
        "name"     => "java_multiple_files",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => false,
      )));
      $desc->addField(20, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_BOOL,
        "name"     => "java_generate_equals_and_hash",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => false,
      )));
      $desc->addField(9, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_ENUM,
        "name"     => "optimize_for",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => \google\protobuf\FileOptions\OptimizeMode::SPEED,
      )));
      $desc->addField(11, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_STRING,
        "name"     => "go_package",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => "",
      )));
      $desc->addField(16, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_BOOL,
        "name"     => "cc_generic_services",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => false,
      )));
      $desc->addField(17, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_BOOL,
        "name"     => "java_generic_services",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => false,
      )));
      $desc->addField(18, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_BOOL,
        "name"     => "py_generic_services",
        "required" => false,
        "optional" => true,
        "repeated" => false,
        "packable" => false,
        "default"  => false,
      )));
      $desc->addField(999, new \ProtocolBuffers\FieldDescriptor(array(
        "type"     => \ProtocolBuffers::TYPE_MESSAGE,
        "name"     => "uninterpreted_option",
        "required" => false,
        "optional" => false,
        "repeated" => true,
        "packable" => false,
        "default"  => null,
        "message" => '\google\protobuf\UninterpretedOption',
      )));
      // @@protoc_insertion_point(builder_scope:.google.protobuf.FileOptions)

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

}
