<?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 FeatureSet extends \Google\Protobuf\Internal\Message
{
    


    protected $field_presence = null;
    


    protected $enum_type = null;
    


    protected $repeated_field_encoding = null;
    


    protected $utf8_validation = null;
    


    protected $message_encoding = null;
    


    protected $json_format = null;
    


    protected $enforce_naming_style = null;
    


    protected $default_symbol_visibility = null;

    















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

    



    public function getFieldPresence()
    {
        return isset($this->field_presence) ? $this->field_presence : 0;
    }

    public function hasFieldPresence()
    {
        return isset($this->field_presence);
    }

    public function clearFieldPresence()
    {
        unset($this->field_presence);
    }

    




    public function setFieldPresence($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\FieldPresence::class);
        $this->field_presence = $var;

        return $this;
    }

    



    public function getEnumType()
    {
        return isset($this->enum_type) ? $this->enum_type : 0;
    }

    public function hasEnumType()
    {
        return isset($this->enum_type);
    }

    public function clearEnumType()
    {
        unset($this->enum_type);
    }

    




    public function setEnumType($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\EnumType::class);
        $this->enum_type = $var;

        return $this;
    }

    



    public function getRepeatedFieldEncoding()
    {
        return isset($this->repeated_field_encoding) ? $this->repeated_field_encoding : 0;
    }

    public function hasRepeatedFieldEncoding()
    {
        return isset($this->repeated_field_encoding);
    }

    public function clearRepeatedFieldEncoding()
    {
        unset($this->repeated_field_encoding);
    }

    




    public function setRepeatedFieldEncoding($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\RepeatedFieldEncoding::class);
        $this->repeated_field_encoding = $var;

        return $this;
    }

    



    public function getUtf8Validation()
    {
        return isset($this->utf8_validation) ? $this->utf8_validation : 0;
    }

    public function hasUtf8Validation()
    {
        return isset($this->utf8_validation);
    }

    public function clearUtf8Validation()
    {
        unset($this->utf8_validation);
    }

    




    public function setUtf8Validation($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\Utf8Validation::class);
        $this->utf8_validation = $var;

        return $this;
    }

    



    public function getMessageEncoding()
    {
        return isset($this->message_encoding) ? $this->message_encoding : 0;
    }

    public function hasMessageEncoding()
    {
        return isset($this->message_encoding);
    }

    public function clearMessageEncoding()
    {
        unset($this->message_encoding);
    }

    




    public function setMessageEncoding($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\MessageEncoding::class);
        $this->message_encoding = $var;

        return $this;
    }

    



    public function getJsonFormat()
    {
        return isset($this->json_format) ? $this->json_format : 0;
    }

    public function hasJsonFormat()
    {
        return isset($this->json_format);
    }

    public function clearJsonFormat()
    {
        unset($this->json_format);
    }

    




    public function setJsonFormat($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\JsonFormat::class);
        $this->json_format = $var;

        return $this;
    }

    



    public function getEnforceNamingStyle()
    {
        return isset($this->enforce_naming_style) ? $this->enforce_naming_style : 0;
    }

    public function hasEnforceNamingStyle()
    {
        return isset($this->enforce_naming_style);
    }

    public function clearEnforceNamingStyle()
    {
        unset($this->enforce_naming_style);
    }

    




    public function setEnforceNamingStyle($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\EnforceNamingStyle::class);
        $this->enforce_naming_style = $var;

        return $this;
    }

    



    public function getDefaultSymbolVisibility()
    {
        return isset($this->default_symbol_visibility) ? $this->default_symbol_visibility : 0;
    }

    public function hasDefaultSymbolVisibility()
    {
        return isset($this->default_symbol_visibility);
    }

    public function clearDefaultSymbolVisibility()
    {
        unset($this->default_symbol_visibility);
    }

    




    public function setDefaultSymbolVisibility($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FeatureSet\VisibilityFeature\DefaultSymbolVisibility::class);
        $this->default_symbol_visibility = $var;

        return $this;
    }

}

