Comparative-Analysis-of-Speech-Synthesis-Models
/
TensorFlowTTS
/examples
/cppwin
/TensorflowTTSCppInference
/ext
/ZCharScanner.cpp
| using namespace std; | |
| int ZStringDelimiter::key_search(const GString& s, const GString& key) | |
| { | |
| int count = 0; | |
| size_t pos = 0; | |
| while ((pos = s.find(key, pos)) != GString::npos) { | |
| ++count; | |
| ++pos; | |
| } | |
| return count; | |
| } | |
| void ZStringDelimiter::UpdateTokens() | |
| { | |
| if (!m_vDelimiters.size() || m_sString == "") | |
| return; | |
| m_vTokens.clear(); | |
| vector<GString>::iterator dIt = m_vDelimiters.begin(); | |
| while (dIt != m_vDelimiters.end()) | |
| { | |
| GString delimiter = *dIt; | |
| DelimStr(m_sString, delimiter, true); | |
| ++dIt; | |
| } | |
| } | |
| void ZStringDelimiter::DelimStr(const GString & s, const GString & delimiter, const bool & removeEmptyEntries) | |
| { | |
| BarRange(0, s.length()); | |
| for (size_t start = 0, end; start < s.length(); start = end + delimiter.length()) | |
| { | |
| size_t position = s.find(delimiter, start); | |
| end = position != GString::npos ? position : s.length(); | |
| GString token = s.substr(start, end - start); | |
| if (!removeEmptyEntries || !token.empty()) | |
| { | |
| if (token != s) | |
| m_vTokens.push_back(token); | |
| } | |
| Bar(position); | |
| } | |
| // dadwwdawdaawdwadwd | |
| } | |
| void ZStringDelimiter::BarRange(const int & min, const int & max) | |
| { | |
| if (PgBar) | |
| m_pBar->SetRange32(min, max); | |
| } | |
| void ZStringDelimiter::Bar(const int & pos) | |
| { | |
| if (PgBar) | |
| m_pBar->SetPos(pos); | |
| } | |
| ZStringDelimiter::ZStringDelimiter() | |
| { | |
| m_sString = ""; | |
| tokenIndex = 0; | |
| PgBar = false; | |
| } | |
| bool ZStringDelimiter::GetFirstToken(GString & in_out) | |
| { | |
| if (m_vTokens.size() >= 1) { | |
| in_out = m_vTokens[0]; | |
| return true; | |
| } | |
| else { | |
| return false; | |
| } | |
| } | |
| bool ZStringDelimiter::GetNextToken(GString & in_sOut) | |
| { | |
| if (tokenIndex > m_vTokens.size() - 1) | |
| return false; | |
| in_sOut = m_vTokens[tokenIndex]; | |
| ++tokenIndex; | |
| return true; | |
| } | |
| GString ZStringDelimiter::operator[](const size_t & in_index) | |
| { | |
| if (in_index > m_vTokens.size()) | |
| throw std::out_of_range("ZStringDelimiter tried to access token higher than size"); | |
| return m_vTokens[in_index]; | |
| } | |
| GString ZStringDelimiter::Reassemble(const GString& delim, const int& nelem) | |
| { | |
| GString Result = ""; | |
| TokenIterator RasIt = m_vTokens.begin(); | |
| int r = 0; | |
| if (nelem == -1) { | |
| while (RasIt != m_vTokens.end()) | |
| { | |
| if (r != 0) | |
| Result.append(delim); | |
| Result.append(*RasIt); | |
| ++r; | |
| ++RasIt; | |
| } | |
| } | |
| else { | |
| while (RasIt != m_vTokens.end() && r < nelem) | |
| { | |
| if (r != 0) | |
| Result.append(delim); | |
| Result.append(*RasIt); | |
| ++r; | |
| ++RasIt; | |
| } | |
| } | |
| return Result; | |
| } | |
| GString ZStringDelimiter::Reassemble(const GString & delim, const std::vector<GString>& Strs,int nelem) | |
| { | |
| GString Result = ""; | |
| TokenIterator RasIt = Strs.begin(); | |
| int r = 0; | |
| if (nelem == -1) { | |
| while (RasIt != Strs.end()) | |
| { | |
| if (r != 0) | |
| Result.append(delim); | |
| Result.append(*RasIt); | |
| ++r; | |
| ++RasIt; | |
| } | |
| } | |
| else { | |
| while (RasIt != Strs.end() && r < nelem) | |
| { | |
| if (r != 0) | |
| Result.append(delim); | |
| Result.append(*RasIt); | |
| ++r; | |
| ++RasIt; | |
| } | |
| } | |
| return Result; | |
| } | |
| void ZStringDelimiter::AddDelimiter(const GString & in_Delim) | |
| { | |
| m_vDelimiters.push_back(in_Delim); | |
| UpdateTokens(); | |
| } | |
| ZStringDelimiter::~ZStringDelimiter() | |
| { | |
| } | |