<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: concept.proto

namespace Messages;

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

/**
 * Generated from protobuf message <code>Messages.System</code>
 */
class System extends \Google\Protobuf\Internal\Message
{
    /**
     * name and other basic info, some of which is non-persistent 
     *
     * Generated from protobuf field <code>.Messages.Meta meta = 1;</code>
     */
    protected $meta = null;
    /**
     * serialized solver defined by a sequence of instructions
     *
     * Generated from protobuf field <code>repeated .Messages.Script script = 2;</code>
     */
    private $script;
    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_transform = 3;</code>
     */
    private $local_transform;
    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_rate = 4;</code>
     */
    private $local_rate;
    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_accel = 5;</code>
     */
    private $local_accel;
    /**
     * sub-system names (exact matches)
     *
     * Generated from protobuf field <code>repeated string children = 6;</code>
     */
    private $children;
    /**
     * external file references, such as *.xcg geometry (Messages::Topology)
     *
     * Generated from protobuf field <code>repeated string referenced_files = 7;</code>
     */
    private $referenced_files;
    /**
     * files such as symbol and supporting documentation
     *
     * Generated from protobuf field <code>repeated .Messages.File embedded_files = 8;</code>
     */
    private $embedded_files;
    /**
     * Generated from protobuf field <code>repeated string notes = 9;</code>
     */
    private $notes;
    /**
     * links and contacts between regions
     *
     * Generated from protobuf field <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    private $couplings;
    /**
     * physical / mathematical models (groups of algorithms)
     *
     * Generated from protobuf field <code>repeated .Messages.Model models = 11;</code>
     */
    private $models;
    /**
     * physics.data and system requirements
     *
     * Generated from protobuf field <code>.Messages.Record64 physical_constants = 12;</code>
     */
    protected $physical_constants = null;
    /**
     * special algorithm commands applied as constraints and conditions
     *
     * Generated from protobuf field <code>repeated .Messages.Command conditions = 13;</code>
     */
    private $conditions;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type \Messages\Meta $meta
     *           name and other basic info, some of which is non-persistent 
     *     @type \Messages\Script[]|\Google\Protobuf\Internal\RepeatedField $script
     *           serialized solver defined by a sequence of instructions
     *     @type float[]|\Google\Protobuf\Internal\RepeatedField $local_transform
     *           double16 (glm::dmat4) local transformation matrix
     *     @type float[]|\Google\Protobuf\Internal\RepeatedField $local_rate
     *           double16 (glm::dmat4) local transformation matrix
     *     @type float[]|\Google\Protobuf\Internal\RepeatedField $local_accel
     *           double16 (glm::dmat4) local transformation matrix
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $children
     *           sub-system names (exact matches)
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $referenced_files
     *           external file references, such as *.xcg geometry (Messages::Topology)
     *     @type \Messages\File[]|\Google\Protobuf\Internal\RepeatedField $embedded_files
     *           files such as symbol and supporting documentation
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $notes
     *     @type \Messages\Coupling[]|\Google\Protobuf\Internal\RepeatedField $couplings
     *           links and contacts between regions
     *     @type \Messages\Model[]|\Google\Protobuf\Internal\RepeatedField $models
     *           physical / mathematical models (groups of algorithms)
     *     @type \Messages\Record64 $physical_constants
     *           physics.data and system requirements
     *     @type \Messages\Command[]|\Google\Protobuf\Internal\RepeatedField $conditions
     *           special algorithm commands applied as constraints and conditions
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Concept::initOnce();
        parent::__construct($data);
    }

    /**
     * name and other basic info, some of which is non-persistent 
     *
     * Generated from protobuf field <code>.Messages.Meta meta = 1;</code>
     * @return \Messages\Meta|null
     */
    public function getMeta()
    {
        return $this->meta;
    }

    public function hasMeta()
    {
        return isset($this->meta);
    }

    public function clearMeta()
    {
        unset($this->meta);
    }

    /**
     * name and other basic info, some of which is non-persistent 
     *
     * Generated from protobuf field <code>.Messages.Meta meta = 1;</code>
     * @param \Messages\Meta $var
     * @return $this
     */
    public function setMeta($var)
    {
        GPBUtil::checkMessage($var, \Messages\Meta::class);
        $this->meta = $var;

        return $this;
    }

    /**
     * serialized solver defined by a sequence of instructions
     *
     * Generated from protobuf field <code>repeated .Messages.Script script = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getScript()
    {
        return $this->script;
    }

    /**
     * serialized solver defined by a sequence of instructions
     *
     * Generated from protobuf field <code>repeated .Messages.Script script = 2;</code>
     * @param \Messages\Script[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setScript($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\Script::class);
        $this->script = $arr;

        return $this;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_transform = 3;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLocalTransform()
    {
        return $this->local_transform;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_transform = 3;</code>
     * @param float[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLocalTransform($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::DOUBLE);
        $this->local_transform = $arr;

        return $this;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_rate = 4;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLocalRate()
    {
        return $this->local_rate;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_rate = 4;</code>
     * @param float[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLocalRate($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::DOUBLE);
        $this->local_rate = $arr;

        return $this;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_accel = 5;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLocalAccel()
    {
        return $this->local_accel;
    }

    /**
     * double16 (glm::dmat4) local transformation matrix
     *
     * Generated from protobuf field <code>repeated double local_accel = 5;</code>
     * @param float[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLocalAccel($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::DOUBLE);
        $this->local_accel = $arr;

        return $this;
    }

    /**
     * sub-system names (exact matches)
     *
     * Generated from protobuf field <code>repeated string children = 6;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getChildren()
    {
        return $this->children;
    }

    /**
     * sub-system names (exact matches)
     *
     * Generated from protobuf field <code>repeated string children = 6;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setChildren($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->children = $arr;

        return $this;
    }

    /**
     * external file references, such as *.xcg geometry (Messages::Topology)
     *
     * Generated from protobuf field <code>repeated string referenced_files = 7;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getReferencedFiles()
    {
        return $this->referenced_files;
    }

    /**
     * external file references, such as *.xcg geometry (Messages::Topology)
     *
     * Generated from protobuf field <code>repeated string referenced_files = 7;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setReferencedFiles($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->referenced_files = $arr;

        return $this;
    }

    /**
     * files such as symbol and supporting documentation
     *
     * Generated from protobuf field <code>repeated .Messages.File embedded_files = 8;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getEmbeddedFiles()
    {
        return $this->embedded_files;
    }

    /**
     * files such as symbol and supporting documentation
     *
     * Generated from protobuf field <code>repeated .Messages.File embedded_files = 8;</code>
     * @param \Messages\File[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setEmbeddedFiles($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\File::class);
        $this->embedded_files = $arr;

        return $this;
    }

    /**
     * Generated from protobuf field <code>repeated string notes = 9;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getNotes()
    {
        return $this->notes;
    }

    /**
     * Generated from protobuf field <code>repeated string notes = 9;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setNotes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->notes = $arr;

        return $this;
    }

    /**
     * links and contacts between regions
     *
     * Generated from protobuf field <code>repeated .Messages.Coupling couplings = 10;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getCouplings()
    {
        return $this->couplings;
    }

    /**
     * links and contacts between regions
     *
     * Generated from protobuf field <code>repeated .Messages.Coupling couplings = 10;</code>
     * @param \Messages\Coupling[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setCouplings($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\Coupling::class);
        $this->couplings = $arr;

        return $this;
    }

    /**
     * physical / mathematical models (groups of algorithms)
     *
     * Generated from protobuf field <code>repeated .Messages.Model models = 11;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getModels()
    {
        return $this->models;
    }

    /**
     * physical / mathematical models (groups of algorithms)
     *
     * Generated from protobuf field <code>repeated .Messages.Model models = 11;</code>
     * @param \Messages\Model[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setModels($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\Model::class);
        $this->models = $arr;

        return $this;
    }

    /**
     * physics.data and system requirements
     *
     * Generated from protobuf field <code>.Messages.Record64 physical_constants = 12;</code>
     * @return \Messages\Record64|null
     */
    public function getPhysicalConstants()
    {
        return $this->physical_constants;
    }

    public function hasPhysicalConstants()
    {
        return isset($this->physical_constants);
    }

    public function clearPhysicalConstants()
    {
        unset($this->physical_constants);
    }

    /**
     * physics.data and system requirements
     *
     * Generated from protobuf field <code>.Messages.Record64 physical_constants = 12;</code>
     * @param \Messages\Record64 $var
     * @return $this
     */
    public function setPhysicalConstants($var)
    {
        GPBUtil::checkMessage($var, \Messages\Record64::class);
        $this->physical_constants = $var;

        return $this;
    }

    /**
     * special algorithm commands applied as constraints and conditions
     *
     * Generated from protobuf field <code>repeated .Messages.Command conditions = 13;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getConditions()
    {
        return $this->conditions;
    }

    /**
     * special algorithm commands applied as constraints and conditions
     *
     * Generated from protobuf field <code>repeated .Messages.Command conditions = 13;</code>
     * @param \Messages\Command[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setConditions($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\Command::class);
        $this->conditions = $arr;

        return $this;
    }

}

