32 #include "../api_core.h" 47 template<
typename Type>
52 Resource_Impl(
const Type &initial_value) : value(initial_value), generation(0) { }
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
const std::shared_ptr< Resource_Impl< Type > > & handle() const
Definition: resource.h:113
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
const Type * operator->() const
Definition: resource.h:82
bool operator==(const Resource &other) const
Definition: resource.h:119
Resource()
Definition: resource.h:62
bool operator<(const Resource &other) const
Definition: resource.h:115
bool operator!=(const Resource &other) const
Definition: resource.h:120
Resource_Impl(const Type &initial_value)
Definition: resource.h:52
Type value
Definition: resource.h:53
Definition: resource.h:41
virtual ~Resource_BaseImpl()
Definition: resource.h:44
int generation
Definition: resource.h:54
bool operator>=(const Resource &other) const
Definition: resource.h:118
Type * operator->()
Definition: resource.h:77
bool operator<=(const Resource &other) const
Definition: resource.h:116
Definition: resource.h:48
bool operator>(const Resource &other) const
Definition: resource.h:117
bool updated()
Definition: resource.h:87