# Class AnnotationStoreElement
Represents an annotation of a genomic feature.

Defined in | <seqan/store.h>
Signature | `template <typename TPos[, typename TSpec]> struct AnnotationStoreElement;`

## Template Parameters

`TPos` | The position type to use.
`TSpec` | The specializing type.

## Member Function Overview

- `AnnotationStoreElement::AnnotationStoreElement();`
  Constructor.

## Member Typedef Overview

- `typedef (...) TAnnotationStoreElement::TId;`
  Type of annotationId and contigId.
- `typedef (...) TAnnotationStoreElement::TPos;`
  Type of the beginPos and endPos.
- `typedef (...) TAnnotationStoreElement::TValues;`
  StringSet type of the values member.

## Member Variable Overview

- `TPos AnnotationStoreElement::beginPos`
  Begin position of the annotation in gap space.
- `TId AnnotationStoreElement::contigId`
  Refers to the contig in contigStore that the annotation is part of.
- `TPos AnnotationStoreElement::endPos`
  End position of the annotation in gap space.
- `TId AnnotationStoreElement::INVALID_ID`
  Constant to represent an invalid id.
- `TId AnnotationStoreElement::INVALID_POS`
  Constant to represent an invalid position.
- `TId AnnotationStoreElement::lastChildId`
  The id of the parent annotation.
- `TId AnnotationStoreElement::nextSiblingId`
  The id of the right sibling annotation.
- `TId AnnotationStoreElement::parentId`
  The id of the parent annotation.
- `TId AnnotationStoreElement::typeId`
  Refers to an entry in the annotationTypeStore.
- `TValues AnnotationStoreElement::values`
  StringSet that stores additional values addressed by keyId.

## Detailed Description

Value type of the annotationStore stirng. The id of an annotation (aka annotationId) is not stored explicitly as it is implicitly given byt he position in the annotationStore.

## Member Functions Detail

### `AnnotationStoreElement::AnnotationStoreElement();`

Constructor.

The default constructor sets all members to `INVALID_ID` and beginPos and endPos to `INVALID_POS`.

#### Data Races

Thread safety unknown!

## Member Typedef Detail

### `typedef (...) TAnnotationStoreElement::TId;`

Type of annotationId and contigId.

TId is the result of `Id<AnnotationStoreElement<> >::Type`, see Id.

### `typedef (...) TAnnotationStoreElement::TPos;`

Type of the beginPos and endPos.

### `typedef (...) TAnnotationStoreElement::TValues;`

StringSet type of the values member.

## Member Variables Detail

### `TPos AnnotationStoreElement::beginPos`

Begin position of the annotation in gap space.

If endPos < beginPos then the annotation feature is located on the reverse strand where beginPos and endPos are the corresponding positions on the forward strand.

### `TId AnnotationStoreElement::contigId`

Refers to the contig in contigStore that the annotation is part of.

### `TPos AnnotationStoreElement::endPos`

End position of the annotation in gap space.

If endPos < beginPos then the annotation feature is located on the reverse strand where beginPos and endPos are the corresponding positions on the forward strand.

### `TId AnnotationStoreElement::INVALID_ID`

Constant to represent an invalid id.

### `TId AnnotationStoreElement::INVALID_POS`

Constant to represent an invalid position.

### `TId AnnotationStoreElement::lastChildId`

The id of the parent annotation.

### `TId AnnotationStoreElement::nextSiblingId`

The id of the right sibling annotation.

### `TId AnnotationStoreElement::parentId`

The id of the parent annotation.

### `TId AnnotationStoreElement::typeId`

Refers to an entry in the annotationTypeStore.

There are some type ids predefined for commonly used types, e.g. $ANNO_GENE$. See FragmentStore::PredefinedAnnotationTypes.

### `TValues AnnotationStoreElement::values`

StringSet that stores additional values addressed by keyId.

The GFF and FTF file formats allow to define user-specific key-value pairs. The set of all keys addressed by keyId are stored in annotationKeyStore.

