4#ifndef _Stroika_Foundation_Execution_ModuleGetterSetter_h_
5#define _Stroika_Foundation_Execution_ModuleGetterSetter_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
11#include "Stroika/Foundation/Common/Common.h"
12#include "Stroika/Foundation/Memory/Common.h"
96 template <
typename T,
typename IMPL>
106 nonvirtual T
Get ()
const;
112 nonvirtual
void Set (
const T& v);
125 return make_shared<const T> (
Get ());
154 nonvirtual optional<T>
Update (
const function<optional<T> (
const T&)>& updaterFunction);
163 static void DoInitOutOfLine_ (
typename RWSynchronized<optional<IMPL>>::WritableReference* ref);
173#include "ModuleGetterSetter.inl"
Wrap any object with Synchronized<> and it can be used similarly to the base type,...
Helper to define synchronized, lazy constructed, module initialization (intended to work with DataExc...
shared_ptr< const T > operator->() const
nonvirtual optional< T > Update(const function< optional< T >(const T &)> &updaterFunction)
Call this with a lambda that will update the associated value (INSIDE a lock (synchronized))
nonvirtual void Set(const T &v)