Replaced boost::optional and boost::regex with STL implementations

Changes based on f0f6f61cab
dev
Tomasz Kapuściński 2023-08-09 17:58:48 +02:00
parent 0ef77132a0
commit f7a33bbeb0
13 changed files with 39 additions and 46 deletions

View File

@ -27,11 +27,11 @@
#include "common/system/system.h"
#include <boost/property_tree/ini_parser.hpp>
#include <memory>
#include <utility>
#include <cstring>
#include <boost/property_tree/ini_parser.hpp>
#include <boost/regex.hpp>
namespace bp = boost::property_tree;

View File

@ -33,7 +33,6 @@
#include <utility>
#include <cstring>
#include <boost/property_tree/ini_parser.hpp>
#include <boost/regex.hpp>
namespace bp = boost::property_tree;

View File

@ -26,16 +26,16 @@ static std::string FormatAssertRegexMatchError(const std::string& text,
}
RegexUtils::CAssertRegexMatchError::CAssertRegexMatchError(
const std::string& text, const std::string& pattern) NOEXCEPT
const std::string& text, const std::string& pattern) noexcept
: std::runtime_error(FormatAssertRegexMatchError(text, pattern))
{
}
boost::smatch RegexUtils::AssertRegexMatch(const std::string& text, const std::string& pattern)
std::smatch RegexUtils::AssertRegexMatch(const std::string& text, const std::string& pattern)
{
boost::regex regex(pattern);
boost::smatch matches;
bool ok = boost::regex_match(text, matches, regex);
std::regex regex(pattern);
std::smatch matches;
bool ok = std::regex_match(text, matches, regex);
if (!ok)
throw CAssertRegexMatchError(text, pattern);

View File

@ -20,8 +20,7 @@
#pragma once
#include <stdexcept>
#include <boost/regex.hpp>
#include <regex>
namespace RegexUtils
{
@ -30,10 +29,10 @@ class CAssertRegexMatchError : public std::runtime_error
{
public:
explicit CAssertRegexMatchError(const std::string& text,
const std::string& pattern) NOEXCEPT;
const std::string& pattern) noexcept;
};
//! Match string with regex and return list of matches; throw exception on mismatch
boost::smatch AssertRegexMatch(const std::string& text, const std::string& pattern);
std::smatch AssertRegexMatch(const std::string& text, const std::string& pattern);
} // namespace RegexUtils

View File

@ -30,7 +30,7 @@
#include <physfs.h>
#include <boost/regex.hpp>
#include <regex>
CResourceManager::CResourceManager(const char *argv0)
@ -57,7 +57,7 @@ CResourceManager::~CResourceManager()
std::string CResourceManager::CleanPath(const std::filesystem::path& path)
{
return boost::regex_replace(path.generic_u8string(), boost::regex("(.*)/\\.\\./"), "");
return std::regex_replace(path.generic_u8string(), std::regex("(.*)/\\.\\./"), "");
}

View File

@ -32,7 +32,6 @@
#include "object/object_type.h"
#include <SDL_keyboard.h>
#include <boost/regex.hpp>
#include <libintl.h>

View File

