diff --git a/alib2algo/src/automaton/generate/NumberOfSymbolsAutomaton.cpp b/alib2algo/src/automaton/generate/NumberOfSymbolsAutomaton.cpp index 1ba72638c47f8f2fad729d7741931999e77cb66a..70487678f0b4b582696c246bc0034ffb54f8841e 100644 --- a/alib2algo/src/automaton/generate/NumberOfSymbolsAutomaton.cpp +++ b/alib2algo/src/automaton/generate/NumberOfSymbolsAutomaton.cpp @@ -7,8 +7,12 @@ namespace automaton::generate { +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + automaton::NFA < std::string, unsigned > NumberOfSymbolsAutomaton::generateNFA ( size_t modulo, size_t alphabetSize, bool randomizedAlphabet, char symbol, size_t final_modulo ) { - if ( alphabetSize > 26 ) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big alphabet."); if ( alphabetSize < 1 ) diff --git a/alib2algo/src/automaton/generate/RandomTreeAutomatonFactory.cpp b/alib2algo/src/automaton/generate/RandomTreeAutomatonFactory.cpp index 385ec237505e13e1819854d608e507a6e891fbdf..38f56b280b2c44a8b2c969b1cd30e630a0b6704d 100644 --- a/alib2algo/src/automaton/generate/RandomTreeAutomatonFactory.cpp +++ b/alib2algo/src/automaton/generate/RandomTreeAutomatonFactory.cpp @@ -3,8 +3,12 @@ namespace automaton::generate { +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + automaton::NFTA < std::string, unsigned > RandomTreeAutomatonFactory::generateNFTA( size_t statesCount, size_t alphabetSize, size_t maxRank, bool randomizedAlphabet, double density ) { - if(alphabetSize > 26) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big alphabet."); if(alphabetSize < 1) diff --git a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp index a8b0bb0a4b514a312fa1801e42d3cd8f61629b87..a379e509b79e6d6583d5cc26ce776695188c9892 100644 --- a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp +++ b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp @@ -3,8 +3,12 @@ namespace grammar::generate { +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + grammar::CFG < std::string, std::string > grammar::generate::RandomGrammarFactory::generateCFG ( size_t nonterminalsCount, size_t terminalsCount, bool randomizedAlphabet, double density ) { - if(terminalsCount > 26) + if ( terminalsCount > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big terminals count."); ext::deque < std::string > terminals; @@ -16,7 +20,7 @@ grammar::CFG < std::string, std::string > grammar::generate::RandomGrammarFactor terminals.resize ( terminalsCount ); - if(nonterminalsCount > 26) + if ( nonterminalsCount > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big nonterminals count."); ext::deque < std::string > nonterminals; diff --git a/alib2algo/src/regexp/generate/RandomRegExpFactory.cpp b/alib2algo/src/regexp/generate/RandomRegExpFactory.cpp index eaed41e1519cd03586a6817ed18b4a4bbc5698b3..5f27ce8da5944e0da2caf2cdaff02c15473e22c9 100644 --- a/alib2algo/src/regexp/generate/RandomRegExpFactory.cpp +++ b/alib2algo/src/regexp/generate/RandomRegExpFactory.cpp @@ -9,8 +9,12 @@ namespace regexp::generate { +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + regexp::UnboundedRegExp < std::string > regexp::generate::RandomRegExpFactory::generateUnboundedRegExp( size_t leafNodes, size_t height, size_t alphabetSize, bool randomizedAlphabet ) { - if ( alphabetSize > 26 ) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException( "Too big alphabet." ); if ( alphabetSize <= 0 ) @@ -31,7 +35,7 @@ regexp::UnboundedRegExp < std::string > regexp::generate::RandomRegExpFactory::g template < class SymbolType > regexp::UnboundedRegExp < SymbolType > regexp::generate::RandomRegExpFactory::generateUnboundedRegExp( size_t leafNodes, size_t height, ext::set < SymbolType > alphabet) { - if( alphabet.size() > 26) + if ( alphabet.size() > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big alphabet."); if( alphabet.empty ( ) ) diff --git a/alib2algo/src/string/generate/RandomStringFactory.cpp b/alib2algo/src/string/generate/RandomStringFactory.cpp index 2b186580e2257a65488d06a069c10e861f770007..de8c8da0c908538d3a8f6487842a98e17edba086 100644 --- a/alib2algo/src/string/generate/RandomStringFactory.cpp +++ b/alib2algo/src/string/generate/RandomStringFactory.cpp @@ -20,8 +20,12 @@ string::LinearString < std::string > string::generate::RandomStringFactory::gene return string::LinearString < std::string > ( elems ); } +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + string::LinearString < std::string > string::generate::RandomStringFactory::generateLinearString ( size_t size, size_t alphabetSize, bool randomizedAlphabet ) { - if ( alphabetSize > 26 ) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException ( "Too big alphabet." ); if ( alphabetSize <= 0 ) diff --git a/alib2algo/src/tree/generate/RandomTreeFactory.cpp b/alib2algo/src/tree/generate/RandomTreeFactory.cpp index d66de9d5e98a5886632fc8337c6238b161a8dcd0..7e377e6d75fa0403e48493e0c556fa139b0d52b8 100644 --- a/alib2algo/src/tree/generate/RandomTreeFactory.cpp +++ b/alib2algo/src/tree/generate/RandomTreeFactory.cpp @@ -249,10 +249,15 @@ struct Node { }; +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + ext::vector < char > generateUnrankedAlphabet ( size_t maxAlphabetSize, bool randomizedAlphabet ) { - ext::vector < char > symbols ( 26 ); + ext::vector < char > symbols ( ENGLISH_ALPHABET_SIZE ); - for ( unsigned i = 0; i < 26; i++ ) symbols[i] = i + 'a'; + for ( unsigned i = 0; i < ENGLISH_ALPHABET_SIZE; i ++ ) + symbols [ i ] = i + 'a'; if ( randomizedAlphabet ) shuffle ( symbols.begin ( ), symbols.end ( ), ext::random_devices::semirandom ); diff --git a/alib2algo_experimental/src/automaton/RandomAutomatonFactory2.cpp b/alib2algo_experimental/src/automaton/RandomAutomatonFactory2.cpp index 9f87bb2a53a9a4495ec4489a841bae50086bff50..717d81b12985693f5d1e3a6264f5188d79d09984 100644 --- a/alib2algo_experimental/src/automaton/RandomAutomatonFactory2.cpp +++ b/alib2algo_experimental/src/automaton/RandomAutomatonFactory2.cpp @@ -31,8 +31,12 @@ size_t RandomAutomatonFactory2::randomTargetState ( size_t statesMinimal, size_t return -1; } +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + automaton::DFA < std::string, unsigned > RandomAutomatonFactory2::generateDFA( size_t statesMinimal, size_t statesDuplicates, size_t statesUnreachable, size_t statesUseless, size_t alphabetSize, bool randomizedAlphabet, double density ) { - if ( alphabetSize > 26 ) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big alphabet."); ext::vector < std::string > symbols; diff --git a/alib2algo_experimental/src/automaton/RandomAutomatonFactory3.cpp b/alib2algo_experimental/src/automaton/RandomAutomatonFactory3.cpp index 9709adf92122f863992c4615c2620801190b95d6..8c5c9fa2f4bdfce56d55c34f7e3106db39600227 100644 --- a/alib2algo_experimental/src/automaton/RandomAutomatonFactory3.cpp +++ b/alib2algo_experimental/src/automaton/RandomAutomatonFactory3.cpp @@ -3,8 +3,12 @@ namespace automaton::generate { +namespace { + constexpr unsigned ENGLISH_ALPHABET_SIZE = 26; +} + automaton::MultiInitialStateNFA < std::string, unsigned > RandomAutomatonFactory3::generate ( size_t statesMinimal, size_t statesDuplicates, size_t statesUnreachable, size_t statesUseless, size_t initialStates, size_t finalStates, size_t alphabetSize, bool randomizedAlphabet, double density, bool deterministic ) { - if ( alphabetSize > 26 ) + if ( alphabetSize > ENGLISH_ALPHABET_SIZE ) throw exception::CommonException("Too big alphabet."); if ( initialStates > statesUseless + statesMinimal )