Mercurial > libanimone
comparison include/animone/util/osx.h @ 4:cce3a81b03bf
dep/animone: make osx code a bit less hacky
it would be nice if macos actually provided a real API for getting
window titles (outside of the accessibility api). the accessibility
API is a real mess to work with; the user has to give permission to
access it under newer versions.
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Fri, 12 Apr 2024 05:21:45 -0400 |
| parents | a76fa32bdc92 |
| children |
comparison
equal
deleted
inserted
replaced
| 2:97ea6a3e1954 | 4:cce3a81b03bf |
|---|---|
| 2 #define ANIMONE_ANIMONE_UTIL_OSX_H_ | 2 #define ANIMONE_ANIMONE_UTIL_OSX_H_ |
| 3 | 3 |
| 4 #include "animone/types.h" | 4 #include "animone/types.h" |
| 5 #include <cstdint> | 5 #include <cstdint> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <memory> | |
| 7 | 8 |
| 8 #include <CoreFoundation/CoreFoundation.h> | 9 #include <CoreFoundation/CoreFoundation.h> |
| 9 | 10 |
| 10 namespace animone::internal::osx::util { | 11 namespace animone::internal::osx::util { |
| 11 | |
| 12 template<typename T> | |
| 13 bool GetCFNumber(CFNumberRef num, T& result) { | |
| 14 if (!num) | |
| 15 return false; | |
| 16 | |
| 17 int64_t res; | |
| 18 if (!CFNumberGetValue(num, static_cast<CFNumberType>(4), &res)) | |
| 19 return false; | |
| 20 | |
| 21 result = static_cast<T>(res); | |
| 22 return true; | |
| 23 } | |
| 24 | |
| 25 template<typename T> | |
| 26 struct CFDeconstructor { | |
| 27 using pointer = T; | |
| 28 void operator()(pointer t) const { ::CFRelease(t); }; | |
| 29 }; | |
| 30 | |
| 31 template<typename T> | |
| 32 using CFPtr = vector<T, CFDecontructor<T>>; // type-id is vector<T, Alloc<T>> | |
| 33 | |
| 34 bool StringFromCFString(CFStringRef string, std::string& result); | |
| 35 | 12 |
| 36 bool GetProcessName(pid_t pid, std::string& result); | 13 bool GetProcessName(pid_t pid, std::string& result); |
| 37 | 14 |
| 38 } // namespace animone::internal::osx::util | 15 } // namespace animone::internal::osx::util |
| 39 | 16 |
