MeshLib C++ Docs
Loading...
Searching...
No Matches
MRSharedThreadSafeOwner.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRPch/MRBindingMacros.h"
5#include <functional>
6#include <memory>
7
8namespace MR
9{
10
13
17template<typename T>
19{
20public:
23 MRMESH_API SharedThreadSafeOwner& operator =( const SharedThreadSafeOwner& );
24 MRMESH_API SharedThreadSafeOwner( SharedThreadSafeOwner&& b ) noexcept;
25 MRMESH_API SharedThreadSafeOwner& operator =( SharedThreadSafeOwner&& b ) noexcept;
27
29 MRMESH_API void reset();
30
32 [[nodiscard]] const T* get() { return obj_.get(); }
33
35 [[nodiscard]] std::shared_ptr<const T> getPtr() { return obj_; }
36
40 MRMESH_API const T & getOrCreate( const std::function<T()> & creator );
41
44 MRMESH_API void update( const std::function<void(T&)> & updater );
45
47 [[nodiscard]] MRMESH_API size_t heapBytes() const;
48
49private:
51 std::shared_ptr<T> obj_;
52
54 std::shared_ptr<TbbTaskArenaAndGroup> construction_;
55};
56
58
59}
Definition MRSharedThreadSafeOwner.h:19
MRMESH_API void update(const std::function< void(T &)> &updater)
MRMESH_API size_t heapBytes() const
returns the amount of memory this object occupies on heap
const T * get()
returns the currently owned instance, the pointer becomes invalid after reset() or update()
Definition MRSharedThreadSafeOwner.h:32
MRMESH_API void reset()
stops owning T-instance
MRMESH_API ~SharedThreadSafeOwner()
MRMESH_API const T & getOrCreate(const std::function< T()> &creator)
std::shared_ptr< const T > getPtr()
returns the currently owned instance
Definition MRSharedThreadSafeOwner.h:35
MRMESH_API SharedThreadSafeOwner()
MRMESH_API SharedThreadSafeOwner(const SharedThreadSafeOwner &)
MRMESH_API SharedThreadSafeOwner(SharedThreadSafeOwner &&b) noexcept
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:13
only for bindings generation
Definition MRCameraOrientationPlugin.h:8