<?php
 
 
 

namespace Google\Protobuf\Internal;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\GPBWire;
use Google\Protobuf\Internal\InputStream;
use Google\Protobuf\Internal\GPBUtil;
use Google\Protobuf\RepeatedField;




class FileOptions extends \Google\Protobuf\Internal\Message
{
    







    protected $java_package = null;
    








    protected $java_outer_classname = null;
    









    protected $java_multiple_files = null;
    





    protected $java_generate_equals_and_hash = null;
    











    protected $java_string_check_utf8 = null;
    


    protected $optimize_for = null;
    








    protected $go_package = null;
    












    protected $cc_generic_services = null;
    


    protected $java_generic_services = null;
    


    protected $py_generic_services = null;
    







    protected $deprecated = null;
    





    protected $cc_enable_arenas = null;
    





    protected $objc_class_prefix = null;
    




    protected $csharp_namespace = null;
    







    protected $swift_prefix = null;
    





    protected $php_class_prefix = null;
    






    protected $php_namespace = null;
    






    protected $php_metadata_namespace = null;
    






    protected $ruby_package = null;
    







    protected $features = null;
    





    private $uninterpreted_option;

    
































































































    public function __construct($data = NULL) {
        \GPBMetadata\Google\Protobuf\Internal\Descriptor::initOnce();
        parent::__construct($data);
    }

    








    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);
    }

    









    public function setJavaPackage($var)
    {
        GPBUtil::checkString($var, True);
        $this->java_package = $var;

        return $this;
    }

    









    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);
    }

    










    public function setJavaOuterClassname($var)
    {
        GPBUtil::checkString($var, True);
        $this->java_outer_classname = $var;

        return $this;
    }

    










    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);
    }

    











    public function setJavaMultipleFiles($var)
    {
        GPBUtil::checkBool($var);
        $this->java_multiple_files = $var;

        return $this;
    }

    






    public function getJavaGenerateEqualsAndHash()
    {
        if (isset($this->java_generate_equals_and_hash)) {
            @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()
    {
        if (isset($this->java_generate_equals_and_hash)) {
            @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);
    }

    







    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;
    }

    












    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);
    }

    













    public function setJavaStringCheckUtf8($var)
    {
        GPBUtil::checkBool($var);
        $this->java_string_check_utf8 = $var;

        return $this;
    }

    



    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);
    }

    




    public function setOptimizeFor($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FileOptions\OptimizeMode::class);
        $this->optimize_for = $var;

        return $this;
    }

    









    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);
    }

    










    public function setGoPackage($var)
    {
        GPBUtil::checkString($var, True);
        $this->go_package = $var;

        return $this;
    }

    













    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);
    }

    














    public function setCcGenericServices($var)
    {
        GPBUtil::checkBool($var);
        $this->cc_generic_services = $var;

        return $this;
    }

    



    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);
    }

    




    public function setJavaGenericServices($var)
    {
        GPBUtil::checkBool($var);
        $this->java_generic_services = $var;

        return $this;
    }

    



    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);
    }

    




    public function setPyGenericServices($var)
    {
        GPBUtil::checkBool($var);
        $this->py_generic_services = $var;

        return $this;
    }

    








    public function getDeprecated()
    {
        return isset($this->deprecated) ? $this->deprecated : false;
    }

    public function hasDeprecated()
    {
        return isset($this->deprecated);
    }

    public function clearDeprecated()
    {
        unset($this->deprecated);
    }

    









    public function setDeprecated($var)
    {
        GPBUtil::checkBool($var);
        $this->deprecated = $var;

        return $this;
    }

    






    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);
    }

    







    public function setCcEnableArenas($var)
    {
        GPBUtil::checkBool($var);
        $this->cc_enable_arenas = $var;

        return $this;
    }

    






    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);
    }

    







    public function setObjcClassPrefix($var)
    {
        GPBUtil::checkString($var, True);
        $this->objc_class_prefix = $var;

        return $this;
    }

    





    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);
    }

    






    public function setCsharpNamespace($var)
    {
        GPBUtil::checkString($var, True);
        $this->csharp_namespace = $var;

        return $this;
    }

    








    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);
    }

    









    public function setSwiftPrefix($var)
    {
        GPBUtil::checkString($var, True);
        $this->swift_prefix = $var;

        return $this;
    }

    






    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);
    }

    







    public function setPhpClassPrefix($var)
    {
        GPBUtil::checkString($var, True);
        $this->php_class_prefix = $var;

        return $this;
    }

    







    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);
    }

    








    public function setPhpNamespace($var)
    {
        GPBUtil::checkString($var, True);
        $this->php_namespace = $var;

        return $this;
    }

    







    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);
    }

    








    public function setPhpMetadataNamespace($var)
    {
        GPBUtil::checkString($var, True);
        $this->php_metadata_namespace = $var;

        return $this;
    }

    







    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);
    }

    








    public function setRubyPackage($var)
    {
        GPBUtil::checkString($var, True);
        $this->ruby_package = $var;

        return $this;
    }

    








    public function getFeatures()
    {
        return $this->features;
    }

    public function hasFeatures()
    {
        return isset($this->features);
    }

    public function clearFeatures()
    {
        unset($this->features);
    }

    









    public function setFeatures($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
        $this->features = $var;

        return $this;
    }

    






    public function getUninterpretedOption()
    {
        return $this->uninterpreted_option;
    }

    







    public function setUninterpretedOption($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\UninterpretedOption::class);
        $this->uninterpreted_option = $arr;

        return $this;
    }

}

