diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp index 84f6f7bea4bb8ab89506c600b435a8dd2232b2c4..bbf729c66810c7c49ff8c7ecbcee8c2e837f7fb2 100644 --- a/aarbology2/src/aarbology.cpp +++ b/aarbology2/src/aarbology.cpp @@ -56,6 +56,8 @@ int main ( int argc, char * argv[] ) { allowed.push_back ( "exactSubtreeRepeatsNaive" ); allowed.push_back ( "compressedBitParallelIndex" ); allowed.push_back ( "fullAndLinearIndex" ); + + allowed.push_back ( "badCharacterShiftTable" ); TCLAP::ValuesConstraint < std::string > allowedVals ( allowed ); TCLAP::ValueArg < std::string > algorithm ( "a", "algorithm", "Execute algorithm", false, "exactSubtreeMatch", & allowedVals ); @@ -281,6 +283,18 @@ int main ( int argc, char * argv[] ) { measurements::start ( "Output write", measurements::Type::AUXILIARY ); alib::XmlDataFactory::toStdout ( fullAndLinearIndex ); + } else if ( algorithm.getValue ( ) == "badCharacterShiftTable" ) { + tree::RankedTreeWrapper pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); + + measurements::end ( ); + measurements::start ( "Algorithm", measurements::Type::MAIN ); + + std::map < std::ranked_symbol < DefaultSymbolType, DefaultRankType >, size_t > bcs = tree::properties::BadCharacterShiftTable::bcs ( pattern ); + + measurements::end ( ); + measurements::start ( "Output write", measurements::Type::AUXILIARY ); + + alib::XmlDataFactory::toStdout ( bcs ); } else { throw exception::CommonException ( "Invalid algorithm" ); }