Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
321
Server/NFAuthTool/NFAuthClient/Nave/NFTokenizer.cpp
Normal file
321
Server/NFAuthTool/NFAuthClient/Nave/NFTokenizer.cpp
Normal file
@@ -0,0 +1,321 @@
|
||||
#include "NFTokenizer.h"
|
||||
|
||||
namespace Nave {
|
||||
|
||||
NFTokenizerA::NFTokenizerA(const std::string& _str, const std::string& _delim)
|
||||
{
|
||||
|
||||
if ((_str.length() == 0) || (_delim.length() == 0)) return;
|
||||
|
||||
token_str = _str;
|
||||
delim = _delim;
|
||||
|
||||
/*
|
||||
Remove sequential delimiter
|
||||
*/
|
||||
unsigned int curr_pos = 0;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos)
|
||||
{
|
||||
curr_pos += delim.length();
|
||||
|
||||
while(token_str.find(delim,curr_pos) == curr_pos)
|
||||
{
|
||||
token_str.erase(curr_pos,delim.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
Trim leading delimiter
|
||||
*/
|
||||
if (token_str.find(delim,0) == 0)
|
||||
{
|
||||
token_str.erase(0,delim.length());
|
||||
}
|
||||
|
||||
/*
|
||||
Trim ending delimiter
|
||||
*/
|
||||
curr_pos = 0;
|
||||
if ((curr_pos = token_str.rfind(delim)) != std::string::npos)
|
||||
{
|
||||
if (curr_pos != (token_str.length() - delim.length())) return;
|
||||
token_str.erase(token_str.length() - delim.length(),delim.length());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int NFTokenizerA::CountTokens()
|
||||
{
|
||||
|
||||
unsigned int prev_pos = 0;
|
||||
int num_tokens = 0;
|
||||
|
||||
if (token_str.length() > 0)
|
||||
{
|
||||
num_tokens = 0;
|
||||
|
||||
unsigned int curr_pos = 0;
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos)
|
||||
{
|
||||
num_tokens++;
|
||||
prev_pos = curr_pos;
|
||||
curr_pos += delim.length();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return ++num_tokens;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool NFTokenizerA::HasMoreTokens()
|
||||
{
|
||||
return (token_str.length() > 0);
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::NextToken()
|
||||
{
|
||||
|
||||
if (token_str.length() == 0)
|
||||
return "";
|
||||
|
||||
std::string tmp_str = "";
|
||||
unsigned int pos = token_str.find(delim,0);
|
||||
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos+delim.length(),token_str.length()-pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = "";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
int NFTokenizerA::NextIntToken()
|
||||
{
|
||||
return atoi(NextToken().c_str());
|
||||
}
|
||||
|
||||
double NFTokenizerA::NextFloatToken()
|
||||
{
|
||||
return atof(NextToken().c_str());
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::NextToken(const std::string& delimiter)
|
||||
{
|
||||
if (token_str.length() == 0)
|
||||
return "";
|
||||
|
||||
std::string tmp_str = "";
|
||||
unsigned int pos = token_str.find(delimiter,0);
|
||||
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos + delimiter.length(),token_str.length() - pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = "";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
std::string& NFTokenizerA::RemainingString()
|
||||
{
|
||||
return token_str;
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::FilterNextToken(const std::string& filterStr)
|
||||
{
|
||||
std::string tmp_str = NextToken();
|
||||
unsigned int currentPos = 0;
|
||||
|
||||
while((currentPos = tmp_str.find(filterStr,currentPos)) != std::string::npos)
|
||||
{
|
||||
tmp_str.erase(currentPos,filterStr.length());
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
|
||||
// unicode type
|
||||
NFTokenizerW::NFTokenizerW(const std::wstring& _str, const std::wstring& _delim)
|
||||
{
|
||||
|
||||
if ((_str.length() == 0) || (_delim.length() == 0)) return;
|
||||
|
||||
token_str = _str;
|
||||
delim = _delim;
|
||||
|
||||
/*
|
||||
Remove sequential delimiter
|
||||
*/
|
||||
unsigned int curr_pos = 0;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::wstring::npos)
|
||||
{
|
||||
curr_pos += delim.length();
|
||||
|
||||
while(token_str.find(delim,curr_pos) == curr_pos)
|
||||
{
|
||||
token_str.erase(curr_pos,delim.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
Trim leading delimiter
|
||||
*/
|
||||
if (token_str.find(delim,0) == 0)
|
||||
{
|
||||
token_str.erase(0,delim.length());
|
||||
}
|
||||
|
||||
/*
|
||||
Trim ending delimiter
|
||||
*/
|
||||
curr_pos = 0;
|
||||
if ((curr_pos = token_str.rfind(delim)) != std::wstring::npos)
|
||||
{
|
||||
if (curr_pos != (token_str.length() - delim.length())) return;
|
||||
token_str.erase(token_str.length() - delim.length(),delim.length());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int NFTokenizerW::CountTokens()
|
||||
{
|
||||
unsigned int prev_pos = 0;
|
||||
int num_tokens = 0;
|
||||
|
||||
if (token_str.length() > 0)
|
||||
{
|
||||
num_tokens = 0;
|
||||
|
||||
unsigned int curr_pos = 0;
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::wstring::npos)
|
||||
{
|
||||
num_tokens++;
|
||||
prev_pos = curr_pos;
|
||||
curr_pos += delim.length();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return ++num_tokens;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool NFTokenizerW::HasMoreTokens()
|
||||
{
|
||||
return (token_str.length() > 0);
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::NextToken()
|
||||
{
|
||||
|
||||
if (token_str.length() == 0)
|
||||
return L"";
|
||||
|
||||
std::wstring tmp_str = L"";
|
||||
unsigned int pos = token_str.find(delim,0);
|
||||
|
||||
if (pos != std::wstring::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos+delim.length(),token_str.length()-pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = L"";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
int NFTokenizerW::NextIntToken()
|
||||
{
|
||||
return _wtoi(NextToken().c_str());
|
||||
}
|
||||
|
||||
double NFTokenizerW::NextFloatToken()
|
||||
{
|
||||
return _wtof(NextToken().c_str());
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::NextToken(const std::wstring& delimiter)
|
||||
{
|
||||
if (token_str.length() == 0)
|
||||
return L"";
|
||||
|
||||
std::wstring tmp_str = L"";
|
||||
unsigned int pos = token_str.find(delimiter,0);
|
||||
|
||||
if (pos != std::wstring::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos + delimiter.length(),token_str.length() - pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = L"";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
std::wstring& NFTokenizerW::RemainingString()
|
||||
{
|
||||
return token_str;
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::FilterNextToken(const std::wstring& filterStr)
|
||||
{
|
||||
std::wstring tmp_str = NextToken();
|
||||
unsigned int currentPos = 0;
|
||||
|
||||
while((currentPos = tmp_str.find(filterStr,currentPos)) != std::wstring::npos)
|
||||
{
|
||||
tmp_str.erase(currentPos,filterStr.length());
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user