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

namespace Messages;

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

/**
 * Generated from protobuf message <code>Messages.Elements</code>
 */
class Elements extends \Google\Protobuf\Internal\Message
{
    /**
     * each element has a unique index assigned
     *
     * Generated from protobuf field <code>repeated uint32 element_indices = 1 [packed = true];</code>
     */
    private $element_indices;
    /**
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     *
     * Generated from protobuf field <code>repeated uint32 element_types = 2 [packed = true];</code>
     */
    private $element_types;
    /**
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     *
     * Generated from protobuf field <code>repeated int32 element_ids = 3 [packed = true];</code>
     */
    private $element_ids;
    /**
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     *
     * Generated from protobuf field <code>repeated uint32 node_indices = 4 [packed = true];</code>
     */
    private $node_indices;
    /**
     *reserved
     *
     * Generated from protobuf field <code>repeated double element_centers = 10 [packed = true];</code>
     */
    private $element_centers;
    /**
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     *
     * Generated from protobuf field <code>repeated double element_measures = 11 [packed = true];</code>
     */
    private $element_measures;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int[]|\Google\Protobuf\Internal\RepeatedField $element_indices
     *           each element has a unique index assigned
     *     @type int[]|\Google\Protobuf\Internal\RepeatedField $element_types
     *           type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     *     @type int[]|\Google\Protobuf\Internal\RepeatedField $element_ids
     *           region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     *     @type int[]|\Google\Protobuf\Internal\RepeatedField $node_indices
     *           node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     *     @type float[]|\Google\Protobuf\Internal\RepeatedField $element_centers
     *          reserved
     *     @type float[]|\Google\Protobuf\Internal\RepeatedField $element_measures
     *           optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Vector::initOnce();
        parent::__construct($data);
    }

    /**
     * each element has a unique index assigned
     *
     * Generated from protobuf field <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getElementIndices()
    {
        return $this->element_indices;
    }

    /**
     * each element has a unique index assigned
     *
     * Generated from protobuf field <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @param int[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setElementIndices($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::UINT32);
        $this->element_indices = $arr;

        return $this;
    }

    /**
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     *
     * Generated from protobuf field <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getElementTypes()
    {
        return $this->element_types;
    }

    /**
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     *
     * Generated from protobuf field <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @param int[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setElementTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::UINT32);
        $this->element_types = $arr;

        return $this;
    }

    /**
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     *
     * Generated from protobuf field <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getElementIds()
    {
        return $this->element_ids;
    }

    /**
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     *
     * Generated from protobuf field <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @param int[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setElementIds($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
        $this->element_ids = $arr;

        return $this;
    }

    /**
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     *
     * Generated from protobuf field <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getNodeIndices()
    {
        return $this->node_indices;
    }

    /**
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     *
     * Generated from protobuf field <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @param int[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setNodeIndices($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::UINT32);
        $this->node_indices = $arr;

        return $this;
    }

    /**
     *reserved
     *
     * Generated from protobuf field <code>repeated double element_centers = 10 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getElementCenters()
    {
        return $this->element_centers;
    }

    /**
     *reserved
     *
     * Generated from protobuf field <code>repeated double element_centers = 10 [packed = true];</code>
     * @param float[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setElementCenters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::DOUBLE);
        $this->element_centers = $arr;

        return $this;
    }

    /**
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     *
     * Generated from protobuf field <code>repeated double element_measures = 11 [packed = true];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getElementMeasures()
    {
        return $this->element_measures;
    }

    /**
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     *
     * Generated from protobuf field <code>repeated double element_measures = 11 [packed = true];</code>
     * @param float[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setElementMeasures($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::DOUBLE);
        $this->element_measures = $arr;

        return $this;
    }

}