#### Dox Sources

    /*!
     * @class AnnotationStoreElement
     *
     * @headerfile <seqan/store.h>
     *
     * @brief Represents an annotation of a genomic feature.
     *
     * @signature template <typename TPos[, typename TSpec]> struct
     *            AnnotationStoreElement;
     *
     * @tparam TPos The position type to use.
     * @tparam TSpec The specializing type.
     *
     * Value type of the @link FragmentStore::annotationStore @endlink stirng. The
     * id of an annotation (aka annotationId) is not stored explicitly as it is
     * implicitly given byt he position in the @link FragmentStore::annotationStore
     * @endlink.
     *
     * @fn AnnotationStoreElement::AnnotationStoreElement()
     *
     * @brief Constructor.
     *
     * @signature AnnotationStoreElement::AnnotationStoreElement();
     *
     * The default constructor sets all members to <tt>INVALID_ID</tt> and beginPos
     * and endPos to <tt>INVALID_POS</tt>.
     *
     * @typedef AnnotationStoreElement::TId
     *
     * @brief Type of annotationId and contigId.
     *
     * @signature typedef (...) TAnnotationStoreElement::TId;
     *
     * TId is the result of <tt>Id&lt;AnnotationStoreElement&lt;&gt;
     * &gt;::Type</tt>, see @link Id @endlink.
     *
     * @typedef AnnotationStoreElement::TPos
     *
     * @brief Type of the @link AnnotationStoreElement::beginPos @endlink and @link
     *        AnnotationStoreElement::endPos @endlink.
     *
     * @signature typedef (...) TAnnotationStoreElement::TPos;
     *
     * @typedef AnnotationStoreElement::TValues
     *
     * @brief @link StringSet @endlink type of the @link
     *        AnnotationStoreElement::values @endlink member.
     *
     * @signature typedef (...) TAnnotationStoreElement::TValues;
     *
     * @var TId AnnotationStoreElement::INVALID_ID;
     *
     * @brief Constant to represent an invalid id.
     *
     * @var TId AnnotationStoreElement::INVALID_POS;
     *
     * @brief Constant to represent an invalid position.
     *
     * @var TId AnnotationStoreElement::contigId;
     *
     * @brief Refers to the contig in @link FragmentStore::contigStore @endlink that
     *        the annotation is part of.
     *
     * @var TId AnnotationStoreElement::typeId;
     *
     * @brief Refers to an entry in the @link FragmentStore::annotationTypeStore
     *        @endlink.
     *
     * There are some type ids predefined for commonly used types, e.g. $ANNO_GENE$.
     * See @link FragmentStore::PredefinedAnnotationTypes @endlink.
     *
     * @var TPos AnnotationStoreElement::beginPos;
     *
     * @brief Begin position of the annotation in gap space.
     *
     * If endPos &lt; beginPos then the annotation feature is located on the reverse
     * strand where beginPos and endPos are the corresponding positions on the
     * forward strand.
     *
     * @var TPos AnnotationStoreElement::endPos;
     *
     * @brief End position of the annotation in gap space.
     *
     * If endPos &lt; beginPos then the annotation feature is located on the reverse
     * strand where beginPos and endPos are the corresponding positions on the
     * forward strand.
     *
     * @var TValues AnnotationStoreElement::values;
     *
     * @brief @link StringSet @endlink that stores additional values addressed by
     *        keyId.
     *
     * The GFF and FTF file formats allow to define user-specific key-value pairs.
     * The set of all keys addressed by keyId are stored in @link
     * FragmentStore::annotationKeyStore @endlink.
     *
     * @var TId AnnotationStoreElement::parentId;
     *
     * @brief The id of the parent annotation.
     *
     * @var TId AnnotationStoreElement::nextSiblingId;
     *
     * @brief The id of the right sibling annotation.
     *
     * @var TId AnnotationStoreElement::lastChildId;
     *
     * @brief The id of the parent annotation.
     */