<?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.Function</code>
 */
class PBFunction extends \Google\Protobuf\Internal\Message
{
    /**
     * Generated from protobuf field <code>string name = 1;</code>
     */
    protected $name = '';
    /**
     * argument object binding requirements:
     *
     * Generated from protobuf field <code>repeated string argument_types = 2;</code>
     */
    private $argument_types;
    /**
     * matching argument descriptions (used by UI)
     *
     * Generated from protobuf field <code>repeated string argument_descriptions = 3;</code>
     */
    private $argument_descriptions;
    /**
     * PK's required for algorithm inputs (user inputs)
     *
     * Generated from protobuf field <code>repeated string inputs = 4;</code>
     */
    private $inputs;
    /**
     * PK's required for algorithm outputs
     *
     * Generated from protobuf field <code>repeated string outputs = 5;</code>
     */
    private $outputs;
    /**
     * PK's for uniform values across all nodes
     *
     * Generated from protobuf field <code>repeated string constants = 6;</code>
     */
    private $constants;
    /**
     * PK's for to be set by user in UI (end-user inputs)
     *
     * Generated from protobuf field <code>repeated string to_be_defined = 7;</code>
     */
    private $to_be_defined;
    /**
     * local data relevant to this algorithm (coefficients, etc)
     *
     * Generated from protobuf field <code>repeated .Messages.Vector64 data = 8;</code>
     */
    private $data;
    /**
     *reserved  
     *
     * Generated from protobuf field <code>bool cpu_capable = 10;</code>
     */
    protected $cpu_capable = false;
    /**
     * Generated from protobuf field <code>bool gpu_capable = 11;</code>
     */
    protected $gpu_capable = false;
    /**
     * Generated from protobuf field <code>bool include_as_preprocessor = 12;</code>
     */
    protected $include_as_preprocessor = false;
    /**
     * Generated from protobuf field <code>bool omit_from_main_loop = 13;</code>
     */
    protected $omit_from_main_loop = false;
    /**
     * Generated from protobuf field <code>bool include_as_postprocessor = 14;</code>
     */
    protected $include_as_postprocessor = false;
    /**
     * Generated from protobuf field <code>bool mutually_exclusive = 15;</code>
     */
    protected $mutually_exclusive = false;
    /**
     * Generated from protobuf field <code>bool only_once = 16;</code>
     */
    protected $only_once = false;
    /**
     * Generated from protobuf field <code>bool push_front = 17;</code>
     */
    protected $push_front = false;
    /**
     *reserved
     *
     * Generated from protobuf field <code>bool dont_flatten = 18;</code>
     */
    protected $dont_flatten = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $name
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $argument_types
     *           argument object binding requirements:
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $argument_descriptions
     *           matching argument descriptions (used by UI)
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $inputs
     *           PK's required for algorithm inputs (user inputs)
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $outputs
     *           PK's required for algorithm outputs
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $constants
     *           PK's for uniform values across all nodes
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $to_be_defined
     *           PK's for to be set by user in UI (end-user inputs)
     *     @type \Messages\Vector64[]|\Google\Protobuf\Internal\RepeatedField $data
     *           local data relevant to this algorithm (coefficients, etc)
     *     @type bool $cpu_capable
     *          reserved  
     *     @type bool $gpu_capable
     *     @type bool $include_as_preprocessor
     *     @type bool $omit_from_main_loop
     *     @type bool $include_as_postprocessor
     *     @type bool $mutually_exclusive
     *     @type bool $only_once
     *     @type bool $push_front
     *     @type bool $dont_flatten
     *          reserved
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Concept::initOnce();
        parent::__construct($data);
    }

    /**
     * Generated from protobuf field <code>string name = 1;</code>
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Generated from protobuf field <code>string name = 1;</code>
     * @param string $var
     * @return $this
     */
    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;

        return $this;
    }

    /**
     * argument object binding requirements:
     *
     * Generated from protobuf field <code>repeated string argument_types = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getArgumentTypes()
    {
        return $this->argument_types;
    }

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

        return $this;
    }

    /**
     * matching argument descriptions (used by UI)
     *
     * Generated from protobuf field <code>repeated string argument_descriptions = 3;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getArgumentDescriptions()
    {
        return $this->argument_descriptions;
    }

    /**
     * matching argument descriptions (used by UI)
     *
     * Generated from protobuf field <code>repeated string argument_descriptions = 3;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setArgumentDescriptions($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->argument_descriptions = $arr;

        return $this;
    }

    /**
     * PK's required for algorithm inputs (user inputs)
     *
     * Generated from protobuf field <code>repeated string inputs = 4;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getInputs()
    {
        return $this->inputs;
    }

    /**
     * PK's required for algorithm inputs (user inputs)
     *
     * Generated from protobuf field <code>repeated string inputs = 4;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setInputs($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->inputs = $arr;

        return $this;
    }

    /**
     * PK's required for algorithm outputs
     *
     * Generated from protobuf field <code>repeated string outputs = 5;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getOutputs()
    {
        return $this->outputs;
    }

    /**
     * PK's required for algorithm outputs
     *
     * Generated from protobuf field <code>repeated string outputs = 5;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setOutputs($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->outputs = $arr;

        return $this;
    }

    /**
     * PK's for uniform values across all nodes
     *
     * Generated from protobuf field <code>repeated string constants = 6;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getConstants()
    {
        return $this->constants;
    }

    /**
     * PK's for uniform values across all nodes
     *
     * Generated from protobuf field <code>repeated string constants = 6;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setConstants($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->constants = $arr;

        return $this;
    }

    /**
     * PK's for to be set by user in UI (end-user inputs)
     *
     * Generated from protobuf field <code>repeated string to_be_defined = 7;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getToBeDefined()
    {
        return $this->to_be_defined;
    }

    /**
     * PK's for to be set by user in UI (end-user inputs)
     *
     * Generated from protobuf field <code>repeated string to_be_defined = 7;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setToBeDefined($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->to_be_defined = $arr;

        return $this;
    }

    /**
     * local data relevant to this algorithm (coefficients, etc)
     *
     * Generated from protobuf field <code>repeated .Messages.Vector64 data = 8;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getData()
    {
        return $this->data;
    }

    /**
     * local data relevant to this algorithm (coefficients, etc)
     *
     * Generated from protobuf field <code>repeated .Messages.Vector64 data = 8;</code>
     * @param \Messages\Vector64[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setData($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Messages\Vector64::class);
        $this->data = $arr;

        return $this;
    }

    /**
     *reserved  
     *
     * Generated from protobuf field <code>bool cpu_capable = 10;</code>
     * @return bool
     */
    public function getCpuCapable()
    {
        return $this->cpu_capable;
    }

    /**
     *reserved  
     *
     * Generated from protobuf field <code>bool cpu_capable = 10;</code>
     * @param bool $var
     * @return $this
     */
    public function setCpuCapable($var)
    {
        GPBUtil::checkBool($var);
        $this->cpu_capable = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool gpu_capable = 11;</code>
     * @return bool
     */
    public function getGpuCapable()
    {
        return $this->gpu_capable;
    }

    /**
     * Generated from protobuf field <code>bool gpu_capable = 11;</code>
     * @param bool $var
     * @return $this
     */
    public function setGpuCapable($var)
    {
        GPBUtil::checkBool($var);
        $this->gpu_capable = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool include_as_preprocessor = 12;</code>
     * @return bool
     */
    public function getIncludeAsPreprocessor()
    {
        return $this->include_as_preprocessor;
    }

    /**
     * Generated from protobuf field <code>bool include_as_preprocessor = 12;</code>
     * @param bool $var
     * @return $this
     */
    public function setIncludeAsPreprocessor($var)
    {
        GPBUtil::checkBool($var);
        $this->include_as_preprocessor = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool omit_from_main_loop = 13;</code>
     * @return bool
     */
    public function getOmitFromMainLoop()
    {
        return $this->omit_from_main_loop;
    }

    /**
     * Generated from protobuf field <code>bool omit_from_main_loop = 13;</code>
     * @param bool $var
     * @return $this
     */
    public function setOmitFromMainLoop($var)
    {
        GPBUtil::checkBool($var);
        $this->omit_from_main_loop = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool include_as_postprocessor = 14;</code>
     * @return bool
     */
    public function getIncludeAsPostprocessor()
    {
        return $this->include_as_postprocessor;
    }

    /**
     * Generated from protobuf field <code>bool include_as_postprocessor = 14;</code>
     * @param bool $var
     * @return $this
     */
    public function setIncludeAsPostprocessor($var)
    {
        GPBUtil::checkBool($var);
        $this->include_as_postprocessor = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool mutually_exclusive = 15;</code>
     * @return bool
     */
    public function getMutuallyExclusive()
    {
        return $this->mutually_exclusive;
    }

    /**
     * Generated from protobuf field <code>bool mutually_exclusive = 15;</code>
     * @param bool $var
     * @return $this
     */
    public function setMutuallyExclusive($var)
    {
        GPBUtil::checkBool($var);
        $this->mutually_exclusive = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool only_once = 16;</code>
     * @return bool
     */
    public function getOnlyOnce()
    {
        return $this->only_once;
    }

    /**
     * Generated from protobuf field <code>bool only_once = 16;</code>
     * @param bool $var
     * @return $this
     */
    public function setOnlyOnce($var)
    {
        GPBUtil::checkBool($var);
        $this->only_once = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>bool push_front = 17;</code>
     * @return bool
     */
    public function getPushFront()
    {
        return $this->push_front;
    }

    /**
     * Generated from protobuf field <code>bool push_front = 17;</code>
     * @param bool $var
     * @return $this
     */
    public function setPushFront($var)
    {
        GPBUtil::checkBool($var);
        $this->push_front = $var;

        return $this;
    }

    /**
     *reserved
     *
     * Generated from protobuf field <code>bool dont_flatten = 18;</code>
     * @return bool
     */
    public function getDontFlatten()
    {
        return $this->dont_flatten;
    }

    /**
     *reserved
     *
     * Generated from protobuf field <code>bool dont_flatten = 18;</code>
     * @param bool $var
     * @return $this
     */
    public function setDontFlatten($var)
    {
        GPBUtil::checkBool($var);
        $this->dont_flatten = $var;

        return $this;
    }

}

