Hyprland/src/helpers/MiscFunctions.hpp

51 lines
2.4 KiB
C++
Raw Normal View History

2022-03-28 16:10:30 +02:00
#pragma once
#include <optional>
2023-08-07 13:35:19 +02:00
#include <string>
#include <wayland-server.h>
#include "math/Math.hpp"
#include <vector>
2023-09-06 12:51:36 +02:00
#include <format>
#include "../SharedDefs.hpp"
#include "../macros.hpp"
2022-03-28 16:10:30 +02:00
struct SCallstackFrameInfo {
void* adr = nullptr;
std::string desc;
};
struct SWorkspaceIDName {
WORKSPACEID id = WORKSPACE_INVALID;
std::string name;
};
std::string absolutePath(const std::string&, const std::string&);
void addWLSignal(wl_signal*, wl_listener*, void* pOwner, const std::string& ownerString);
2024-01-19 16:20:22 +01:00
void removeWLSignal(wl_listener*);
std::string escapeJSONStrings(const std::string& str);
bool isDirection(const std::string&);
bool isDirection(const char&);
SWorkspaceIDName getWorkspaceIDNameFromString(const std::string&);
std::optional<std::string> cleanCmdForWorkspace(const std::string&, std::string);
float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, const Vector2D& p2);
void logSystemInfo();
std::string execAndGet(const char*);
int64_t getPPIDof(int64_t pid);
int64_t configStringToInt(const std::string&);
Vector2D configStringToVector2D(const std::string&);
std::optional<float> getPlusMinusKeywordResult(std::string in, float relative);
double normalizeAngleRad(double ang);
std::vector<SCallstackFrameInfo> getBacktrace();
2023-09-06 12:51:36 +02:00
void throwError(const std::string& err);
bool envEnabled(const std::string& env);
2024-05-01 17:41:17 +02:00
int allocateSHMFile(size_t len);
bool allocateSHMFilePair(size_t size, int* rw_fd_ptr, int* ro_fd_ptr);
2023-09-06 12:51:36 +02:00
template <typename... Args>
[[deprecated("use std::format instead")]] std::string getFormat(std::format_string<Args...> fmt, Args&&... args) {
// no need for try {} catch {} because std::format_string<Args...> ensures that vformat never throw std::format_error
// because any suck format specifier will cause a compilation error
// this is actually what std::format in stdlib does
return std::vformat(fmt.get(), std::make_format_args(args...));
}