react-native-nitro-player 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/nitro.json +44 -11
  2. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +61 -24
  3. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +1 -1
  4. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +1 -1
  5. package/nitrogen/generated/android/c++/JDownloadError.hpp +1 -1
  6. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +1 -1
  7. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +1 -1
  8. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +1 -1
  9. package/nitrogen/generated/android/c++/JDownloadState.hpp +1 -1
  10. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +1 -1
  11. package/nitrogen/generated/android/c++/JDownloadTask.hpp +1 -1
  12. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +1 -1
  13. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +1 -1
  14. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +1 -1
  15. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +1 -1
  16. package/nitrogen/generated/android/c++/JEqualizerState.hpp +1 -1
  17. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +2 -2
  18. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +2 -2
  19. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -2
  20. package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +2 -2
  21. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +2 -2
  22. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
  23. package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +2 -2
  24. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +2 -2
  25. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -2
  26. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +2 -2
  27. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +2 -2
  28. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -2
  29. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double.hpp +2 -2
  30. package/nitrogen/generated/android/c++/JGainRange.hpp +1 -1
  31. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +20 -26
  32. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +19 -22
  33. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +20 -26
  34. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +19 -22
  35. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +53 -59
  36. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +19 -22
  37. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +36 -42
  38. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +19 -22
  39. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +31 -37
  40. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +19 -22
  41. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +47 -53
  42. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +19 -22
  43. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +1 -1
  44. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +1 -1
  45. package/nitrogen/generated/android/c++/JPlayerState.hpp +1 -1
  46. package/nitrogen/generated/android/c++/JPlaylist.hpp +1 -1
  47. package/nitrogen/generated/android/c++/JPresetType.hpp +1 -1
  48. package/nitrogen/generated/android/c++/JQueueOperation.hpp +1 -1
  49. package/nitrogen/generated/android/c++/JReason.hpp +1 -1
  50. package/nitrogen/generated/android/c++/JRepeatMode.hpp +1 -1
  51. package/nitrogen/generated/android/c++/JStorageLocation.hpp +1 -1
  52. package/nitrogen/generated/android/c++/JTAudioDevice.hpp +1 -1
  53. package/nitrogen/generated/android/c++/JTrackItem.hpp +1 -1
  54. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +1 -1
  55. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
  56. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +3 -3
  57. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +3 -3
  58. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +3 -3
  59. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +3 -3
  60. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +3 -3
  61. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +3 -3
  62. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +3 -3
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +15 -18
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +15 -18
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +15 -18
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +15 -18
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +15 -18
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +15 -18
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +0 -6
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +0 -6
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +0 -6
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +0 -6
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +0 -6
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +0 -6
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +0 -6
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +0 -6
  77. package/package.json +3 -3
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridDownloadManagerSpec: public jni::HybridClass<JHybridDownloadManagerSpec, JHybridObject>,
22
- public virtual HybridDownloadManagerSpec {
21
+ class JHybridDownloadManagerSpec: public virtual HybridDownloadManagerSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridDownloadManagerSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridDownloadManagerSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridDownloadManagerSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridDownloadManagerSpec;";
25
+ std::shared_ptr<JHybridDownloadManagerSpec> getJHybridDownloadManagerSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridDownloadManagerSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridDownloadManagerSpec(const jni::local_ref<JHybridDownloadManagerSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridDownloadManagerSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridDownloadManagerSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridDownloadManagerSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridDownloadManagerSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -92,9 +91,7 @@ namespace margelo::nitro::nitroplayer {
92
91
  void onDownloadComplete(const std::function<void(const DownloadedTrack& /* downloadedTrack */)>& callback) override;
93
92
 
94
93
  private:
95
- friend HybridBase;
96
- using HybridBase::HybridBase;
97
- jni::global_ref<JHybridDownloadManagerSpec::javaobject> _javaPart;
94
+ jni::global_ref<JHybridDownloadManagerSpec::JavaPart> _javaPart;
98
95
  };
99
96
 
100
97
  } // namespace margelo::nitro::nitroplayer
@@ -43,37 +43,31 @@ namespace margelo::nitro::nitroplayer { struct EqualizerState; }
43
43
 
44
44
  namespace margelo::nitro::nitroplayer {
45
45
 
46
- jni::local_ref<JHybridEqualizerSpec::jhybriddata> JHybridEqualizerSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
47
- return makeCxxInstance(jThis);
48
- }
49
-
50
- void JHybridEqualizerSpec::registerNatives() {
51
- registerHybrid({
52
- makeNativeMethod("initHybrid", JHybridEqualizerSpec::initHybrid),
53
- });
46
+ std::shared_ptr<JHybridEqualizerSpec> JHybridEqualizerSpec::JavaPart::getJHybridEqualizerSpec() {
47
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
48
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridEqualizerSpec>(hybridObject);
49
+ if (castHybridObject == nullptr) [[unlikely]] {
50
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridEqualizerSpec!");
51
+ }
52
+ return castHybridObject;
54
53
  }
55
54
 
56
- size_t JHybridEqualizerSpec::getExternalMemorySize() noexcept {
57
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
58
- return method(_javaPart);
55
+ jni::local_ref<JHybridEqualizerSpec::CxxPart::jhybriddata> JHybridEqualizerSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
56
+ return makeCxxInstance(jThis);
59
57
  }
60
58
 
61
- bool JHybridEqualizerSpec::equals(const std::shared_ptr<HybridObject>& other) {
62
- if (auto otherCast = std::dynamic_pointer_cast<JHybridEqualizerSpec>(other)) {
63
- return _javaPart == otherCast->_javaPart;
59
+ std::shared_ptr<JHybridObject> JHybridEqualizerSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
60
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridEqualizerSpec::JavaPart>(javaPart);
61
+ if (castJavaPart == nullptr) [[unlikely]] {
62
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridEqualizerSpec::JavaPart!");
64
63
  }
65
- return false;
66
- }
67
-
68
- void JHybridEqualizerSpec::dispose() noexcept {
69
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
70
- method(_javaPart);
64
+ return std::make_shared<JHybridEqualizerSpec>(castJavaPart);
71
65
  }
72
66
 
73
- std::string JHybridEqualizerSpec::toString() {
74
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
75
- auto javaString = method(_javaPart);
76
- return javaString->toStdString();
67
+ void JHybridEqualizerSpec::CxxPart::registerNatives() {
68
+ registerHybrid({
69
+ makeNativeMethod("initHybrid", JHybridEqualizerSpec::CxxPart::initHybrid),
70
+ });
77
71
  }
78
72
 
79
73
  // Properties
@@ -81,17 +75,17 @@ namespace margelo::nitro::nitroplayer {
81
75
 
82
76
  // Methods
83
77
  bool JHybridEqualizerSpec::setEnabled(bool enabled) {
84
- static const auto method = javaClassStatic()->getMethod<jboolean(jboolean /* enabled */)>("setEnabled");
78
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jboolean /* enabled */)>("setEnabled");
85
79
  auto __result = method(_javaPart, enabled);
86
80
  return static_cast<bool>(__result);
87
81
  }
88
82
  bool JHybridEqualizerSpec::isEnabled() {
89
- static const auto method = javaClassStatic()->getMethod<jboolean()>("isEnabled");
83
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isEnabled");
90
84
  auto __result = method(_javaPart);
91
85
  return static_cast<bool>(__result);
92
86
  }
93
87
  std::vector<EqualizerBand> JHybridEqualizerSpec::getBands() {
94
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerBand>>()>("getBands");
88
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerBand>>()>("getBands");
95
89
  auto __result = method(_javaPart);
96
90
  return [&]() {
97
91
  size_t __size = __result->size();
@@ -105,12 +99,12 @@ namespace margelo::nitro::nitroplayer {
105
99
  }();
106
100
  }
107
101
  bool JHybridEqualizerSpec::setBandGain(double bandIndex, double gainDb) {
108
- static const auto method = javaClassStatic()->getMethod<jboolean(double /* bandIndex */, double /* gainDb */)>("setBandGain");
102
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(double /* bandIndex */, double /* gainDb */)>("setBandGain");
109
103
  auto __result = method(_javaPart, bandIndex, gainDb);
110
104
  return static_cast<bool>(__result);
111
105
  }
112
106
  bool JHybridEqualizerSpec::setAllBandGains(const std::vector<double>& gains) {
113
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JArrayDouble> /* gains */)>("setAllBandGains");
107
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JArrayDouble> /* gains */)>("setAllBandGains");
114
108
  auto __result = method(_javaPart, [&]() {
115
109
  size_t __size = gains.size();
116
110
  jni::local_ref<jni::JArrayDouble> __array = jni::JArrayDouble::newArray(__size);
@@ -120,12 +114,12 @@ namespace margelo::nitro::nitroplayer {
120
114
  return static_cast<bool>(__result);
121
115
  }
122
116
  GainRange JHybridEqualizerSpec::getBandRange() {
123
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JGainRange>()>("getBandRange");
117
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JGainRange>()>("getBandRange");
124
118
  auto __result = method(_javaPart);
125
119
  return __result->toCpp();
126
120
  }
127
121
  std::vector<EqualizerPreset> JHybridEqualizerSpec::getPresets() {
128
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getPresets");
122
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getPresets");
129
123
  auto __result = method(_javaPart);
130
124
  return [&]() {
131
125
  size_t __size = __result->size();
@@ -139,7 +133,7 @@ namespace margelo::nitro::nitroplayer {
139
133
  }();
140
134
  }
141
135
  std::vector<EqualizerPreset> JHybridEqualizerSpec::getBuiltInPresets() {
142
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getBuiltInPresets");
136
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getBuiltInPresets");
143
137
  auto __result = method(_javaPart);
144
138
  return [&]() {
145
139
  size_t __size = __result->size();
@@ -153,7 +147,7 @@ namespace margelo::nitro::nitroplayer {
153
147
  }();
154
148
  }
155
149
  std::vector<EqualizerPreset> JHybridEqualizerSpec::getCustomPresets() {
156
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getCustomPresets");
150
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerPreset>>()>("getCustomPresets");
157
151
  auto __result = method(_javaPart);
158
152
  return [&]() {
159
153
  size_t __size = __result->size();
@@ -167,44 +161,44 @@ namespace margelo::nitro::nitroplayer {
167
161
  }();
168
162
  }
169
163
  bool JHybridEqualizerSpec::applyPreset(const std::string& presetName) {
170
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* presetName */)>("applyPreset");
164
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* presetName */)>("applyPreset");
171
165
  auto __result = method(_javaPart, jni::make_jstring(presetName));
172
166
  return static_cast<bool>(__result);
173
167
  }
174
168
  std::variant<nitro::NullType, std::string> JHybridEqualizerSpec::getCurrentPresetName() {
175
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPresetName");
169
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPresetName");
176
170
  auto __result = method(_javaPart);
177
171
  return __result->toCpp();
178
172
  }
179
173
  bool JHybridEqualizerSpec::saveCustomPreset(const std::string& name) {
180
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("saveCustomPreset");
174
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("saveCustomPreset");
181
175
  auto __result = method(_javaPart, jni::make_jstring(name));
182
176
  return static_cast<bool>(__result);
183
177
  }
184
178
  bool JHybridEqualizerSpec::deleteCustomPreset(const std::string& name) {
185
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("deleteCustomPreset");
179
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("deleteCustomPreset");
186
180
  auto __result = method(_javaPart, jni::make_jstring(name));
187
181
  return static_cast<bool>(__result);
188
182
  }
189
183
  EqualizerState JHybridEqualizerSpec::getState() {
190
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JEqualizerState>()>("getState");
184
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JEqualizerState>()>("getState");
191
185
  auto __result = method(_javaPart);
192
186
  return __result->toCpp();
193
187
  }
194
188
  void JHybridEqualizerSpec::reset() {
195
- static const auto method = javaClassStatic()->getMethod<void()>("reset");
189
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("reset");
196
190
  method(_javaPart);
197
191
  }
198
192
  void JHybridEqualizerSpec::onEnabledChange(const std::function<void(bool /* enabled */)>& callback) {
199
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_bool::javaobject> /* callback */)>("onEnabledChange_cxx");
193
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_bool::javaobject> /* callback */)>("onEnabledChange_cxx");
200
194
  method(_javaPart, JFunc_void_bool_cxx::fromCpp(callback));
201
195
  }
202
196
  void JHybridEqualizerSpec::onBandChange(const std::function<void(const std::vector<EqualizerBand>& /* bands */)>& callback) {
203
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_EqualizerBand_::javaobject> /* callback */)>("onBandChange_cxx");
197
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_EqualizerBand_::javaobject> /* callback */)>("onBandChange_cxx");
204
198
  method(_javaPart, JFunc_void_std__vector_EqualizerBand__cxx::fromCpp(callback));
205
199
  }
206
200
  void JHybridEqualizerSpec::onPresetChange(const std::function<void(const std::optional<std::variant<nitro::NullType, std::string>>& /* presetName */)>& callback) {
207
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__optional_std__variant_nitro__NullType__std__string__::javaobject> /* callback */)>("onPresetChange_cxx");
201
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__optional_std__variant_nitro__NullType__std__string__::javaobject> /* callback */)>("onPresetChange_cxx");
208
202
  method(_javaPart, JFunc_void_std__optional_std__variant_nitro__NullType__std__string___cxx::fromCpp(callback));
209
203
  }
210
204
 
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridEqualizerSpec: public jni::HybridClass<JHybridEqualizerSpec, JHybridObject>,
22
- public virtual HybridEqualizerSpec {
21
+ class JHybridEqualizerSpec: public virtual HybridEqualizerSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridEqualizerSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridEqualizerSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridEqualizerSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridEqualizerSpec;";
25
+ std::shared_ptr<JHybridEqualizerSpec> getJHybridEqualizerSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridEqualizerSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridEqualizerSpec(const jni::local_ref<JHybridEqualizerSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridEqualizerSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridEqualizerSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridEqualizerSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridEqualizerSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -75,9 +74,7 @@ namespace margelo::nitro::nitroplayer {
75
74
  void onPresetChange(const std::function<void(const std::optional<std::variant<nitro::NullType, std::string>>& /* presetName */)>& callback) override;
76
75
 
77
76
  private:
78
- friend HybridBase;
79
- using HybridBase::HybridBase;
80
- jni::global_ref<JHybridEqualizerSpec::javaobject> _javaPart;
77
+ jni::global_ref<JHybridEqualizerSpec::JavaPart> _javaPart;
81
78
  };
82
79
 
83
80
  } // namespace margelo::nitro::nitroplayer
@@ -37,37 +37,31 @@ namespace margelo::nitro::nitroplayer { enum class QueueOperation; }
37
37
 
38
38
  namespace margelo::nitro::nitroplayer {
39
39
 
40
- jni::local_ref<JHybridPlayerQueueSpec::jhybriddata> JHybridPlayerQueueSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
41
- return makeCxxInstance(jThis);
42
- }
43
-
44
- void JHybridPlayerQueueSpec::registerNatives() {
45
- registerHybrid({
46
- makeNativeMethod("initHybrid", JHybridPlayerQueueSpec::initHybrid),
47
- });
40
+ std::shared_ptr<JHybridPlayerQueueSpec> JHybridPlayerQueueSpec::JavaPart::getJHybridPlayerQueueSpec() {
41
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
42
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridPlayerQueueSpec>(hybridObject);
43
+ if (castHybridObject == nullptr) [[unlikely]] {
44
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridPlayerQueueSpec!");
45
+ }
46
+ return castHybridObject;
48
47
  }
49
48
 
50
- size_t JHybridPlayerQueueSpec::getExternalMemorySize() noexcept {
51
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
52
- return method(_javaPart);
49
+ jni::local_ref<JHybridPlayerQueueSpec::CxxPart::jhybriddata> JHybridPlayerQueueSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
50
+ return makeCxxInstance(jThis);
53
51
  }
54
52
 
55
- bool JHybridPlayerQueueSpec::equals(const std::shared_ptr<HybridObject>& other) {
56
- if (auto otherCast = std::dynamic_pointer_cast<JHybridPlayerQueueSpec>(other)) {
57
- return _javaPart == otherCast->_javaPart;
53
+ std::shared_ptr<JHybridObject> JHybridPlayerQueueSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
54
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridPlayerQueueSpec::JavaPart>(javaPart);
55
+ if (castJavaPart == nullptr) [[unlikely]] {
56
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridPlayerQueueSpec::JavaPart!");
58
57
  }
59
- return false;
60
- }
61
-
62
- void JHybridPlayerQueueSpec::dispose() noexcept {
63
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
64
- method(_javaPart);
58
+ return std::make_shared<JHybridPlayerQueueSpec>(castJavaPart);
65
59
  }
66
60
 
67
- std::string JHybridPlayerQueueSpec::toString() {
68
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
69
- auto javaString = method(_javaPart);
70
- return javaString->toStdString();
61
+ void JHybridPlayerQueueSpec::CxxPart::registerNatives() {
62
+ registerHybrid({
63
+ makeNativeMethod("initHybrid", JHybridPlayerQueueSpec::CxxPart::initHybrid),
64
+ });
71
65
  }
72
66
 
73
67
  // Properties
@@ -75,25 +69,25 @@ namespace margelo::nitro::nitroplayer {
75
69
 
76
70
  // Methods
77
71
  std::string JHybridPlayerQueueSpec::createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
78
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("createPlaylist");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("createPlaylist");
79
73
  auto __result = method(_javaPart, jni::make_jstring(name), description.has_value() ? jni::make_jstring(description.value()) : nullptr, artwork.has_value() ? jni::make_jstring(artwork.value()) : nullptr);
80
74
  return __result->toStdString();
81
75
  }
82
76
  void JHybridPlayerQueueSpec::deletePlaylist(const std::string& playlistId) {
83
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("deletePlaylist");
77
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("deletePlaylist");
84
78
  method(_javaPart, jni::make_jstring(playlistId));
85
79
  }
86
80
  void JHybridPlayerQueueSpec::updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
87
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("updatePlaylist");
81
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("updatePlaylist");
88
82
  method(_javaPart, jni::make_jstring(playlistId), name.has_value() ? jni::make_jstring(name.value()) : nullptr, description.has_value() ? jni::make_jstring(description.value()) : nullptr, artwork.has_value() ? jni::make_jstring(artwork.value()) : nullptr);
89
83
  }
90
84
  std::variant<nitro::NullType, Playlist> JHybridPlayerQueueSpec::getPlaylist(const std::string& playlistId) {
91
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_Playlist>(jni::alias_ref<jni::JString> /* playlistId */)>("getPlaylist");
85
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_Playlist>(jni::alias_ref<jni::JString> /* playlistId */)>("getPlaylist");
92
86
  auto __result = method(_javaPart, jni::make_jstring(playlistId));
93
87
  return __result->toCpp();
94
88
  }
95
89
  std::vector<Playlist> JHybridPlayerQueueSpec::getAllPlaylists() {
96
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JPlaylist>>()>("getAllPlaylists");
90
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JPlaylist>>()>("getAllPlaylists");
97
91
  auto __result = method(_javaPart);
98
92
  return [&]() {
99
93
  size_t __size = __result->size();
@@ -107,11 +101,11 @@ namespace margelo::nitro::nitroplayer {
107
101
  }();
108
102
  }
109
103
  void JHybridPlayerQueueSpec::addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) {
110
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<JTrackItem> /* track */, jni::alias_ref<jni::JDouble> /* index */)>("addTrackToPlaylist");
104
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<JTrackItem> /* track */, jni::alias_ref<jni::JDouble> /* index */)>("addTrackToPlaylist");
111
105
  method(_javaPart, jni::make_jstring(playlistId), JTrackItem::fromCpp(track), index.has_value() ? jni::JDouble::valueOf(index.value()) : nullptr);
112
106
  }
113
107
  void JHybridPlayerQueueSpec::addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) {
114
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JArrayClass<JTrackItem>> /* tracks */, jni::alias_ref<jni::JDouble> /* index */)>("addTracksToPlaylist");
108
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JArrayClass<JTrackItem>> /* tracks */, jni::alias_ref<jni::JDouble> /* index */)>("addTracksToPlaylist");
115
109
  method(_javaPart, jni::make_jstring(playlistId), [&]() {
116
110
  size_t __size = tracks.size();
117
111
  jni::local_ref<jni::JArrayClass<JTrackItem>> __array = jni::JArrayClass<JTrackItem>::newArray(__size);
@@ -124,28 +118,28 @@ namespace margelo::nitro::nitroplayer {
124
118
  }(), index.has_value() ? jni::JDouble::valueOf(index.value()) : nullptr);
125
119
  }
