Files
mcpe/source/common/Util.cpp
2023-08-28 11:01:12 +03:00

67 lines
1.4 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include <stdarg.h>
#include "Util.hpp"
std::string Util::stringTrim(const std::string& str, const std::string& filter, bool a4, bool a5)
{
if (str.empty() || filter.empty())
return "";
// don't know what the hell this does. TODO: clean this crap up
if (!a4 && !a5)
return "";
int startIndex = 0, endIndex = int(str.size()) - 1;
// @TODO: Is this accurate?
if (a4)
{
while (startIndex < endIndex && strchr(filter.c_str(), str[startIndex]))
{
startIndex++;
}
}
if (a5)
{
while (startIndex < endIndex && strchr(filter.c_str(), str[endIndex]))
{
endIndex--;
}
}
return str.substr(startIndex, endIndex + 1 - startIndex);
}
std::string Util::stringTrim(const std::string& str)
{
return stringTrim(str, " \t\n\r", true, true);
}
std::string Util::vformat(const char *fmt, va_list argPtr)
{
char str[8192];
vsnprintf(str, sizeof(str), fmt, argPtr);
return std::string(str);
}
std::string Util::format(const char *fmt, ...)
{
std::string str;
va_list argList;
va_start(argList, fmt);
str = vformat(fmt, argList);
va_end(argList);
return str;
}