# Class ProfileChar
Alphabet type for profiles over another alphabet.

Defined in | <seqan/basic.h>
Signature | `template <typename TValue[, typename TCount[, typename TSpec]]> class ProfileChar;`

## Template Parameters

`TValue` | The underlying alphabet type.
`TCount` | The type to use for counting, default: `unsigned int`.
`TSpec` | Specialization tag, default: `void`

## Interface Function Overview

- `bool empty(c);`
  Check whether there are only gaps in the representation of the ProfileChar.
- `TSize getMaxIndex(c);`
  Return number of dominating entry in ProfileChar.
- `TCount totalCount(c);`
  Return sum of counts in ProfileChar.

## Interface Metafunction Overview

- `SourceValue<T>::Type`
  Returns underlying value for ProfileChar.
- `ValueSize<T>::VALUE;`
  Number of different values a value type object can have.

## Member Variable Overview

- `VariableType ProfileChar::count[]`
  Array of ValueSize elements, giving counts in profile.

## Interface Functions Detail

### `bool empty(c);`

Check whether there are only gaps in the representation of the ProfileChar.

#### Parameters

`c` | ProfileChar to query.

#### Returns

`bool` | Whether or not the ProfileChar only contains gaps.

#### Data Races

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

### `TSize getMaxIndex(c);`

Return number of dominating entry in ProfileChar.

#### Parameters

`c` | ProfileChar to query for its dominating entry.

#### Returns

`TSize` | index (with the ordValue) of the dominating character in `c`

#### Data Races

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

### `TCount totalCount(c);`

Return sum of counts in ProfileChar.

#### Parameters

`c` | ProfileChar to query.

#### Returns

`TCount` | Total number of characters represented by `c`.

#### Data Races

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

## Interface Metafunctions Detail

### `SourceValue<T>::Type`

Returns underlying value for ProfileChar.

#### Template Parameters

`T` | Type to query.

#### Returns

`Type` | The type of the underlying character.

#### Examples

    typedef ProfileChar<Dna5>               TProfileChar;
    typedef SourceValue<TProfileChar>::Type TType;  // Is Dna.

### `ValueSize<T>::VALUE;`

Number of different values a value type object can have.

#### Template Parameters

`T` | The type to query.

#### Returns

`VALUE` | Number of different values T can have.

## Member Variables Detail

### `VariableType ProfileChar::count[]`

Array of ValueSize elements, giving counts in profile.

#### Dox Sources

    /*!
     * @class ProfileChar
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Alphabet type for profiles over another alphabet.
     *
     * @signature template <typename TValue[, typename TCount[, typename TSpec]]>
     *            class ProfileChar;
     *
     * @tparam TValue The underlying alphabet type.
     * @tparam TCount The type to use for counting, default: <tt>unsigned int</tt>.
     * @tparam TSpec Specialization tag, default: <tt>void</tt>
     *
     * @mfn ProfileChar#ValueSize
     *
     * @brief Number of different values a value type object can have.
     *
     * @signature ValueSize<T>::VALUE;
     *
     * @tparam T The type to query.
     *
     * @return VALUE Number of different values T can have.
     *
     * @mfn ProfileChar#SourceValue
     *
     * @brief Returns underlying value for ProfileChar.
     *
     * @signature SourceValue<T>::Type
     *
     * @tparam T Type to query.
     *
     * @return Type The type of the underlying character.
     *
     * @section Examples
     *
     * @code{.cpp}
     * typedef ProfileChar<Dna5>               TProfileChar;
     * typedef SourceValue<TProfileChar>::Type TType;  // Is Dna.
     * @endcode
     *
     *
     * @var VariableType ProfileChar::count[];
     *
     * @brief Array of ValueSize elements, giving counts in profile.
     *
     * @fn ProfileChar#empty
     *
     * @brief Check whether there are only gaps in the representation of the
     *        ProfileChar.
     *
     * @signature bool empty(c);
     *
     * @param c ProfileChar to query.
     *
     * @return bool Whether or not the ProfileChar only contains gaps.
     *
     * @fn ProfileChar#getMaxIndex
     *
     * @brief Return number of dominating entry in ProfileChar.
     *
     * @signature TSize getMaxIndex(c);
     *
     * @param[in] c ProfileChar to query for its dominating entry.
     *
     * @return TSize index (with the @link FiniteOrderedAlphabetConcept#ordValue
     *               @endlink) of the dominating character in <tt>c</tt>
     *
     * @fn ProfileChar#totalCount
     *
     * @brief Return sum of counts in ProfileChar.
     *
     * @signature TCount totalCount(c);
     *
     * @param[in] c ProfileChar to query.
     *
     * @return TCount Total number of characters represented by <tt>c</tt>.
     */