New upstream version 0.6.0

This commit is contained in:
alan (NyxTrail) 2025-04-07 14:57:51 +00:00
parent 5d2df91db3
commit dd44bc971f
7 changed files with 42 additions and 9 deletions

View File

@ -50,7 +50,7 @@ target_include_directories(
PUBLIC "./include"
PRIVATE "./src")
set_target_properties(hyprutils PROPERTIES VERSION ${hyprutils_VERSION}
SOVERSION 4)
SOVERSION 5)
target_link_libraries(hyprutils PkgConfig::deps)
# tests

View File

@ -1 +1 @@
0.5.1
0.6.0

View File

@ -144,7 +144,7 @@ namespace Hyprutils {
Impl_::impl_base* impl_ = nullptr;
private:
/*
/*
no-op if there is no impl_
may delete the stored object if ref == 0
may delete and reset impl_ if ref == 0 and weak == 0
@ -167,7 +167,7 @@ namespace Hyprutils {
impl_->inc();
}
/* destroy the pointed-to object
/* destroy the pointed-to object
if able, will also destroy impl */
void destroyImpl() {
// destroy the impl contents
@ -185,6 +185,11 @@ namespace Hyprutils {
static CSharedPointer<U> makeShared(Args&&... args) {
return CSharedPointer<U>(new U(std::forward<Args>(args)...));
}
template <typename T, typename U>
CSharedPointer<T> reinterpretPointerCast(const CSharedPointer<U>& ref) {
return CSharedPointer<T>(ref.impl_);
}
}
}

View File

@ -14,6 +14,11 @@ namespace Hyprutils {
void addEnv(const std::string& name, const std::string& value);
// only for async, sync doesn't make sense
void setStdoutFD(int fd);
// only for async, sync doesn't make sense
void setStderrFD(int fd);
/* Run the process, synchronously, get the stdout and stderr. False on fail */
bool runSync();
@ -31,6 +36,7 @@ namespace Hyprutils {
std::vector<std::string> args;
std::vector<std::pair<std::string, std::string>> env;
pid_t grandchildPid = 0;
int stdoutFD = -1, stderrFD = -1;
};
}
}

View File

@ -5,6 +5,9 @@
using namespace Hyprutils::Animation;
using namespace Hyprutils::Memory;
static const std::string DEFAULTBEZIERNAME = "default";
static const std::string DEFAULTSTYLE = "";
#define SP CSharedPointer
#define WP CWeakPointer
@ -43,8 +46,6 @@ bool Hyprutils::Animation::CBaseAnimatedVariable::enabled() const {
}
const std::string& CBaseAnimatedVariable::getBezierName() const {
static constexpr const std::string DEFAULTBEZIERNAME = "default";
if (const auto PCONFIG = m_pConfig.lock()) {
const auto PVALUES = PCONFIG->pValues.lock();
return PVALUES ? PVALUES->internalBezier : DEFAULTBEZIERNAME;
@ -54,8 +55,6 @@ const std::string& CBaseAnimatedVariable::getBezierName() const {
}
const std::string& CBaseAnimatedVariable::getStyle() const {
static constexpr const std::string DEFAULTSTYLE = "";
if (const auto PCONFIG = m_pConfig.lock()) {
const auto PVALUES = PCONFIG->pValues.lock();
return PVALUES ? PVALUES->internalStyle : DEFAULTSTYLE;

View File

@ -189,6 +189,11 @@ bool Hyprutils::OS::CProcess::runAsync() {
argsC.emplace_back(nullptr);
if (stdoutFD != -1)
dup2(stdoutFD, 1);
if (stderrFD != -1)
dup2(stderrFD, 2);
execvp(binary.c_str(), (char* const*)argsC.data());
_exit(0);
}
@ -230,3 +235,11 @@ const std::string& Hyprutils::OS::CProcess::stdErr() {
const pid_t Hyprutils::OS::CProcess::pid() {
return grandchildPid;
}
void Hyprutils::OS::CProcess::setStdoutFD(int fd) {
stdoutFD = fd;
}
void Hyprutils::OS::CProcess::setStderrFD(int fd) {
stderrFD = fd;
}

View File

@ -11,7 +11,7 @@ using namespace Hyprutils::Memory;
int main(int argc, char** argv, char** envp) {
SP<int> intPtr = makeShared<int>(10);
SP<int> intPtr2 = makeShared<int>(1337);
SP<int> intPtr2 = makeShared<int>(-1337);
UP<int> intUnique = makeUnique<int>(420);
int ret = 0;
@ -52,5 +52,15 @@ int main(int argc, char** argv, char** envp) {
EXPECT(weak.expired(), true);
EXPECT(weakUnique.expired(), true);
auto intPtr2AsUint = reinterpretPointerCast<unsigned int>(intPtr2);
EXPECT(intPtr2.strongRef(), 4);
EXPECT(intPtr2AsUint.strongRef(), 4);
EXPECT(*intPtr2AsUint > 0, true);
EXPECT(*intPtr2AsUint, (unsigned int)(int)-1337);
*intPtr2AsUint = 10;
EXPECT(*intPtr2AsUint, 10);
EXPECT(*intPtr2, 10);
return ret;
}