Files
ps4-ezremote-client/source/util.h
T
2023-03-01 03:27:53 -08:00

105 lines
2.9 KiB
C++

#ifndef UTIL_H
#define UTIL_H
#include <string>
#include <vector>
#include <algorithm>
#include <stdarg.h>
#include <orbis/libkernel.h>
#include "lang.h"
namespace Util
{
static inline std::string &Ltrim(std::string &str, std::string chars)
{
str.erase(0, str.find_first_not_of(chars));
return str;
}
static inline std::string &Rtrim(std::string &str, std::string chars)
{
str.erase(str.find_last_not_of(chars) + 1);
return str;
}
// trim from both ends (in place)
static inline std::string &Trim(std::string &str, std::string chars)
{
return Ltrim(Rtrim(str, chars), chars);
}
static inline void ReplaceAll(std::string &data, std::string toSearch, std::string replaceStr)
{
size_t pos = data.find(toSearch);
while (pos != std::string::npos)
{
data.replace(pos, toSearch.size(), replaceStr);
pos = data.find(toSearch, pos + replaceStr.size());
}
}
static inline std::string ToLower(std::string s)
{
std::transform(s.begin(), s.end(), s.begin(),
[](unsigned char c)
{ return std::tolower(c); });
return s;
}
static inline std::vector<std::string> Split(const std::string &str, const std::string &delimiter)
{
std::string text = std::string(str);
std::vector<std::string> tokens;
size_t pos = 0;
while ((pos = text.find(delimiter)) != std::string::npos)
{
if (text.substr(0, pos).length() > 0)
tokens.push_back(text.substr(0, pos));
text.erase(0, pos + delimiter.length());
}
if (text.length() > 0)
{
tokens.push_back(text);
}
return tokens;
}
static inline void Notify(const char *fmt, ...)
{
OrbisNotificationRequest request;
va_list args;
va_start(args, fmt);
vsprintf(request.message, fmt, args);
va_end(args);
request.type = OrbisNotificationRequestType::NotificationRequest;
request.unk3 = 0;
request.useIconImageUri = 0;
request.targetId = -1;
sceKernelSendNotificationRequest(0, &request, sizeof(request), 0);
}
static inline void SetupPreviousFolder(const std::string &path, DirEntry *entry)
{
memset(entry, 0, sizeof(DirEntry));
if (path[path.length() - 1] == '/' && path.length() > 1)
{
strlcpy(entry->directory, path.c_str(), path.length() - 1);
}
else
{
sprintf(entry->directory, "%s", path.c_str());
}
sprintf(entry->name, "%s", "..");
sprintf(entry->path, "%s", entry->directory);
sprintf(entry->display_size, "%s", lang_strings[STR_FOLDER]);
entry->file_size = 0;
entry->isDir = true;
entry->selectable = false;
}
}
#endif