34 lines
548 B
C
34 lines
548 B
C
|
//
|
||
|
// MutableRawBuffer.h
|
||
|
// VisionCamera
|
||
|
//
|
||
|
// Created by Marc Rousavy on 17.01.24.
|
||
|
// Copyright © 2024 mrousavy. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
namespace vision {
|
||
|
|
||
|
template <typename F> struct FinalAction {
|
||
|
|
||
|
public:
|
||
|
FinalAction(F f) : clean_{f} {}
|
||
|
~FinalAction() {
|
||
|
if (enabled_)
|
||
|
clean_();
|
||
|
}
|
||
|
void disable() {
|
||
|
enabled_ = false;
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
F clean_;
|
||
|
bool enabled_ = true;
|
||
|
};
|
||
|
|
||
|
} // namespace vision
|
||
|
|
||
|
template <typename F> vision::FinalAction<F> finally(F f) {
|
||
|
return vision::FinalAction<F>(std::move(f));
|
||
|
}
|