/** * @file cached_value.h * Hold a cached value. * * @remark Copyright 2005 OProfile authors * @remark Read the file COPYING * * @author John Levon */ #ifndef CACHED_VALUE_H #define CACHED_VALUE_H #include "op_exception.h" /** * Hold a single value, returning a cached value if there is one. */ template <class T> class cached_value { public: cached_value() : set(false) {} typedef T value_type; /// return the cached value value_type const get() const { if (!set) throw op_fatal_error("cached value not set"); return value; } /// return true if a value is cached bool cached() const { return set; } /// set the contained value value_type const reset(value_type const & val) { value = val; set = true; return value; } private: /// the cached value value_type value; /// is the value valid? bool set; }; #endif /* !CACHED_VALUE_H */