Skip to content

Commit

Permalink
SaveAndRestore: fix coding style and Doxygenify comments
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205959 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
gribozavr committed Apr 10, 2014
1 parent 8786570 commit 7aca663
Showing 1 changed file with 25 additions and 23 deletions.
48 changes: 25 additions & 23 deletions include/llvm/Support/SaveAndRestore.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,42 +6,44 @@
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides utility classes that uses RAII to save and restore
// values.
//
///
/// \file
/// This file provides utility classes that use RAII to save and restore
/// values.
///
//===----------------------------------------------------------------------===//

#ifndef LLVM_SUPPORT_SAVEANDRESTORE_H
#define LLVM_SUPPORT_SAVEANDRESTORE_H

namespace llvm {

// SaveAndRestore - A utility class that uses RAII to save and restore
// the value of a variable.
template<typename T>
struct SaveAndRestore {
SaveAndRestore(T& x) : X(x), old_value(x) {}
SaveAndRestore(T& x, const T &new_value) : X(x), old_value(x) {
X = new_value;
/// A utility class that uses RAII to save and restore the value of a variable.
template <typename T> struct SaveAndRestore {
SaveAndRestore(T &X) : X(X), OldValue(X) {}
SaveAndRestore(T &X, const T &NewValue) : X(X), OldValue(X) {
X = NewValue;
}
~SaveAndRestore() { X = old_value; }
T get() { return old_value; }
~SaveAndRestore() { X = OldValue; }
T get() { return OldValue; }

private:
T& X;
T old_value;
T &X;
T OldValue;
};

// SaveOr - Similar to SaveAndRestore. Operates only on bools; the old
// value of a variable is saved, and during the dstor the old value is
// or'ed with the new value.
/// Similar to \c SaveAndRestore. Operates only on bools; the old value of a
/// variable is saved, and during the dstor the old value is or'ed with the new
/// value.
struct SaveOr {
SaveOr(bool& x) : X(x), old_value(x) { x = false; }
~SaveOr() { X |= old_value; }
SaveOr(bool &X) : X(X), OldValue(X) { X = false; }
~SaveOr() { X |= OldValue; }

private:
bool& X;
const bool old_value;
bool &X;
const bool OldValue;
};

}
} // namespace llvm

#endif

0 comments on commit 7aca663

Please sign in to comment.