Go to the documentation of this file.
50 template <
class... TArgs>
54 return tryFrom(std::make_shared<TT>(std::forward<TArgs>(
args)...));
55 }
catch (std::exception& e) {
70 template <
class... TArgs>
80 TT
const&
operator*()
const {
return *non_null_shared_; }
86 TT
const*
operator->()
const {
return non_null_shared_.get(); }
89 operator std::shared_ptr<TT>()
const {
return sharedPtr(); }
92 [[nodiscard]] std::shared_ptr<TT>
sharedPtr()
const {
93 return non_null_shared_;
103 Shared() requires(std::is_default_constructible<TT>::value)
104 : non_null_shared_(std::make_shared<TT>()) {
109 template <DerivedFrom<TT> TDerived>
115 template <DerivedFrom<TT> TDerived>
116 Shared(std::shared_ptr<TDerived>
const& panic_if_null)
117 : non_null_shared_(panic_if_null) {
122 template <DerivedFrom<TT> TDerived>
123 Shared(std::unique_ptr<TDerived>&& panic_if_null)
124 : non_null_shared_(std::move(panic_if_null)) {
130 Shared(std::shared_ptr<TT>
const& panic_if_null)
131 : non_null_shared_(panic_if_null) {
143 non_null_shared_ = o.non_null_shared_;
151 return this->non_null_shared_ == rhs.non_null_shared_;
155 void checkMaybeThrow()
const {
156 if (!non_null_shared_) {
162 std::shared_ptr<TT> non_null_shared_;
165 template <
typename TT>
168 template <
class TT,
class... TArgs>
173 template <
typename TT>
Definition: backtrace.cpp:102
Shared< TT > & operator=(Shared< TT > &&o) noexcept
Definition: shared.h:140
tl::bad_expected_access< farm_ng::Error > BadExpectedAccess
Definition: shared.h:30
Shared() requires(std
Definition: shared.h:103
Shared(Shared< TDerived > const &other)
Definition: shared.h:110
args
Definition: event_service.py:549
TT const & operator*() const
Returns the interior object which is guaranteed to be available.
Definition: shared.h:80
Shared(Shared< TT > &&o) noexcept
Definition: shared.h:135
static Shared< TT > make(TArgs &&... args)
Construct and also makes interior object T Panics if the constructor throws. See tryFrom() for altern...
Definition: shared.h:71
TT * operator->()
Returns the interior object which is guaranteed to be available.
Definition: shared.h:83
std::shared_ptr< TT > sharedPtr() const
Definition: shared.h:92
#define FARM_ERROR_REPORT(cstr,...)
Definition: expected.h:81
farm_ng::Expected< Shared< TT > > ExpectedT
Definition: shared.h:29
#define FARM_UNEXPECTED(cstr,...)
Definition: expected.h:86
Shared(std::shared_ptr< TT > const &panic_if_null)
Definition: shared.h:130
TT * ptr()
Definition: shared.h:100
bool operator==(Shared< TT > const &rhs) const noexcept
Definition: shared.h:150
static ExpectedT tryMake(TArgs &&... args) noexcept
Construct and also makes interior object T The return value is an object containing either a non-null...
Definition: shared.h:51
TT const * ptr() const
Definition: shared.h:97
TT const * operator->() const
Returns the interior object which is guaranteed to be available.
Definition: shared.h:86
Shared(std::unique_ptr< TDerived > &&panic_if_null)
Definition: shared.h:123
farm_ng::Expected< Shared< TT > > ExpectShared
Definition: shared.h:166
static ExpectedT tryFrom(std::shared_ptr< TT > const &maybe_null) noexcept
Construct from a possibly null shared_ptr The return value is an object containing either a non-null ...
Definition: shared.h:36
Shared(std::shared_ptr< TDerived > const &panic_if_null)
Definition: shared.h:116
tl::expected< TT, TE > Expected
Definition: expected.h:37
std::vector< Shared< TT > > SharedVector
Definition: shared.h:174
#define FARM_UNWRAP(wrapper,...)
Returns *wrapper, but panics if wrapper is nullopt or null.
Definition: logger.h:576
TT & operator*()
Returns the interior object which is guaranteed to be available.
Definition: shared.h:77
static Shared from(std::shared_ptr< TT > const &shared)
Construct from a possibly null shared_ptr Panics if shared is null. See tryFrom() for alternate.
Definition: shared.h:63