Backup< T > Struct Template Reference

Class to backup a specific variable and restore it later. More...

#include <backup_type.hpp>

Public Member Functions

 Backup (T &original, const char *const file, const int line)
 Backup variable.
template<typename U >
 Backup (T &original, const U &new_value, const char *const file, const int line)
 Backup variable and switch to new value.
 ~Backup ()
 Check whether the variable was restored on object destruction.
bool IsValid () const
 Checks whether the variable was already restored.
const T & GetOriginalValue () const
 Returns the backupped value.
template<typename U >
void Change (const U &new_value)
 Change the value of the variable.
void Revert ()
 Revert the variable to its original value, but do not mark it as restored.
void Trash ()
 Trash the backup.
void Restore ()
 Restore the variable.
void Update ()
 Update the backup.
bool Verify () const
 Check whether the variable is currently equals the backup.

Private Attributes

T & original
bool valid
original_value
const char *const file
const int line

Detailed Description

template<typename T>
struct Backup< T >

Class to backup a specific variable and restore it later.

The variable is not restored automatically, but assertions make sure it is restored. You have to call either Trash() or Restore() exactly once.

Definition at line 23 of file backup_type.hpp.


Constructor & Destructor Documentation

template<typename T>
Backup< T >::Backup ( T &  original,
const char *const   file,
const int  line 
) [inline]

Backup variable.

Parameters:
original Variable to backup.
file Filename for debug output. Use FILE_LINE macro.
line Linenumber for debug output. Use FILE_LINE macro.

Definition at line 30 of file backup_type.hpp.

template<typename T>
template<typename U >
Backup< T >::Backup ( T &  original,
const U &  new_value,
const char *const   file,
const int  line 
) [inline]

Backup variable and switch to new value.

Parameters:
original Variable to backup.
new_value New value for variable.
file Filename for debug output. Use FILE_LINE macro.
line Linenumber for debug output. Use FILE_LINE macro.

Definition at line 40 of file backup_type.hpp.


Member Function Documentation

template<typename T>
template<typename U >
void Backup< T >::Change ( const U &  new_value  )  [inline]

Change the value of the variable.

While this does not touch the backup at all, it ensures that the variable is only modified while backupped.

Parameters:
new_value New value for variable.

Definition at line 86 of file backup_type.hpp.

Referenced by CompaniesGenStatistics(), CompaniesPayInterest(), DoCommandPInternal(), and AI::GameLoop().

template<typename T>
const T& Backup< T >::GetOriginalValue (  )  const [inline]

Returns the backupped value.

Returns:
value from the backup.

Definition at line 74 of file backup_type.hpp.

Referenced by CmdBuildIndustry().

template<typename T>
bool Backup< T >::IsValid (  )  const [inline]

Checks whether the variable was already restored.

Returns:
true if variable has already been restored.

Definition at line 65 of file backup_type.hpp.

Referenced by _GenerateWorld().

template<typename T>
void Backup< T >::Trash (  )  [inline]

Trash the backup.

The variable shall not be restored anymore.

Definition at line 105 of file backup_type.hpp.

Referenced by _GenerateWorld(), DoCommandPInternal(), and Backup< T >::Restore().

template<typename T>
void Backup< T >::Update (  )  [inline]

Update the backup.

That is trash the old value and make the current value of the variable the value to be restored later.

Definition at line 124 of file backup_type.hpp.

template<typename T>
bool Backup< T >::Verify (  )  const [inline]

Check whether the variable is currently equals the backup.

Returns:
true if equal

Definition at line 134 of file backup_type.hpp.

Referenced by DoCommandPInternal().


The documentation for this struct was generated from the following file:

Generated on Thu Jan 20 22:58:16 2011 for OpenTTD by  doxygen 1.6.1