<?php
 
 
 

namespace Google\Protobuf\Internal\GeneratedCodeInfo;

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





    private $path;
    




    protected $source_file = null;
    





    protected $begin = null;
    






    protected $end = null;
    


    protected $semantic = null;

    




















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

    






    public function getPath()
    {
        return $this->path;
    }

    







    public function setPath($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
        $this->path = $arr;

        return $this;
    }

    





    public function getSourceFile()
    {
        return isset($this->source_file) ? $this->source_file : '';
    }

    public function hasSourceFile()
    {
        return isset($this->source_file);
    }

    public function clearSourceFile()
    {
        unset($this->source_file);
    }

    






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

        return $this;
    }

    






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

    public function hasBegin()
    {
        return isset($this->begin);
    }

    public function clearBegin()
    {
        unset($this->begin);
    }

    







    public function setBegin($var)
    {
        GPBUtil::checkInt32($var);
        $this->begin = $var;

        return $this;
    }

    







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

    public function hasEnd()
    {
        return isset($this->end);
    }

    public function clearEnd()
    {
        unset($this->end);
    }

    








    public function setEnd($var)
    {
        GPBUtil::checkInt32($var);
        $this->end = $var;

        return $this;
    }

    



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

    public function hasSemantic()
    {
        return isset($this->semantic);
    }

    public function clearSemantic()
    {
        unset($this->semantic);
    }

    




    public function setSemantic($var)
    {
        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\GeneratedCodeInfo\Annotation\Semantic::class);
        $this->semantic = $var;

        return $this;
    }

}

