Let us start here, from square one. No, from Zero!

This commit is contained in:
smpn2
2022-09-30 22:45:51 +09:00
parent 14215af0d1
commit b7a60638a4
1005 changed files with 303069 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
#pragma once
#include <objbase.h>
#include "util/logging.h"
template<typename T>
class CoTaskMemPtr {
public:
explicit CoTaskMemPtr() {
}
explicit CoTaskMemPtr(T *value) : _ptr(value) {
}
CoTaskMemPtr(const CoTaskMemPtr &) = delete;
CoTaskMemPtr &operator=(const CoTaskMemPtr &) = delete;
~CoTaskMemPtr() {
this->drop();
}
void drop() const noexcept {
if (_ptr) {
log_misc("co_task_mem_ptr", "dropping {}", fmt::ptr(_ptr));
CoTaskMemFree(_ptr);
}
}
T *data() const noexcept {
return _ptr;
}
T **ppv() noexcept {
this->drop();
return &_ptr;
}
T *operator->() const noexcept {
return _ptr;
}
private:
T *_ptr = nullptr;
};