/*
 * BWTBoyerMoore.cpp
 *
 *  Created on: 19. 02. 2021
 *      Author: Martin Prokopic
 */

#include <registration/AlgoRegistration.hpp>
#include "BWTBoyerMoore.h"

namespace {

auto BWTBoyerMoore = registration::AbstractRegister < stringology::exact::BWTBoyerMoore,
        ext::set < unsigned int >,
        const string::LinearStringTerminatingSymbolBWT < > &,
        const string::LinearString < > & > ( stringology::exact::BWTBoyerMoore::match ).setDocumentation (
        "Run Boyer-Moore algorithm to find occurrences of pattern in subject (a BWT encoded string).\n"
        "\n"
        "@tparam SymbolType\n"
        "@param subject the input BWT-encoded string\n"
        "@param pattern the pattern to search for\n"
        "@return indices of occurrences of pattern in the original (decoded) text, starting at 0" );

auto BWTBoyerMooreWithData = registration::AbstractRegister < stringology::exact::BWTBoyerMoore,
        ext::set < unsigned int >,
        const string::LinearStringTerminatingSymbolBWT < > &,
        const string::LinearString < > &,
        const indexes::stringology::BWTAuxiliaryData < > & > ( stringology::exact::BWTBoyerMoore::match ).setDocumentation (
        "Run Boyer-Moore to find occurrences of pattern in subject (a BWT encoded string), reusing precomputed auxiliary data.\n"
        "Required data types are M_OCC_PREFIX_SUM, W_FORWARD_DECODE and I_FIRST_TO_TEXT.\n"
        "\n"
        "@tparam SymbolType\n"
        "@param subject the input BWT-encoded string\n"
        "@param pattern the pattern to search for\n"
        "@param data precomputed auxiliary data\n"
        "@return indices of occurrences of pattern in the original (decoded) text, starting at 0" );

} /* namespace */
