Browse Source

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

pull/1/head
Scott Lahteine 6 years ago
parent
commit
fdb97a3e9c
  1. 13
      Marlin/src/core/utility.h

13
Marlin/src/core/utility.h

@ -121,3 +121,16 @@ inline void serial_delay(const millis_t ms) {
#endif #endif
void print_bin(const uint16_t val); 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()

Loading…
Cancel
Save