@ -36,11 +36,11 @@
#include <sstream>
#include <iomanip>
#include <set>
#include <regex>
#include <boost/algorithm/string/trim.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/regex.hpp>
CLevelParser::CLevelParser()
{
@ -174,9 +174,9 @@ void CLevelParser::Load()
// ignore comments
size_t pos = 0;
std::string linesuffix = line;
boost::regex commentRegex{ R"(("[^"]*")|('[^']*')|(//.*$))" };
boost::smatch matches;
while (boost::regex_search(linesuffix, matches, commentRegex))
std::regex commentRegex{ R"(("[^"]*")|('[^']*')|(//.*$))" };
std::smatch matches;
while (std::regex_search(linesuffix, matches, commentRegex))
{
if (matches[3].matched)
{

View File

@ -47,10 +47,7 @@
#include "ui/controls/interface.h"
#include "ui/controls/window.h"
#include <boost/regex.hpp>
#include <regex>
// Object's constructor.
@ -410,12 +407,12 @@ bool CAutoFactory::EventProcess(const Event &event)
{
Program* program = dynamic_cast<CProgramStorageObject&>(*vehicle).AddProgram();
if (boost::regex_match(m_program, boost::regex("[A-Za-z0-9_]+"))) // Public function name?
if (std::regex_match(m_program, std::regex("[A-Za-z0-9_]+"))) // Public function name?
{
std::string code = "extern void object::Start_"+m_program+"()\n{\n\t\n\t//Automatically generated by object.factory()\n\t"+m_program+"();\n\t\n}\n";
program->script->SendScript(code.c_str());
}
else if (boost::regex_match(m_program, boost::regex(".*\\.txt"))) // File name (with .txt extension)?
else if (std::regex_match(m_program, std::regex(".*\\.txt"))) // File name (with .txt extension)?
{
program->script->ReadScript(m_program.c_str());
}

View File

@ -46,10 +46,11 @@
#include "ui/controls/edit.h"
#include <boost/lexical_cast.hpp>
#include <algorithm>
#include <iomanip>
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
#include <regex>
CProgramStorageObjectImpl::CProgramStorageObjectImpl(ObjectInterfaceTypes& types, CObject* object)
: CProgramStorageObject(types),
@ -233,11 +234,11 @@ void CProgramStorageObjectImpl::SaveAllUserPrograms(const std::string& userSourc
std::string dir = userSource.substr(0, userSource.find_last_of("/"));
std::string file = userSource.substr(userSource.find_last_of("/")+1) + StrUtils::Format("%.3d([0-9]{3})\\.txt", m_programStorageIndex);
boost::regex regex(file);
std::regex regex(file);
for (const std::string& filename : CResourceManager::ListFiles(dir))
{
boost::smatch matches;
if (boost::regex_match(filename, matches, regex))
std::smatch matches;
if (std::regex_match(filename, matches, regex))
{
unsigned int id = boost::lexical_cast<unsigned int>(matches[1]);
if (id >= m_program.size() || !m_program[id]->filename.empty())
@ -296,11 +297,11 @@ void CProgramStorageObjectImpl::LoadAllProgramsForLevel(CLevelParserLine* levelS
std::string dir = userSource.substr(0, userSource.find_last_of("/"));
std::string file = userSource.substr(userSource.find_last_of("/")+1) + StrUtils::Format("%.3d([0-9]{3})\\.txt", m_programStorageIndex);
boost::regex regex(file);
std::regex regex(file);
for (const std::string& filename : CResourceManager::ListFiles(dir))
{
boost::smatch matches;
if (boost::regex_match(filename, matches, regex))
std::smatch matches;
if (std::regex_match(filename, matches, regex))
{
unsigned int i = boost::lexical_cast<unsigned int>(matches[1]);
Program* program = GetOrAddProgram(i);
@ -341,11 +342,11 @@ void CProgramStorageObjectImpl::SaveAllProgramsForSavedScene(CLevelParserLine* l
levelSourceLine->AddParam("scriptRunnable" + StrUtils::ToString<int>(i+1), std::make_unique<CLevelParserParam>(m_program[i]->runnable));
}
boost::regex regex(StrUtils::Format("prog%.3d([0-9]{3})\\.txt", m_programStorageIndex));
std::regex regex(StrUtils::Format("prog%.3d([0-9]{3})\\.txt", m_programStorageIndex));
for (const std::string& filename : CResourceManager::ListFiles(levelSource))
{
boost::smatch matches;
if (boost::regex_match(filename, matches, regex))
std::smatch matches;
if (std::regex_match(filename, matches, regex))
{
unsigned int id = boost::lexical_cast<unsigned int>(matches[1]);
if (id >= m_program.size() || !m_program[id]->filename.empty())

View File

@ -144,7 +144,7 @@ const std::vector<ExchangePostInfo>& CExchangePost::GetInfoList()
return m_infoList;
}
boost::optional<float> CExchangePost::GetInfoValue(const std::string& name)
std::optional<float> CExchangePost::GetInfoValue(const std::string& name)
{
for (auto& info : m_infoList)
{
@ -153,7 +153,7 @@ boost::optional<float> CExchangePost::GetInfoValue(const std::string& name)
return info.value;
}
}
return boost::none;
return std::nullopt;
}
bool CExchangePost::HasInfo(const std::string& name)

View File

@ -24,11 +24,10 @@
#include "object/auto/auto.h"
#include <optional>
#include <string>
#include <vector>
#include <boost/optional.hpp>
struct ExchangePostInfo
{
std::string name; //!< name of the information
@ -57,7 +56,7 @@ public:
bool SetInfo(const std::string& name, float value);
const std::vector<ExchangePostInfo>& GetInfoList();
boost::optional<float> GetInfoValue(const std::string& name);
std::optional<float> GetInfoValue(const std::string& name);
bool HasInfo(const std::string& name);
bool DeleteInfo(const std::string& name);

View File

@ -26,11 +26,10 @@
#include "CBot/CBot.h"
#include <memory>
#include <limits>
#include <memory>
#include <optional>
#include <string>
#include <boost/optional.hpp>
class COldObject;
class CTaskExecutorObject;
@ -128,5 +127,5 @@ protected:
CBot::CBotError m_error = CBot::CBotNoErr; // error (0=ok)
int m_cursor1 = 0;
int m_cursor2 = 0;
boost::optional<float> m_returnValue = boost::none;
std::optional<float> m_returnValue = std::nullopt;
};

View File

@ -2336,7 +2336,7 @@ bool CScriptFunctions::rReceive(CBotVar* var, CBotVar* result, int& exception, v
}
if ( !WaitForForegroundTask(script, result, exception) ) return false; // not finished
if ( script->m_returnValue == boost::none )
if ( !script->m_returnValue.has_value() )
{
result->SetValFloat(nanf(""));
}