react-native-nitro-player 0.6.0 → 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 (79) hide show
  1. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +43 -0
  2. package/ios/core/TrackPlayerCore.swift +15 -0
  3. package/nitro.json +44 -11
  4. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +61 -24
  5. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +1 -1
  6. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +1 -1
  7. package/nitrogen/generated/android/c++/JDownloadError.hpp +1 -1
  8. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +1 -1
  9. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +1 -1
  10. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +1 -1
  11. package/nitrogen/generated/android/c++/JDownloadState.hpp +1 -1
  12. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +1 -1
  13. package/nitrogen/generated/android/c++/JDownloadTask.hpp +1 -1
  14. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +1 -1
  15. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +1 -1
  16. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +1 -1
  17. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +1 -1
  18. package/nitrogen/generated/android/c++/JEqualizerState.hpp +1 -1
  19. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +2 -2
  20. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +2 -2
  21. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -2
  22. package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +2 -2
  23. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +2 -2
  24. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
  25. package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +2 -2
  26. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +2 -2
  27. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -2
  28. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +2 -2
  29. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +2 -2
  30. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -2
  31. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double.hpp +2 -2
  32. package/nitrogen/generated/android/c++/JGainRange.hpp +1 -1
  33. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +20 -26
  34. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +19 -22
  35. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +20 -26
  36. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +19 -22
  37. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +53 -59
  38. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +19 -22
  39. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +36 -42
  40. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +19 -22
  41. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +31 -37
  42. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +19 -22
  43. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +47 -53
  44. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +19 -22
  45. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +1 -1
  46. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +1 -1
  47. package/nitrogen/generated/android/c++/JPlayerState.hpp +1 -1
  48. package/nitrogen/generated/android/c++/JPlaylist.hpp +1 -1
  49. package/nitrogen/generated/android/c++/JPresetType.hpp +1 -1
  50. package/nitrogen/generated/android/c++/JQueueOperation.hpp +1 -1
  51. package/nitrogen/generated/android/c++/JReason.hpp +1 -1
  52. package/nitrogen/generated/android/c++/JRepeatMode.hpp +1 -1
  53. package/nitrogen/generated/android/c++/JStorageLocation.hpp +1 -1
  54. package/nitrogen/generated/android/c++/JTAudioDevice.hpp +1 -1
  55. package/nitrogen/generated/android/c++/JTrackItem.hpp +1 -1
  56. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +1 -1
  57. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
  58. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +3 -3
  59. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +3 -3
  60. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +3 -3
  61. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +3 -3
  62. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +3 -3
  63. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +3 -3
  64. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +3 -3
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +15 -18
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +15 -18
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +15 -18
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +15 -18
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +15 -18
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +15 -18
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +0 -6
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +0 -6
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +0 -6
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +0 -6
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +0 -6
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +0 -6
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +0 -6
  78. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +0 -6
  79. package/package.json +3 -3
