/*!
* @class RightArrayBinaryTree
*
* @headerfile <seqan/index.h>
*
* @brief A special format to encode the structure of a wavelet tree. The
* structure is very space efficient because only one position is stored
* which encodes where the left and right subtree of a given node exist.
*
* @signature template <typename TChar, typename TSpec> class
* RightArrayBinaryTree;
*
* @tparam TValue The type of the stored characters.
* @tparam TSpec The wavelet tree structure specialisation. Default: void.
*
* @fn RightArrayBinaryTree#clear
*
* @headerfile <seqan/index.h>
*
* @brief Resets a right-array-binary tree.
*
* @signature void clear(rightArrayBinaryTree);
*
* @param[in,out] rightArrayBinaryTree The RightArrayBinaryTree to be cleared.
*
* @fn RightArrayBinaryTree#createRightArrayBinaryTree
*
* @headerfile <seqan/index.h>
*
* @brief Computes the right-array-binary tree of a text.
*
* @signature void createRightArrayBinaryTree(rightArrayBinaryTree, text);
*
* @param[in] rightArrayBinaryTree A wavelet tree structure.
* @param[in] text A @link TextConcept text @endlink.
*
* @fn RightArrayBinaryTree#empty
*
* @headerfile <seqan/index.h>
*
* @brief Checks whether or not a right-array-binary tree contains any elements.
*
* @signature bool empty(rightArrayBinaryTree);
*
* @param[in] rightArrayBinaryTree The right-array-binary tree to be queried.
*
* @return bool Returns <tt>true</tt> if the rank-support-bit string is empty
* and <tt>false</tt> otherwise.
*
* @fn RightArrayBinaryTree#getFibre
*
* @headerfile <seqan/index.h>
*
* @brief Returns a specific fibre of a right-array-binary tree.
*
* @signature TFibre getFibre(rightArrayBinaryTree, fibreTag);
*
* @param[in] rightArrayBinaryTree The container holding the fibre.
* @param[in] fibreTag A tag that identifies the @link Fibre @endlink. Types:
* @link RightArrayBinaryTreeFibres RightArrayBinaryTree
* Fibres @endlink.
*
* @return TFibre A reference to the @link Fibre @endlink object.
*
* @fn RightArrayBinaryTree#length
*
* @brief Returns the number of nodes in the right-array-binary-tree.
*
* @signature TSize length(rightArrayBinaryTree);
*
* @param[in] tree The right-array-binary-tree to query for its size.
*
* @return TSize The number of nodes in the right-array-binary-tree.
*
* @fn RightArrayBinaryTree#open
*
* @headerfile <seqan/index.h>
*
* @brief This functions loads a @link RightArrayBinaryTree @endlink from disk.
*
* @signature bool open(rightArrayBinaryTree, fileName [, openMode])
*
* @param[in,out] rightArrayBinaryTree The RightArrayBinaryTree.
* @param[in] fileName C-style character string containing the file name.
* @param[in] 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>.
*
* @return bool A <tt>bool</tt> which is <tt>true</tt> on success.
*
* @fn RightArrayBinaryTree#save
*
* @headerfile <seqan/index.h>
*
* @brief This functions saves a @link RightArrayBinaryTree @endlink to disk.
*
* @signature bool save(rightArrayBinaryTree, fileName [, openMode])
*
* @param[in,out] rightArrayBinaryTree The RightArrayBinaryTree.
* @param[in] fileName C-style character string containing the file name.
* @param[in] 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>.
*
* @return bool A <tt>bool</tt> which is <tt>true</tt> on success.
*
* @fn RightArrayBinaryTree#begin
*
* @headerfile <seqan/index.h>
*
* @brief The begin (root) of a @link RightArrayBinaryTree @endlink.
*
* @signature TIterator begin(rightArrayBinaryTree, iterSpec);
*
* @param[in] rightArrayBinaryTree The right-array-binary tree.
* @param[in] iterSpec A specialisation tag. Types: TopDown<>,
* TopDown<ParentLinks<> >.
*
* @return TIterator An iterator to the first item in <tt>object</tt>.
* Metafunctions: Metafunction.Iterator
*
* @fn RightArrayBinaryTree#end
*
* @headerfile <seqan/index.h>
*
* @brief The end (rigthmost leaf) of a @link RightArrayBinaryTree @endlink.
*
* @signature TIterator end(rightArrayBinaryTree, iterSpec);
*
* @param[in] rightArrayBinaryTree The right-array-binary tree.
* @param[in] iterSpec A specialisation tag. Types: TopDown<>,
* TopDown<ParentLinks<> >.
*
* @return TIterator An iterator to the first item in <tt>object</tt>.
* Metafunctions: Metafunction.Iterator
*/