blob: ec2b6277760d9da5372bd497a6783527f72c5697 [file] [log] [blame]
#pragma once
#include <memory>
#include <c10/util/string_view.h>
namespace caffe2 {
/**
* Patch the value of a knob during a unit test.
*
* This forces the knob to the specified value for as long as the KnobPatcher
* object exists. When the KnobPatcher object is destroyed the knob will revert
* to its previous value.
*/
class KnobPatcher {
public:
KnobPatcher(c10::string_view name, bool value);
~KnobPatcher();
KnobPatcher(KnobPatcher&&) noexcept;
KnobPatcher& operator=(KnobPatcher&&) noexcept;
KnobPatcher(const KnobPatcher&) = delete;
KnobPatcher& operator=(const KnobPatcher&) = delete;
private:
class PatchState;
std::unique_ptr<PatchState> state_;
};
} // namespace caffe2