10 static std::vector<std::shared_ptr<void>> s_store;
28std::shared_ptr<T>
store(std::shared_ptr<T> obj)
48std::shared_ptr<T>
store(std::string_view key, std::shared_ptr<T> obj)
64 std::make_shared<T>(std::move(obj)));
74template <
typename T,
typename... Args>
77 auto obj =
store(std::make_shared<T>(std::forward<Args>(args)...));
89template <
typename T,
typename... Args>
92 return *make_persistent_shared<T>(std::forward<Args>(args)...);
104 auto ptr = std::make_shared<std::decay_t<T>>(std::forward<T>(val));
#define MF_LIVE_EXPOSE(key, ptr)
Exposes ptr to the live arena under a user-supplied key when MAYAFLUX_LIVE is defined.
#define MF_LIVE_EXPOSE_AUTO(ptr)
Auto-expose variant that deduces the key prefix from the shared_ptr element type.
std::vector< std::shared_ptr< void > > & persistent_store()
void cleanup_persistent_store()
std::shared_ptr< T > store(std::shared_ptr< T > obj)
Transfer ownership of an existing object to the persistent store for process lifetime.
std::shared_ptr< T > make_persistent_shared(Args &&... args)
Construct a T in place, retain it for process lifetime, and return a shared handle.
T & make_persistent(Args &&... args)
Construct a T in place, retain it for process lifetime, and return a direct reference.
Main namespace for the Maya Flux audio engine.