@@ -27,7 +27,7 @@ namespace margelo::nitro::nitroplayer {
27
27
  */
28
28
  struct JFunc_void_std__vector_EqualizerBand_: public jni::JavaClass<JFunc_void_std__vector_EqualizerBand_> {
29
29
  public:
30
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_;";
30
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_;";
31
31
 
32
32
  public:
33
33
  /**
@@ -81,7 +81,7 @@ namespace margelo::nitro::nitroplayer {
81
81
  }
82
82
 
83
83
  public:
84
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand__cxx;";
84
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand__cxx;";
85
85
  static void registerNatives() {
86
86
  registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__vector_EqualizerBand__cxx::invoke_cxx)});
87
87
  }
@@ -38,7 +38,7 @@ namespace margelo::nitro::nitroplayer {
38
38
  */
39
39
  struct JFunc_void_std__vector_Playlist__std__optional_QueueOperation_: public jni::JavaClass<JFunc_void_std__vector_Playlist__std__optional_QueueOperation_> {
40
40
  public:
41
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation_;";
41
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation_;";
42
42
 
43
43
  public:
44
44
  /**
@@ -92,7 +92,7 @@ namespace margelo::nitro::nitroplayer {
92
92
  }
93
93
 
94
94
  public:
95
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation__cxx;";
95
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation__cxx;";
96
96
  static void registerNatives() {
97
97
  registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__vector_Playlist__std__optional_QueueOperation__cxx::invoke_cxx)});
98
98
  }
@@ -34,7 +34,7 @@ namespace margelo::nitro::nitroplayer {
34
34
  */
35
35
  struct JFunc_void_std__vector_TrackItem__double: public jni::JavaClass<JFunc_void_std__vector_TrackItem__double> {
36
36
  public:
37
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__double;";
37
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__double;";
38
38
 
39
39
  public:
40
40
  /**
@@ -88,7 +88,7 @@ namespace margelo::nitro::nitroplayer {
88
88
  }
89
89
 
90
90
  public:
91
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__double_cxx;";
91
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__double_cxx;";
92
92
  static void registerNatives() {
93
93
  registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__vector_TrackItem__double_cxx::invoke_cxx)});
94
94
  }
@@ -21,7 +21,7 @@ namespace margelo::nitro::nitroplayer {
21
21
  */
22
22
  struct JGainRange final: public jni::JavaClass<JGainRange> {
23
23
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/GainRange;";
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/GainRange;";
25
25
 
26
26
  public:
27
27
  /**
@@ -13,37 +13,31 @@
13
13
 
14
14
  namespace margelo::nitro::nitroplayer {
15
15
 
16
- jni::local_ref<JHybridAndroidAutoMediaLibrarySpec::jhybriddata> JHybridAndroidAutoMediaLibrarySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
17
- return makeCxxInstance(jThis);
18
- }
19
-
20
- void JHybridAndroidAutoMediaLibrarySpec::registerNatives() {
21
- registerHybrid({
22
- makeNativeMethod("initHybrid", JHybridAndroidAutoMediaLibrarySpec::initHybrid),
23
- });
16
+ std::shared_ptr<JHybridAndroidAutoMediaLibrarySpec> JHybridAndroidAutoMediaLibrarySpec::JavaPart::getJHybridAndroidAutoMediaLibrarySpec() {
17
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
18
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridAndroidAutoMediaLibrarySpec>(hybridObject);
19
+ if (castHybridObject == nullptr) [[unlikely]] {
20
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridAndroidAutoMediaLibrarySpec!");
21
+ }
22
+ return castHybridObject;
24
23
  }
25
24
 
26
- size_t JHybridAndroidAutoMediaLibrarySpec::getExternalMemorySize() noexcept {
27
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
28
- return method(_javaPart);
25
+ jni::local_ref<JHybridAndroidAutoMediaLibrarySpec::CxxPart::jhybriddata> JHybridAndroidAutoMediaLibrarySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
26
+ return makeCxxInstance(jThis);
29
27
  }
30
28
 
31
- bool JHybridAndroidAutoMediaLibrarySpec::equals(const std::shared_ptr<HybridObject>& other) {
32
- if (auto otherCast = std::dynamic_pointer_cast<JHybridAndroidAutoMediaLibrarySpec>(other)) {
33
- return _javaPart == otherCast->_javaPart;
29
+ std::shared_ptr<JHybridObject> JHybridAndroidAutoMediaLibrarySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
30
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridAndroidAutoMediaLibrarySpec::JavaPart>(javaPart);
31
+ if (castJavaPart == nullptr) [[unlikely]] {
32
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridAndroidAutoMediaLibrarySpec::JavaPart!");
34
33
  }
35
- return false;
36
- }
37
-
38
- void JHybridAndroidAutoMediaLibrarySpec::dispose() noexcept {
39
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
- method(_javaPart);
34
+ return std::make_shared<JHybridAndroidAutoMediaLibrarySpec>(castJavaPart);
41
35
  }
42
36
 
43
- std::string JHybridAndroidAutoMediaLibrarySpec::toString() {
44
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
- auto javaString = method(_javaPart);
46
- return javaString->toStdString();
37
+ void JHybridAndroidAutoMediaLibrarySpec::CxxPart::registerNatives() {
38
+ registerHybrid({
39
+ makeNativeMethod("initHybrid", JHybridAndroidAutoMediaLibrarySpec::CxxPart::initHybrid),
40
+ });
47
41
  }
48
42
 
49
43
  // Properties
@@ -51,11 +45,11 @@ namespace margelo::nitro::nitroplayer {
51
45
 
52
46
  // Methods
53
47
  void JHybridAndroidAutoMediaLibrarySpec::setMediaLibrary(const std::string& libraryJson) {
54
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* libraryJson */)>("setMediaLibrary");
48
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* libraryJson */)>("setMediaLibrary");
55
49
  method(_javaPart, jni::make_jstring(libraryJson));
56
50
  }
57
51
  void JHybridAndroidAutoMediaLibrarySpec::clearMediaLibrary() {
58
- static const auto method = javaClassStatic()->getMethod<void()>("clearMediaLibrary");
52
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("clearMediaLibrary");
59
53
  method(_javaPart);
60
54
  }
61
55
 
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridAndroidAutoMediaLibrarySpec: public jni::HybridClass<JHybridAndroidAutoMediaLibrarySpec, JHybridObject>,
22
- public virtual HybridAndroidAutoMediaLibrarySpec {
21
+ class JHybridAndroidAutoMediaLibrarySpec: public virtual HybridAndroidAutoMediaLibrarySpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec;";
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 JHybridAndroidAutoMediaLibrarySpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridAndroidAutoMediaLibrarySpec::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/HybridAndroidAutoMediaLibrarySpec;";
25
+ std::shared_ptr<JHybridAndroidAutoMediaLibrarySpec> getJHybridAndroidAutoMediaLibrarySpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec$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 JHybridAndroidAutoMediaLibrarySpec(const jni::local_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart>& javaPart):
38
+ HybridObject(HybridAndroidAutoMediaLibrarySpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridAndroidAutoMediaLibrarySpec() 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<JHybridAndroidAutoMediaLibrarySpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -59,9 +58,7 @@ namespace margelo::nitro::nitroplayer {
59
58
  void clearMediaLibrary() override;
60
59
 
61
60
  private:
62
- friend HybridBase;
63
- using HybridBase::HybridBase;
64
- jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::javaobject> _javaPart;
61
+ jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart> _javaPart;
65
62
  };
66
63
 
67
64
  } // namespace margelo::nitro::nitroplayer
@@ -17,37 +17,31 @@ namespace margelo::nitro::nitroplayer { struct TAudioDevice; }
17
17
 
18
18
  namespace margelo::nitro::nitroplayer {
19
19
 
20
- jni::local_ref<JHybridAudioDevicesSpec::jhybriddata> JHybridAudioDevicesSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
21
- return makeCxxInstance(jThis);
22
- }
23
-
24
- void JHybridAudioDevicesSpec::registerNatives() {
25
- registerHybrid({
26
- makeNativeMethod("initHybrid", JHybridAudioDevicesSpec::initHybrid),
27
- });
20
+ std::shared_ptr<JHybridAudioDevicesSpec> JHybridAudioDevicesSpec::JavaPart::getJHybridAudioDevicesSpec() {
21
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
22
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridAudioDevicesSpec>(hybridObject);
23
+ if (castHybridObject == nullptr) [[unlikely]] {
24
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridAudioDevicesSpec!");
25
+ }
26
+ return castHybridObject;
28
27
  }
29
28
 
30
- size_t JHybridAudioDevicesSpec::getExternalMemorySize() noexcept {
31
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
32
- return method(_javaPart);
29
+ jni::local_ref<JHybridAudioDevicesSpec::CxxPart::jhybriddata> JHybridAudioDevicesSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
30
+ return makeCxxInstance(jThis);
33
31
  }
34
32
 
35
- bool JHybridAudioDevicesSpec::equals(const std::shared_ptr<HybridObject>& other) {
36
- if (auto otherCast = std::dynamic_pointer_cast<JHybridAudioDevicesSpec>(other)) {
37
- return _javaPart == otherCast->_javaPart;
33
+ std::shared_ptr<JHybridObject> JHybridAudioDevicesSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
34
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridAudioDevicesSpec::JavaPart>(javaPart);
35
+ if (castJavaPart == nullptr) [[unlikely]] {
36
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridAudioDevicesSpec::JavaPart!");
38
37
  }
39
- return false;
40
- }
41
-
42
- void JHybridAudioDevicesSpec::dispose() noexcept {
43
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
44
- method(_javaPart);
38
+ return std::make_shared<JHybridAudioDevicesSpec>(castJavaPart);
45
39
  }
46
40
 
47
- std::string JHybridAudioDevicesSpec::toString() {
48
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
49
- auto javaString = method(_javaPart);
50
- return javaString->toStdString();
41
+ void JHybridAudioDevicesSpec::CxxPart::registerNatives() {
42
+ registerHybrid({
43
+ makeNativeMethod("initHybrid", JHybridAudioDevicesSpec::CxxPart::initHybrid),
44
+ });
51
45
  }
52
46
 
53
47
  // Properties
@@ -55,7 +49,7 @@ namespace margelo::nitro::nitroplayer {
55
49
 
56
50
  // Methods
57
51
  std::vector<TAudioDevice> JHybridAudioDevicesSpec::getAudioDevices() {
58
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JTAudioDevice>>()>("getAudioDevices");
52
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JTAudioDevice>>()>("getAudioDevices");
59
53
  auto __result = method(_javaPart);
60
54
  return [&]() {
61
55
  size_t __size = __result->size();
@@ -69,7 +63,7 @@ namespace margelo::nitro::nitroplayer {
69
63
  }();
70
64
  }
71
65
  bool JHybridAudioDevicesSpec::setAudioDevice(double deviceId) {
72
- static const auto method = javaClassStatic()->getMethod<jboolean(double /* deviceId */)>("setAudioDevice");
66
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(double /* deviceId */)>("setAudioDevice");
73
67
  auto __result = method(_javaPart, deviceId);
74
68
  return static_cast<bool>(__result);
75
69
  }
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridAudioDevicesSpec: public jni::HybridClass<JHybridAudioDevicesSpec, JHybridObject>,
22
- public virtual HybridAudioDevicesSpec {
21
+ class JHybridAudioDevicesSpec: public virtual HybridAudioDevicesSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAudioDevicesSpec;";
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 JHybridAudioDevicesSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridAudioDevicesSpec::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/HybridAudioDevicesSpec;";
25
+ std::shared_ptr<JHybridAudioDevicesSpec> getJHybridAudioDevicesSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAudioDevicesSpec$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 JHybridAudioDevicesSpec(const jni::local_ref<JHybridAudioDevicesSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridAudioDevicesSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridAudioDevicesSpec() 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<JHybridAudioDevicesSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridAudioDevicesSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -59,9 +58,7 @@ namespace margelo::nitro::nitroplayer {
59
58
  bool setAudioDevice(double deviceId) override;
60
59
 
61
60
  private:
62
- friend HybridBase;
63
- using HybridBase::HybridBase;
64
- jni::global_ref<JHybridAudioDevicesSpec::javaobject> _javaPart;
61
+ jni::global_ref<JHybridAudioDevicesSpec::JavaPart> _javaPart;
65
62
  };
66
63
 
67
64
  } // namespace margelo::nitro::nitroplayer