126
120
  void JHybridPlayerQueueSpec::removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) {
127
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */)>("removeTrackFromPlaylist");
121
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */)>("removeTrackFromPlaylist");
128
122
  method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId));
129
123
  }
130
124
  void JHybridPlayerQueueSpec::reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) {
131
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */, double /* newIndex */)>("reorderTrackInPlaylist");
125
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */, double /* newIndex */)>("reorderTrackInPlaylist");
132
126
  method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId), newIndex);
133
127
  }
134
128
  void JHybridPlayerQueueSpec::loadPlaylist(const std::string& playlistId) {
135
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("loadPlaylist");
129
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("loadPlaylist");
136
130
  method(_javaPart, jni::make_jstring(playlistId));
137
131
  }
138
132
  std::variant<nitro::NullType, std::string> JHybridPlayerQueueSpec::getCurrentPlaylistId() {
139
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPlaylistId");
133
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPlaylistId");
140
134
  auto __result = method(_javaPart);
141
135
  return __result->toCpp();
142
136
  }
143
137
  void JHybridPlayerQueueSpec::onPlaylistsChanged(const std::function<void(const std::vector<Playlist>& /* playlists */, std::optional<QueueOperation> /* operation */)>& callback) {
144
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_Playlist__std__optional_QueueOperation_::javaobject> /* callback */)>("onPlaylistsChanged_cxx");
138
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_Playlist__std__optional_QueueOperation_::javaobject> /* callback */)>("onPlaylistsChanged_cxx");
145
139
  method(_javaPart, JFunc_void_std__vector_Playlist__std__optional_QueueOperation__cxx::fromCpp(callback));
