Anklang-0.3.0-1416-gfa8ce8d2 anklang-0.3.0-1416-gfa8ce8d2
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
trkn-utils.hh
Go to the documentation of this file.
1 // This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0
2
3#pragma once
4#include <ase/trkn.hh>
5#include <unordered_map>
6#include <shared_mutex>
7
8namespace Ase {
9
10float trkn_volume_db (const tracktion::VolumeAndPanPlugin &plugin);
11void trkn_volume_db (tracktion::VolumeAndPanPlugin &plugin, float db);
12float trkn_slider_pos (const tracktion::VolumeAndPanPlugin &plugin);
13void trkn_slider_pos (tracktion::VolumeAndPanPlugin &plugin, float pos);
14float trkn_pan (const tracktion::VolumeAndPanPlugin &plugin);
15void trkn_pan (tracktion::VolumeAndPanPlugin &plugin, float pan);
16void trkn_restore_parameter_values (tracktion::Edit &edit);
17
19class SelectableBaseref final {
20 union { void *const align_; char mem_[sizeof (void*)]; };
21 void set (tracktion::Selectable*) noexcept;
22 void set (const SelectableBaseref&) noexcept;
23public:
24 tracktion::Selectable* get () const noexcept;
25 /*dtor*/ ~SelectableBaseref();
26 explicit SelectableBaseref();
27 SelectableBaseref (tracktion::Selectable *obj) : SelectableBaseref() { set (obj); }
28 SelectableBaseref (const SelectableBaseref &ref) : SelectableBaseref() { set (ref); }
29 SelectableBaseref& operator= (tracktion::Selectable *obj) { set (obj); return *this; }
30 SelectableBaseref& operator= (const SelectableBaseref &ref) { set (ref); return *this; }
31};
32
34template<typename SelectableType>
37public:
38 explicit SelectableWeakref () = default;
39 explicit SelectableWeakref (SelectableType *selectable) : base_ (selectable) {}
40 /*copy*/ SelectableWeakref (const SelectableWeakref &o) noexcept : base_ (o.base_) {}
41 SelectableType* get () const noexcept { return dynamic_cast<SelectableType*> (base_.get()); }
42 SelectableType* operator-> () const noexcept { return get(); }
43 SelectableWeakref& operator= (const SelectableWeakref &ref) { base_ = ref.base_; return *this; }
44 SelectableWeakref& operator= (SelectableType *obj) { base_ = obj; return *this; }
45 bool operator== (SelectableType *obj) const noexcept { return base_.get() == obj; }
46 bool operator!= (SelectableType *obj) const noexcept { return base_.get() != obj; }
47 bool operator== (std::nullptr_t) const noexcept { return base_.get() == nullptr; }
48 bool operator!= (std::nullptr_t) const noexcept { return base_.get() != nullptr; }
49 bool operator== (const SelectableWeakref &ref) const noexcept { return base_.get() == ref.base_.get(); }
50 bool operator!= (const SelectableWeakref &ref) const noexcept { return base_.get() != ref.base_.get(); }
51};
52
54void register_ase_obj (VirtualBase *ase_impl, tracktion::Selectable &selectable);
56void unregister_ase_obj (VirtualBase *ase_impl, tracktion::Selectable *selectable);
58VirtualBase* find_ase_obj_virtual_base (tracktion::Selectable *selectable);
60template<typename AseType> inline AseType*
61find_ase_obj (tracktion::Selectable &selectable)
62{
63 return dynamic_cast<AseType*> (find_ase_obj_virtual_base (&selectable));
64}
66template<typename AseType> inline AseType*
67find_ase_obj (tracktion::Selectable *selectable)
68{
69 return selectable ? find_ase_obj<AseType> (*selectable) : nullptr;
70}
71
72} // Ase
Wrapper for juce::WeakReference<tracktion::Selectable>
Definition trkn-utils.hh:19
Mimick tracktion::engine::SafeSelectable<> for tracktion::Selectable descendants.
Definition trkn-utils.hh:35
The Anklang C++ API namespace.
Definition api.hh:8
void register_ase_obj(VirtualBase *ase_impl, tracktion::Selectable &selectable)
Helper: register AseImpl with a tracktion Selectable via ase_obj_.
AseType * find_ase_obj(tracktion::Selectable &selectable)
Helper: lookup AseType from tracktion Selectable via ase_obj_.
Definition trkn-utils.hh:61
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.
Definition cxxaux.hh:220