/*!
* @class SentinelRankDictionary
*
* @headerfile <seqan/index.h>
*
* @brief A rank dictionary, additional storing sentinel character which are not
* accounted for in a rank query.
*
* @signature template <typename TRankDictionary, typename TSpec> class
* SentinelRankDictionary;
*
* @tparam TSpec Specialisation
* @tparam TRankDictionary The rank dictionary of a text.
*
* @fn SentinelRankDictionary#clear
*
* @headerfile <seqan/index.h>
*
* @brief Clears the dictionary.
*
* @signature clear(dictionary)
*
* @param dictionary The rank dictionary to be cleared.
*
* @fn SentinelRankDictionary#sentinelPosition
*
* @headerfile <seqan/index.h>
*
* @brief Returns whether a specified position is a sentinel position.
*
* @signature sentinelPosition(dictionary, pos)
*
* @param pos The position. Types: @link UnsignedIntegerConcept @endlink
* @param dictionary The dictionary.
*
* @fn SentinelRankDictionary#empty
*
* @headerfile <seqan/index.h>
*
* @brief Returns whether or not the dictionary is empty.
*
* @signature empty(dictionary)
*
* @param dictionary The rank dictionary to be checked.
*
* @fn SentinelRankDictionary#getValue
*
* @headerfile <seqan/index.h>
*
* @brief Returns the character of a specified position.
*
* @signature getCharacter(dictionary, pos)
*
* @param pos The position
* @param dictionary The rank dictionary.
*
* @fn SentinelRankDictionary#getFibre
*
* @headerfile <seqan/index.h>
*
* @brief Returns a specific fibre of a dictionary.
*
* @signature getFibre(dictionary, fibreTag)
*
* @param fibreTag A tag that identifies the @link Fibre @endlink. Types: @link
* SentinelRankDictionaryFibres SentinelRankDictionary Fibres
* @endlink.
* @param dictionary The dictionary holding the fibre.
*
* @return TReturn A reference to the @link Fibre @endlink object.
*
* @fn SentinelRankDictionary#countOccurrences
*
* @headerfile <seqan/index.h>
*
* @brief Returns the number of occurrences of a specified character from the
* start to a specified position.
*
* @signature TSize countOccurrences(dictionary, character, pos);
*
* @param[in] dictionary The dictionary.
* @param[in] character The character.
* @param[in] pos The position (which is included in the counting).
*
* @return TSize The number of occurences (Metafunction: @link Index#Size
* @endlink).
*
* @fn SentinelRankDictionary#getSentinelSubstitute
*
* @headerfile <seqan/index.h>
*
* @brief Returns the character used to substitute the sentinel sign.
*
* @signature getSentinelSubstitute(dictionary)
*
* @param dictionary The dictionary.
*
* @fn SentinelRankDictionary#setSentinelSubstitute
*
* @headerfile <seqan/index.h>
*
* @brief Sets the character used to substitute the sentinel sign.
*
* @signature setSentinelSubstitute(dictionary, character)
*
* @param character The sentinel substitute.
* @param dictionary The dictionary.
*
* @fn SentinelRankDictionary#setSentinelPosition
*
* @headerfile <seqan/index.h>
*
* @brief Sets the sentinel position..
*
* @signature setSentinelPosition(dictionary, pos)
*
* @param pos The sentinel position. Types: @link UnsignedIntegerConcept
* @endlink
* @param dictionary The dictionary.
*
* @fn SentinelRankDictionary#createSentinelRankDictionary
*
* @headerfile <seqan/index.h>
*
* @brief This functions creates the dictionary structure.
*
* @signature void createSentinelRankDictionary(dictionary, text)
*
* @param text A text to be transfered into a dictionary. Types: @link String
* @endlink
* @param dictionary The dictionary.
*
* @fn SentinelRankDictionary#save
*
* @headerfile <seqan/index.h>
*
* @brief This functions saves a dictionary to disk.
*
* @signature save(dictionary, fileName [, openMode])
*
* @param openMode The combination of flags defining how the file should be
* opened.To open a file read-only, write-only or to read and
* write use <tt>OPEN_RDONLY</tt>, <tt>OPEN_WRONLY</tt>, or
* <tt>OPEN_RDWR</tt>.To create or overwrite a file add
* <tt>OPEN_CREATE</tt>.To append a file if existing add
* <tt>OPEN_APPEND</tt>.To circumvent problems, files are always
* opened in binary mode. Default: <tt>OPEN_RDWR | OPEN_CREATE |
* OPEN_APPEND</tt>
* @param dictionary The dictionary. Types: SentinelRankDictionary
* @param fileName C-style character string containing the file name.
*
* @return TReturn A <tt>bool</tt> which is <tt>true</tt> on success.
*
* @fn SentinelRankDictionary#open
*
* @headerfile <seqan/index.h>
*
* @brief This functions loads a dictionary from disk.
*
* @signature open(dictionary, fileName [, openMode])
*
* @param openMode The combination of flags defining how the file should be
* opened.To open a file read-only, write-only or to read and
* write use <tt>OPEN_RDONLY</tt>, <tt>OPEN_WRONLY</tt>, or
* <tt>OPEN_RDWR</tt>.To create or overwrite a file add
* <tt>OPEN_CREATE</tt>.To append a file if existing add
* <tt>OPEN_APPEND</tt>.To circumvent problems, files are always
* opened in binary mode. Default: <tt>OPEN_RDWR | OPEN_CREATE |
* OPEN_APPEND</tt>
* @param dictionary The dictionary. Types: SentinelRankDictionary
* @param fileName C-style character string containing the file name.
*
* @return TReturn A <tt>bool</tt> which is <tt>true</tt> on success.
*/