2#include "trkn/tracktion.hh"
17template<
size_t N>
static JuceWeakReference_Selectable&
18juce_weak_reference_selectable (
const char (&mem)[N])
20 static_assert (N ==
sizeof (JuceWeakReference_Selectable));
21 return *
reinterpret_cast<JuceWeakReference_Selectable*
> (
const_cast<char*
> (mem));
24SelectableBaseref::SelectableBaseref()
26 static_assert (
sizeof (mem_) ==
sizeof (JuceWeakReference_Selectable));
27 JuceWeakReference_Selectable *
const weakref =
new (mem_) JuceWeakReference_Selectable (
nullptr);
31SelectableBaseref::~SelectableBaseref()
33 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
34 weakref.~JuceWeakReference_Selectable();
38SelectableBaseref::get () const noexcept
40 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
45SelectableBaseref::set (tracktion::Selectable *selectable)
noexcept
47 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
52SelectableBaseref::set (
const SelectableBaseref &other)
noexcept
54 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
55 const JuceWeakReference_Selectable &otherref = juce_weak_reference_selectable (other.mem_);
66 selectable.ase_obj_ = ase_impl;
72 if (selectable && selectable->ase_obj_ == ase_impl)
73 selectable->ase_obj_ =
nullptr;
79 return selectable ? selectable->ase_obj_ :
nullptr;
#define assert_return(expr,...)
Return from the current function if expr is unmet and issue an assertion warning.
#define return_unless(cond,...)
Return silently if cond does not evaluate to true with return value ...
The Anklang C++ API namespace.
void register_ase_obj(VirtualBase *ase_impl, tracktion::Selectable &selectable)
Helper: register AseImpl with a tracktion Selectable via ase_obj_.
VirtualBase * find_ase_obj_virtual_base(tracktion::Selectable *selectable)
Helper: lookup Ase::VirtualBase from tracktion Selectable via ase_obj_.
void unregister_ase_obj(VirtualBase *ase_impl, tracktion::Selectable *selectable)
Helper: unregister AseImpl from a tracktion Selectable (selectable may be nullptr)
Common base type to allow casting between polymorphic classes.