#ifndef BASE_WIN_SCOPED_LOCALALLOC_H_
#define BASE_WIN_SCOPED_LOCALALLOC_H_
#include <memory>
#include <utility>
#include "base/win/windows_types.h"
namespace base {
namespace win {
struct LocalAllocDeleter {
void operator()(void* ptr) const { ::LocalFree(ptr); }
};
template <typename T>
using ScopedLocalAllocTyped = std::unique_ptr<T, LocalAllocDeleter>;
using ScopedLocalAlloc = ScopedLocalAllocTyped<void>;
template <typename T>
ScopedLocalAllocTyped<T> TakeLocalAlloc(T*& ptr) {
return ScopedLocalAllocTyped<T>(std::exchange(ptr, nullptr));
}
}
}
#endif