<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Point StructType
 * @subpackage Structs
 */
class Point extends NetworkLocation
{
    /**
     * The tpegPointLocation
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\TpegPointLocation
     */
    public $tpegPointLocation;
    /**
     * The alertCPoint
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\AlertCPoint
     */
    public $alertCPoint;
    /**
     * The roadsideReferencePoint
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RoadsideReferencePoint
     */
    public $roadsideReferencePoint;
    /**
     * The pointByCoordinates
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\PointByCoordinates
     */
    public $pointByCoordinates;
    /**
     * The pointExtension
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ExtensionType
     */
    public $pointExtension;
    /**
     * Constructor method for Point
     * @uses Point::setTpegPointLocation()
     * @uses Point::setAlertCPoint()
     * @uses Point::setRoadsideReferencePoint()
     * @uses Point::setPointByCoordinates()
     * @uses Point::setPointExtension()
     * @param \StructType\TpegPointLocation $tpegPointLocation
     * @param \StructType\AlertCPoint $alertCPoint
     * @param \StructType\RoadsideReferencePoint $roadsideReferencePoint
     * @param \StructType\PointByCoordinates $pointByCoordinates
     * @param \StructType\ExtensionType $pointExtension
     */
    public function __construct(\StructType\TpegPointLocation $tpegPointLocation = null, \StructType\AlertCPoint $alertCPoint = null, \StructType\RoadsideReferencePoint $roadsideReferencePoint = null, \StructType\PointByCoordinates $pointByCoordinates = null, \StructType\ExtensionType $pointExtension = null)
    {
        $this
            ->setTpegPointLocation($tpegPointLocation)
            ->setAlertCPoint($alertCPoint)
            ->setRoadsideReferencePoint($roadsideReferencePoint)
            ->setPointByCoordinates($pointByCoordinates)
            ->setPointExtension($pointExtension);
    }
    /**
     * Get tpegPointLocation value
     * @return \StructType\TpegPointLocation|null
     */
    public function getTpegPointLocation()
    {
        return $this->tpegPointLocation;
    }
    /**
     * Set tpegPointLocation value
     * @param \StructType\TpegPointLocation $tpegPointLocation
     * @return \StructType\Point
     */
    public function setTpegPointLocation(\StructType\TpegPointLocation $tpegPointLocation = null)
    {
        $this->tpegPointLocation = $tpegPointLocation;
        return $this;
    }
    /**
     * Get alertCPoint value
     * @return \StructType\AlertCPoint|null
     */
    public function getAlertCPoint()
    {
        return $this->alertCPoint;
    }
    /**
     * Set alertCPoint value
     * @param \StructType\AlertCPoint $alertCPoint
     * @return \StructType\Point
     */
    public function setAlertCPoint(\StructType\AlertCPoint $alertCPoint = null)
    {
        $this->alertCPoint = $alertCPoint;
        return $this;
    }
    /**
     * Get roadsideReferencePoint value
     * @return \StructType\RoadsideReferencePoint|null
     */
    public function getRoadsideReferencePoint()
    {
        return $this->roadsideReferencePoint;
    }
    /**
     * Set roadsideReferencePoint value
     * @param \StructType\RoadsideReferencePoint $roadsideReferencePoint
     * @return \StructType\Point
     */
    public function setRoadsideReferencePoint(\StructType\RoadsideReferencePoint $roadsideReferencePoint = null)
    {
        $this->roadsideReferencePoint = $roadsideReferencePoint;
        return $this;
    }
    /**
     * Get pointByCoordinates value
     * @return \StructType\PointByCoordinates|null
     */
    public function getPointByCoordinates()
    {
        return $this->pointByCoordinates;
    }
    /**
     * Set pointByCoordinates value
     * @param \StructType\PointByCoordinates $pointByCoordinates
     * @return \StructType\Point
     */
    public function setPointByCoordinates(\StructType\PointByCoordinates $pointByCoordinates = null)
    {
        $this->pointByCoordinates = $pointByCoordinates;
        return $this;
    }
    /**
     * Get pointExtension value
     * @return \StructType\ExtensionType|null
     */
    public function getPointExtension()
    {
        return $this->pointExtension;
    }
    /**
     * Set pointExtension value
     * @param \StructType\ExtensionType $pointExtension
     * @return \StructType\Point
     */
    public function setPointExtension(\StructType\ExtensionType $pointExtension = null)
    {
        $this->pointExtension = $pointExtension;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \StructType\Point
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
