Skip to content
Snippets Groups Projects
Commit fdb97a3e authored by Scott Lahteine's avatar Scott Lahteine
Browse files

Add class and macro to save and auto-restore a variable

parent 433518de
Branches
Tags
Loading
......@@ -121,3 +121,16 @@ inline void serial_delay(const millis_t ms) {
#endif
void print_bin(const uint16_t val);
template<typename T>
class restorer {
T& ref_;
T val_;
public:
restorer(T& perm) : ref_(perm), val_(perm) {}
~restorer() { restore(); }
inline void restore() { ref_ = val_; }
};
#define REMEMBER(X) restorer<typeof(X)> X##_restorer(X)
#define RESTORE(X) X##_restorer.restore()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment