<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RoadSurfaceConditionMeasurements StructType
 * @subpackage Structs
 */
class RoadSurfaceConditionMeasurements extends AbstractStructBase
{
    /**
     * The deIcingApplicationRate
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $deIcingApplicationRate;
    /**
     * The deIcingConcentration
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $deIcingConcentration;
    /**
     * The depthOfSnow
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $depthOfSnow;
    /**
     * The protectionTemperature
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $protectionTemperature;
    /**
     * The roadSurfaceTemperature
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $roadSurfaceTemperature;
    /**
     * The waterFilmThickness
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var float
     */
    public $waterFilmThickness;
    /**
     * The roadSurfaceConditionMeasurementsExtension
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ExtensionType
     */
    public $roadSurfaceConditionMeasurementsExtension;
    /**
     * Constructor method for RoadSurfaceConditionMeasurements
     * @uses RoadSurfaceConditionMeasurements::setDeIcingApplicationRate()
     * @uses RoadSurfaceConditionMeasurements::setDeIcingConcentration()
     * @uses RoadSurfaceConditionMeasurements::setDepthOfSnow()
     * @uses RoadSurfaceConditionMeasurements::setProtectionTemperature()
     * @uses RoadSurfaceConditionMeasurements::setRoadSurfaceTemperature()
     * @uses RoadSurfaceConditionMeasurements::setWaterFilmThickness()
     * @uses RoadSurfaceConditionMeasurements::setRoadSurfaceConditionMeasurementsExtension()
     * @param float $deIcingApplicationRate
     * @param float $deIcingConcentration
     * @param float $depthOfSnow
     * @param float $protectionTemperature
     * @param float $roadSurfaceTemperature
     * @param float $waterFilmThickness
     * @param \StructType\ExtensionType $roadSurfaceConditionMeasurementsExtension
     */
    public function __construct($deIcingApplicationRate = null, $deIcingConcentration = null, $depthOfSnow = null, $protectionTemperature = null, $roadSurfaceTemperature = null, $waterFilmThickness = null, \StructType\ExtensionType $roadSurfaceConditionMeasurementsExtension = null)
    {
        $this
            ->setDeIcingApplicationRate($deIcingApplicationRate)
            ->setDeIcingConcentration($deIcingConcentration)
            ->setDepthOfSnow($depthOfSnow)
            ->setProtectionTemperature($protectionTemperature)
            ->setRoadSurfaceTemperature($roadSurfaceTemperature)
            ->setWaterFilmThickness($waterFilmThickness)
            ->setRoadSurfaceConditionMeasurementsExtension($roadSurfaceConditionMeasurementsExtension);
    }
    /**
     * Get deIcingApplicationRate value
     * @return float|null
     */
    public function getDeIcingApplicationRate()
    {
        return $this->deIcingApplicationRate;
    }
    /**
     * Set deIcingApplicationRate value
     * @param float $deIcingApplicationRate
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setDeIcingApplicationRate($deIcingApplicationRate = null)
    {
        $this->deIcingApplicationRate = $deIcingApplicationRate;
        return $this;
    }
    /**
     * Get deIcingConcentration value
     * @return float|null
     */
    public function getDeIcingConcentration()
    {
        return $this->deIcingConcentration;
    }
    /**
     * Set deIcingConcentration value
     * @param float $deIcingConcentration
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setDeIcingConcentration($deIcingConcentration = null)
    {
        $this->deIcingConcentration = $deIcingConcentration;
        return $this;
    }
    /**
     * Get depthOfSnow value
     * @return float|null
     */
    public function getDepthOfSnow()
    {
        return $this->depthOfSnow;
    }
    /**
     * Set depthOfSnow value
     * @param float $depthOfSnow
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setDepthOfSnow($depthOfSnow = null)
    {
        $this->depthOfSnow = $depthOfSnow;
        return $this;
    }
    /**
     * Get protectionTemperature value
     * @return float|null
     */
    public function getProtectionTemperature()
    {
        return $this->protectionTemperature;
    }
    /**
     * Set protectionTemperature value
     * @param float $protectionTemperature
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setProtectionTemperature($protectionTemperature = null)
    {
        $this->protectionTemperature = $protectionTemperature;
        return $this;
    }
    /**
     * Get roadSurfaceTemperature value
     * @return float|null
     */
    public function getRoadSurfaceTemperature()
    {
        return $this->roadSurfaceTemperature;
    }
    /**
     * Set roadSurfaceTemperature value
     * @param float $roadSurfaceTemperature
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setRoadSurfaceTemperature($roadSurfaceTemperature = null)
    {
        $this->roadSurfaceTemperature = $roadSurfaceTemperature;
        return $this;
    }
    /**
     * Get waterFilmThickness value
     * @return float|null
     */
    public function getWaterFilmThickness()
    {
        return $this->waterFilmThickness;
    }
    /**
     * Set waterFilmThickness value
     * @param float $waterFilmThickness
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setWaterFilmThickness($waterFilmThickness = null)
    {
        $this->waterFilmThickness = $waterFilmThickness;
        return $this;
    }
    /**
     * Get roadSurfaceConditionMeasurementsExtension value
     * @return \StructType\ExtensionType|null
     */
    public function getRoadSurfaceConditionMeasurementsExtension()
    {
        return $this->roadSurfaceConditionMeasurementsExtension;
    }
    /**
     * Set roadSurfaceConditionMeasurementsExtension value
     * @param \StructType\ExtensionType $roadSurfaceConditionMeasurementsExtension
     * @return \StructType\RoadSurfaceConditionMeasurements
     */
    public function setRoadSurfaceConditionMeasurementsExtension(\StructType\ExtensionType $roadSurfaceConditionMeasurementsExtension = null)
    {
        $this->roadSurfaceConditionMeasurementsExtension = $roadSurfaceConditionMeasurementsExtension;
        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\RoadSurfaceConditionMeasurements
     */
    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__;
    }
}