146
140
  }
147
141
  void JHybridPlayerQueueSpec::onPlaylistChanged(const std::function<void(const std::string& /* playlistId */, const Playlist& /* playlist */, std::optional<QueueOperation> /* operation */)>& callback) {
148
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string_Playlist_std__optional_QueueOperation_::javaobject> /* callback */)>("onPlaylistChanged_cxx");
142
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string_Playlist_std__optional_QueueOperation_::javaobject> /* callback */)>("onPlaylistChanged_cxx");
149
143
  method(_javaPart, JFunc_void_std__string_Playlist_std__optional_QueueOperation__cxx::fromCpp(callback));
150
144
  }
151
145
 
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridPlayerQueueSpec: public jni::HybridClass<JHybridPlayerQueueSpec, JHybridObject>,
22
- public virtual HybridPlayerQueueSpec {
21
+ class JHybridPlayerQueueSpec: public virtual HybridPlayerQueueSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridPlayerQueueSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridPlayerQueueSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridPlayerQueueSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridPlayerQueueSpec;";
25
+ std::shared_ptr<JHybridPlayerQueueSpec> getJHybridPlayerQueueSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridPlayerQueueSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridPlayerQueueSpec(const jni::local_ref<JHybridPlayerQueueSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridPlayerQueueSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridPlayerQueueSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridPlayerQueueSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridPlayerQueueSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -70,9 +69,7 @@ namespace margelo::nitro::nitroplayer {
70
69
  void onPlaylistChanged(const std::function<void(const std::string& /* playlistId */, const Playlist& /* playlist */, std::optional<QueueOperation> /* operation */)>& callback) override;
71
70
 
72
71
  private:
73
- friend HybridBase;
74
- using HybridBase::HybridBase;
75
- jni::global_ref<JHybridPlayerQueueSpec::javaobject> _javaPart;
72
+ jni::global_ref<JHybridPlayerQueueSpec::JavaPart> _javaPart;
76
73
  };
77
74
 
78
75
  } // namespace margelo::nitro::nitroplayer