<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: opentelemetry/proto/profiles/v1development/profiles.proto

namespace Opentelemetry\Proto\Profiles\V1development;

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

/**
 * ProfilesDictionary represents the profiles data shared across the
 * entire message being sent.
 * Note that all fields in this message MUST have a zero value encoded as the first element.
 * This allows for _index fields pointing into the dictionary to use a 0 pointer value
 * to indicate 'null' / 'not set'. Unless otherwise defined, a 'zero value' message value
 * is one with all default field values, so as to minimize wire encoded size.
 *
 * Generated from protobuf message <code>opentelemetry.proto.profiles.v1development.ProfilesDictionary</code>
 */
class ProfilesDictionary extends \Google\Protobuf\Internal\Message
{
    /**
     * Mappings from address ranges to the image/binary/library mapped
     * into that address range referenced by locations via Location.mapping_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Mapping mapping_table = 1;</code>
     */
    private $mapping_table;
    /**
     * Locations referenced by samples via Stack.location_indices.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Location location_table = 2;</code>
     */
    private $location_table;
    /**
     * Functions referenced by locations via Line.function_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Function function_table = 3;</code>
     */
    private $function_table;
    /**
     * Links referenced by samples via Sample.link_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Link link_table = 4;</code>
     */
    private $link_table;
    /**
     * A common table for strings referenced by various messages.
     * string_table[0] must always be "".
     *
     * Generated from protobuf field <code>repeated string string_table = 5;</code>
     */
    private $string_table;
    /**
     * A common table for attributes referenced by various messages.
     * It is a collection of key/value pairs. Note, global attributes
     * like server name can be set using the resource API. Examples of attributes:
     *     "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
     *     "/http/server_latency": 300
     *     "abc.com/myattribute": true
     *     "abc.com/score": 10.239
     * The attribute values SHOULD NOT contain empty values.
     * The attribute values SHOULD NOT contain bytes values.
     * The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
     * double values.
     * The attribute values SHOULD NOT contain kvlist values.
     * The behavior of software that receives attributes containing such values can be unpredictable.
     * These restrictions can change in a minor release.
     * The restrictions take origin from the OpenTelemetry specification:
     * https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.KeyValueAndUnit attribute_table = 6;</code>
     */
    private $attribute_table;
    /**
     * Stacks referenced by samples via Sample.stack_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Stack stack_table = 7;</code>
     */
    private $stack_table;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type \Opentelemetry\Proto\Profiles\V1development\Mapping[]|\Google\Protobuf\Internal\RepeatedField $mapping_table
     *           Mappings from address ranges to the image/binary/library mapped
     *           into that address range referenced by locations via Location.mapping_index.
     *     @type \Opentelemetry\Proto\Profiles\V1development\Location[]|\Google\Protobuf\Internal\RepeatedField $location_table
     *           Locations referenced by samples via Stack.location_indices.
     *     @type \Opentelemetry\Proto\Profiles\V1development\PBFunction[]|\Google\Protobuf\Internal\RepeatedField $function_table
     *           Functions referenced by locations via Line.function_index.
     *     @type \Opentelemetry\Proto\Profiles\V1development\Link[]|\Google\Protobuf\Internal\RepeatedField $link_table
     *           Links referenced by samples via Sample.link_index.
     *     @type string[]|\Google\Protobuf\Internal\RepeatedField $string_table
     *           A common table for strings referenced by various messages.
     *           string_table[0] must always be "".
     *     @type \Opentelemetry\Proto\Profiles\V1development\KeyValueAndUnit[]|\Google\Protobuf\Internal\RepeatedField $attribute_table
     *           A common table for attributes referenced by various messages.
     *           It is a collection of key/value pairs. Note, global attributes
     *           like server name can be set using the resource API. Examples of attributes:
     *               "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
     *               "/http/server_latency": 300
     *               "abc.com/myattribute": true
     *               "abc.com/score": 10.239
     *           The attribute values SHOULD NOT contain empty values.
     *           The attribute values SHOULD NOT contain bytes values.
     *           The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
     *           double values.
     *           The attribute values SHOULD NOT contain kvlist values.
     *           The behavior of software that receives attributes containing such values can be unpredictable.
     *           These restrictions can change in a minor release.
     *           The restrictions take origin from the OpenTelemetry specification:
     *           https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
     *     @type \Opentelemetry\Proto\Profiles\V1development\Stack[]|\Google\Protobuf\Internal\RepeatedField $stack_table
     *           Stacks referenced by samples via Sample.stack_index.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Opentelemetry\Proto\Profiles\V1Development\Profiles::initOnce();
        parent::__construct($data);
    }

    /**
     * Mappings from address ranges to the image/binary/library mapped
     * into that address range referenced by locations via Location.mapping_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Mapping mapping_table = 1;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getMappingTable()
    {
        return $this->mapping_table;
    }

    /**
     * Mappings from address ranges to the image/binary/library mapped
     * into that address range referenced by locations via Location.mapping_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Mapping mapping_table = 1;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\Mapping[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setMappingTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\Mapping::class);
        $this->mapping_table = $arr;

        return $this;
    }

    /**
     * Locations referenced by samples via Stack.location_indices.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Location location_table = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLocationTable()
    {
        return $this->location_table;
    }

    /**
     * Locations referenced by samples via Stack.location_indices.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Location location_table = 2;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\Location[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLocationTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\Location::class);
        $this->location_table = $arr;

        return $this;
    }

    /**
     * Functions referenced by locations via Line.function_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Function function_table = 3;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getFunctionTable()
    {
        return $this->function_table;
    }

    /**
     * Functions referenced by locations via Line.function_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Function function_table = 3;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\PBFunction[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setFunctionTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\PBFunction::class);
        $this->function_table = $arr;

        return $this;
    }

    /**
     * Links referenced by samples via Sample.link_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Link link_table = 4;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLinkTable()
    {
        return $this->link_table;
    }

    /**
     * Links referenced by samples via Sample.link_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Link link_table = 4;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\Link[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLinkTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\Link::class);
        $this->link_table = $arr;

        return $this;
    }

    /**
     * A common table for strings referenced by various messages.
     * string_table[0] must always be "".
     *
     * Generated from protobuf field <code>repeated string string_table = 5;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getStringTable()
    {
        return $this->string_table;
    }

    /**
     * A common table for strings referenced by various messages.
     * string_table[0] must always be "".
     *
     * Generated from protobuf field <code>repeated string string_table = 5;</code>
     * @param string[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setStringTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->string_table = $arr;

        return $this;
    }

    /**
     * A common table for attributes referenced by various messages.
     * It is a collection of key/value pairs. Note, global attributes
     * like server name can be set using the resource API. Examples of attributes:
     *     "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
     *     "/http/server_latency": 300
     *     "abc.com/myattribute": true
     *     "abc.com/score": 10.239
     * The attribute values SHOULD NOT contain empty values.
     * The attribute values SHOULD NOT contain bytes values.
     * The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
     * double values.
     * The attribute values SHOULD NOT contain kvlist values.
     * The behavior of software that receives attributes containing such values can be unpredictable.
     * These restrictions can change in a minor release.
     * The restrictions take origin from the OpenTelemetry specification:
     * https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.KeyValueAndUnit attribute_table = 6;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getAttributeTable()
    {
        return $this->attribute_table;
    }

    /**
     * A common table for attributes referenced by various messages.
     * It is a collection of key/value pairs. Note, global attributes
     * like server name can be set using the resource API. Examples of attributes:
     *     "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
     *     "/http/server_latency": 300
     *     "abc.com/myattribute": true
     *     "abc.com/score": 10.239
     * The attribute values SHOULD NOT contain empty values.
     * The attribute values SHOULD NOT contain bytes values.
     * The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
     * double values.
     * The attribute values SHOULD NOT contain kvlist values.
     * The behavior of software that receives attributes containing such values can be unpredictable.
     * These restrictions can change in a minor release.
     * The restrictions take origin from the OpenTelemetry specification:
     * https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.KeyValueAndUnit attribute_table = 6;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\KeyValueAndUnit[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setAttributeTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\KeyValueAndUnit::class);
        $this->attribute_table = $arr;

        return $this;
    }

    /**
     * Stacks referenced by samples via Sample.stack_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Stack stack_table = 7;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getStackTable()
    {
        return $this->stack_table;
    }

    /**
     * Stacks referenced by samples via Sample.stack_index.
     *
     * Generated from protobuf field <code>repeated .opentelemetry.proto.profiles.v1development.Stack stack_table = 7;</code>
     * @param \Opentelemetry\Proto\Profiles\V1development\Stack[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setStackTable($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Opentelemetry\Proto\Profiles\V1development\Stack::class);
        $this->stack_table = $arr;

        return $this;
    }

}

