32 #include "../api_core.h"
47 template<
typename Type>
58 template<
typename Type>
68 : object(object), generation(-1)
73 : object(new
Resource_Impl<Type>(initial_value)), generation(-1)
79 return &
object->value;
84 return &
object->value;
89 bool updated = (generation !=
object->generation);
90 generation =
object->generation;
94 void set(
const Type &value)
96 object->value = value;
97 generation = ++
object->generation;
102 return object->value;
105 const Type &
get()
const
107 return object->value;
110 operator Type&() {
return object->value;}
111 operator const Type&()
const {
return object->value;}
113 const std::shared_ptr<Resource_Impl<Type> > &
handle()
const {
return object; }
123 std::shared_ptr<Resource_Impl<Type> > object;
Resource_Impl()
Definition: resource.h:51
bool operator!=(const Resource &other) const
Definition: resource.h:120
Resource proxy of a specific type.
Definition: resource.h:59
Resource(const Type &initial_value)
Definition: resource.h:72
Resource(std::shared_ptr< Resource_Impl< Type > > object)
Definition: resource.h:67
bool operator<=(const Resource &other) const
Definition: resource.h:116
Resource()
Definition: resource.h:62
bool operator==(const Resource &other) const
Definition: resource.h:119
bool operator>(const Resource &other) const
Definition: resource.h:117
Resource_Impl(const Type &initial_value)
Definition: resource.h:52
Type value
Definition: resource.h:53
Definition: resource.h:41
const Type * operator->() const
Definition: resource.h:82
virtual ~Resource_BaseImpl()
Definition: resource.h:44
bool operator>=(const Resource &other) const
Definition: resource.h:118
const std::shared_ptr< Resource_Impl< Type > > & handle() const
Definition: resource.h:113
int generation
Definition: resource.h:54
Type * operator->()
Definition: resource.h:77
void set(const Type &value)
Definition: resource.h:94
bool operator<(const Resource &other) const
Definition: resource.h:115
Definition: resource.h:48
bool updated()
Definition: resource.h:87