# Concept PropertyMapConcept
Concept for maps from contained elements (such as graph vertices or index nodes) to values.

Defined in | <seqan/graph_types.h>
Signature | `concept PropertyMapConcept;`

## Interface Function Overview

- `void assignProperty(pm, d, val);`
  Assigns a property to an item in the property map.
- `TGetValue getProperty(pm, d);`
  Get method for an item's property.
- `TReference property(pm, d);`
  Accesses the property of an item in the property map.
- `void resize(pm, len[, val]);`
  Resize a sequence.

## Interface Metafunction Overview

- `GetValue<TPropertyMap>::Type`
  Returns the get-value type of the property map.
- `Reference<TPropertyMap>::Type`
  Returns the reference type of the property map.
- `Value<TPropertyMap>::Type`
  Returns the value type of the property map.

## Interface Functions Detail

### `void assignProperty(pm, d, val);`

Assigns a property to an item in the property map.

#### Parameters

`pm` | The property map
`d` | A vertex or edge descriptor that identifies the item in the property map.
`val` | The new value, where the type of the new value must match the value type of the property map.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

### `TGetValue getProperty(pm, d);`

Get method for an item's property.

#### Parameters

`pm` | The property map.
`d` | A vertex or edge descriptor that identifies the item in the property map.

#### Returns

`TGetValue` | Get-value to the item in the property map of type GetValue.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

### `TReference property(pm, d);`

Accesses the property of an item in the property map.

#### Parameters

`pm` | The property map.
`d` | A vertex or edge descriptor that identifies the item in the property map.

#### Returns

`TReference` | Reference to the item in the property map of type Reference.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

### `void resize(pm, len[, val]);`

Resize a sequence.

#### Parameters

`seq` | Sequence to resize.
`len` | Length to resize `seq` to.
`val` | When increasing the size, `val` is used to fill new entries. When omitted, `TValue()` is used where `TValue` is the Value type of the sequence.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### See Also

- resize

## Interface Metafunctions Detail

### `GetValue<TPropertyMap>::Type`

Returns the get-value type of the property map.

#### Template Parameters

`TPropertyMap` | The property map to query.

#### Returns

`Type` | The get-value type of the container.

### `Reference<TPropertyMap>::Type`

Returns the reference type of the property map.

#### Template Parameters

`TPropertyMap` | The property map to query.

### `Value<TPropertyMap>::Type`

Returns the value type of the property map.

#### Template Parameters

`TPropertyMap` | The property map to query.

#### Returns

`Type` | The element type of the container.

#### Dox Sources

    /*!
     * @concept PropertyMapConcept
     *
     * @headerfile <seqan/graph_types.h>
     *
     * @brief Concept for maps from contained elements (such as graph vertices or
     *        index nodes) to values.
     *
     * @signature concept PropertyMapConcept;
     *
     * @mfn PropertyMapConcept#Value
     *
     * @brief Returns the value type of the property map.
     *
     * @signature Value<TPropertyMap>::Type
     *
     * @tparam TPropertyMap The property map to query.
     *
     * @return Type The element type of the container.
     *
     * @see PropertyMapConcept#Value
     *
     * @mfn PropertyMapConcept#GetValue
     *
     * @brief Returns the get-value type of the property map.
     *
     * @signature GetValue<TPropertyMap>::Type
     *
     * @tparam TPropertyMap The property map to query.
     *
     * @return Type The get-value type of the container.
     *
     * @see PropertyMapConcept#GetValue
     *
     * @mfn PropertyMapConcept#Reference
     *
     * @brief Returns the reference type of the property map.
     *
     * @signature Reference<TPropertyMap>::Type
     *
     * @tparam TPropertyMap The property map to query.
     *
     * @see PropertyMapConcept#Reference
     *
     * @fn PropertyMapConcept#assignProperty
     *
     * @brief Assigns a property to an item in the property map.
     *
     * @signature void assignProperty(pm, d, val);
     *
     * @param[in,out] pm The property map
     * @param[in] d A vertex or edge descriptor that identifies the item in the
     *              property map.
     * @param[in] val The new value, where the type of the new value must match the
     *                value type of the property map.
     *
     * @fn PropertyMapConcept#property
     *
     * @brief Accesses the property of an item in the property map.
     *
     * @signature TReference property(pm, d);
     *
     * @param[in,out] pm The property map.
     * @param[in] d A vertex or edge descriptor that identifies the item in the
     *              property map.
     *
     * @return TReference Reference to the item in the property map of type @link
     *                    Reference @endlink.
     *
     * @fn PropertyMapConcept#getProperty
     *
     * @brief Get method for an item's property.
     *
     * @signature TGetValue getProperty(pm, d);
     *
     * @param[in,out] pm The property map.
     * @param[in] d A vertex or edge descriptor that identifies the item in the
     *              property map.
     *
     * @return TGetValue Get-value to the item in the property map of type @link
     *                   PropertyMapConcept#GetValue GetValue @endlink.
     *
     * @fn PropertyMapConcept#resize
     *
     * @brief Resize a sequence.
     *
     * @signature void resize(pm, len[, val]);
     *
     * @param[in,out] seq Sequence to resize.
     * @param[in] len Length to resize <tt>seq</tt> to.
     * @param[in] val When increasing the size, <tt>val</tt> is used to fill new
     *                entries. When omitted, <tt>TValue()</tt> is used where
     *                <tt>TValue</tt> is the @link ContainerConcept#Value @endlink
     *                type of the sequence.
     *
     * @see StringConcept#resize
     */