59 friend struct ::binderTest;
73 const instance* operator->() const BY_CONST_FUNC(operator->())
75 const
instance& operator*() const BY_CONST_FUNC(operator*())
76 me& operator=(const me& rhs);
82 nbool isBind() const override;
85 nbool canBind(const
type& it) const override;
87 nbool bind(const
instance& it) override;
90 const
instance* get() const BY_CONST_FUNC(get())
92 template <typename E> E* get() {
return get()->template cast<E>(); }
93 template <
typename E>
const E* get() const BY_CONST_FUNC(get<E>())
96 const
type& getType() const override;
99 void* cast(const
type& to) override;
102 nbool _assign(const
binder& rhs);
120 template <
typename F> tmedium<instance> operator|(
const binder& t, F&& f) {
133 static nbool isNul(
const binder& it) {
return !it.isBind(); }
135 static constexpr nbool is_ptr =
false;
136 static constexpr nbool is_ref =
false;
137 static constexpr nbool is_like_ptr =
true;
145 static binder* ret() {
return nullptr; }
147 static nbool isNul(
const binder* it) {
return !it || !it->isBind(); }
149 static constexpr nbool is_ptr =
true;
150 static constexpr nbool is_ref =
false;
151 static constexpr nbool is_like_ptr = is_ptr;
159 static nbool isNul(
const binder& it) {
return it.isBind(); }
161 static constexpr nbool is_ptr =
false;
162 static constexpr nbool is_ref =
true;
163 static constexpr nbool is_like_ptr =
true;
167 template <
typename T,
typename F>
auto operator->*(
binder* t, F&& f) {
168 return t ? f(**t) :
typeTrait<std::decay_t<decltype(f(**t))>>::ret();
171 template <
typename T,
typename F>
auto operator->*(
const binder* t, F&& f) {
172 return t ? f(**t) : typeTrait<std::decay_t<decltype(f(**t))>>::ret();
175 template <
typename T,
typename F>
auto operator->*(binder& t, F&& f) {
176 return t ? f(*t) : typeTrait<std::decay_t<decltype(f(*t))>>::ret();
Interface for binding tactics in memory management.
Definition: bindTacticable.hpp:15
Binding tag for instance reference tracking and lifecycle management.
Definition: bindTag.hpp:15
Smart pointer with loose type checking and lifetime management.
Definition: binder.hpp:53
instance * operator->()
Dereference operator to access bound instance.
Base class for all managed instances in memlite system.
Definition: instance.hpp:20
Strong reference binding tactic.
Definition: strTactic.hpp:12
Template interface for bindable objects.
Definition: tbindable.hpp:12
Medium class used exclusively in the OR macro for safe reference handling.
Definition: tmedium.hpp:51
Base class for runtime type information in byeol language.
Definition: type.hpp:12
Interface for objects that can provide their type information.
Definition: typeProvidable.hpp:12
Weak reference binding tactic.
Definition: weakTactic.hpp:13
Type trait utilities for template metaprogramming.
Definition: typeTrait.hpp:13