@gmessier/nitro-speech 0.2.0 → 0.3.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 (52) hide show
  1. package/README.md +11 -3
  2. package/lib/tsconfig.tsbuildinfo +1 -1
  3. package/nitrogen/generated/android/NitroSpeech+autolinking.cmake +1 -1
  4. package/nitrogen/generated/android/NitroSpeech+autolinking.gradle +1 -1
  5. package/nitrogen/generated/android/NitroSpeechOnLoad.cpp +32 -22
  6. package/nitrogen/generated/android/NitroSpeechOnLoad.hpp +14 -5
  7. package/nitrogen/generated/android/c++/JFunc_void.hpp +1 -1
  8. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +1 -1
  9. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +1 -1
  10. package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +1 -1
  11. package/nitrogen/generated/android/c++/JHapticFeedbackStyle.hpp +5 -6
  12. package/nitrogen/generated/android/c++/JHybridNitroSpeechSpec.cpp +23 -22
  13. package/nitrogen/generated/android/c++/JHybridNitroSpeechSpec.hpp +20 -22
  14. package/nitrogen/generated/android/c++/JHybridRecognizerSpec.cpp +39 -38
  15. package/nitrogen/generated/android/c++/JHybridRecognizerSpec.hpp +20 -22
  16. package/nitrogen/generated/android/c++/JSpeechToTextParams.hpp +1 -1
  17. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/Func_void.kt +1 -1
  18. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/Func_void_double.kt +1 -1
  19. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/Func_void_std__string.kt +1 -1
  20. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/Func_void_std__vector_std__string_.kt +1 -1
  21. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/HapticFeedbackStyle.kt +3 -1
  22. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/HybridNitroSpeechSpec.kt +16 -19
  23. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/HybridRecognizerSpec.kt +16 -19
  24. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/NitroSpeechOnLoad.kt +1 -1
  25. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrospeech/SpeechToTextParams.kt +2 -2
  26. package/nitrogen/generated/ios/NitroSpeech+autolinking.rb +2 -2
  27. package/nitrogen/generated/ios/NitroSpeech-Swift-Cxx-Bridge.cpp +1 -1
  28. package/nitrogen/generated/ios/NitroSpeech-Swift-Cxx-Bridge.hpp +11 -11
  29. package/nitrogen/generated/ios/NitroSpeech-Swift-Cxx-Umbrella.hpp +1 -1
  30. package/nitrogen/generated/ios/NitroSpeechAutolinking.mm +1 -1
  31. package/nitrogen/generated/ios/NitroSpeechAutolinking.swift +9 -8
  32. package/nitrogen/generated/ios/c++/HybridNitroSpeechSpecSwift.cpp +1 -1
  33. package/nitrogen/generated/ios/c++/HybridNitroSpeechSpecSwift.hpp +7 -1
  34. package/nitrogen/generated/ios/c++/HybridRecognizerSpecSwift.cpp +1 -1
  35. package/nitrogen/generated/ios/c++/HybridRecognizerSpecSwift.hpp +7 -1
  36. package/nitrogen/generated/ios/swift/Func_void.swift +1 -2
  37. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -2
  38. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -2
  39. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +1 -2
  40. package/nitrogen/generated/ios/swift/HapticFeedbackStyle.swift +1 -1
  41. package/nitrogen/generated/ios/swift/HybridNitroSpeechSpec.swift +3 -4
  42. package/nitrogen/generated/ios/swift/HybridNitroSpeechSpec_cxx.swift +10 -3
  43. package/nitrogen/generated/ios/swift/HybridRecognizerSpec.swift +3 -4
  44. package/nitrogen/generated/ios/swift/HybridRecognizerSpec_cxx.swift +17 -3
  45. package/nitrogen/generated/ios/swift/SpeechToTextParams.swift +86 -218
  46. package/nitrogen/generated/shared/c++/HapticFeedbackStyle.hpp +1 -1
  47. package/nitrogen/generated/shared/c++/HybridNitroSpeechSpec.cpp +1 -1
  48. package/nitrogen/generated/shared/c++/HybridNitroSpeechSpec.hpp +1 -1
  49. package/nitrogen/generated/shared/c++/HybridRecognizerSpec.cpp +1 -1
  50. package/nitrogen/generated/shared/c++/HybridRecognizerSpec.hpp +1 -1
  51. package/nitrogen/generated/shared/c++/SpeechToTextParams.hpp +43 -35
  52. package/package.json +6 -3
@@ -2,7 +2,7 @@
2
2
  /// JHapticFeedbackStyle.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -41,19 +41,18 @@ namespace margelo::nitro::nitrospeech {
41
41
  [[maybe_unused]]
42
42
  static jni::alias_ref<JHapticFeedbackStyle> fromCpp(HapticFeedbackStyle value) {
43
43
  static const auto clazz = javaClassStatic();
44
- static const auto fieldLIGHT = clazz->getStaticField<JHapticFeedbackStyle>("LIGHT");
45
- static const auto fieldMEDIUM = clazz->getStaticField<JHapticFeedbackStyle>("MEDIUM");
46
- static const auto fieldHEAVY = clazz->getStaticField<JHapticFeedbackStyle>("HEAVY");
47
- static const auto fieldNONE = clazz->getStaticField<JHapticFeedbackStyle>("NONE");
48
-
49
44
  switch (value) {
50
45
  case HapticFeedbackStyle::LIGHT:
46
+ static const auto fieldLIGHT = clazz->getStaticField<JHapticFeedbackStyle>("LIGHT");
51
47
  return clazz->getStaticFieldValue(fieldLIGHT);
52
48
  case HapticFeedbackStyle::MEDIUM:
49
+ static const auto fieldMEDIUM = clazz->getStaticField<JHapticFeedbackStyle>("MEDIUM");
53
50
  return clazz->getStaticFieldValue(fieldMEDIUM);
54
51
  case HapticFeedbackStyle::HEAVY:
52
+ static const auto fieldHEAVY = clazz->getStaticField<JHapticFeedbackStyle>("HEAVY");
55
53
  return clazz->getStaticFieldValue(fieldHEAVY);
56
54
  case HapticFeedbackStyle::NONE:
55
+ static const auto fieldNONE = clazz->getStaticField<JHapticFeedbackStyle>("NONE");
57
56
  return clazz->getStaticFieldValue(fieldNONE);
58
57
  default:
59
58
  std::string stringValue = std::to_string(static_cast<int>(value));
@@ -2,7 +2,7 @@
2
2
  /// JHybridNitroSpeechSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridNitroSpeechSpec.hpp"
@@ -16,40 +16,41 @@ namespace margelo::nitro::nitrospeech { class HybridRecognizerSpec; }
16
16
 
17
17
  namespace margelo::nitro::nitrospeech {
18
18
 
19
- jni::local_ref<JHybridNitroSpeechSpec::jhybriddata> JHybridNitroSpeechSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
20
- return makeCxxInstance(jThis);
21
- }
22
-
23
- void JHybridNitroSpeechSpec::registerNatives() {
24
- registerHybrid({
25
- makeNativeMethod("initHybrid", JHybridNitroSpeechSpec::initHybrid),
26
- });
19
+ std::shared_ptr<JHybridNitroSpeechSpec> JHybridNitroSpeechSpec::JavaPart::getJHybridNitroSpeechSpec() {
20
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
21
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNitroSpeechSpec>(hybridObject);
22
+ if (castHybridObject == nullptr) [[unlikely]] {
23
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNitroSpeechSpec!");
24
+ }
25
+ return castHybridObject;
27
26
  }
28
27
 
29
- size_t JHybridNitroSpeechSpec::getExternalMemorySize() noexcept {
30
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
31
- return method(_javaPart);
28
+ jni::local_ref<JHybridNitroSpeechSpec::CxxPart::jhybriddata> JHybridNitroSpeechSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
29
+ return makeCxxInstance(jThis);
32
30
  }
33
31
 
34
- void JHybridNitroSpeechSpec::dispose() noexcept {
35
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
36
- method(_javaPart);
32
+ std::shared_ptr<JHybridObject> JHybridNitroSpeechSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
33
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNitroSpeechSpec::JavaPart>(javaPart);
34
+ if (castJavaPart == nullptr) [[unlikely]] {
35
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNitroSpeechSpec::JavaPart!");
36
+ }
37
+ return std::make_shared<JHybridNitroSpeechSpec>(castJavaPart);
37
38
  }
38
39
 
39
- std::string JHybridNitroSpeechSpec::toString() {
40
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
41
- auto javaString = method(_javaPart);
42
- return javaString->toStdString();
40
+ void JHybridNitroSpeechSpec::CxxPart::registerNatives() {
41
+ registerHybrid({
42
+ makeNativeMethod("initHybrid", JHybridNitroSpeechSpec::CxxPart::initHybrid),
43
+ });
43
44
  }
44
45
 
45
46
  // Properties
46
47
  std::shared_ptr<HybridRecognizerSpec> JHybridNitroSpeechSpec::getRecognizer() {
47
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridRecognizerSpec::javaobject>()>("getRecognizer");
48
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridRecognizerSpec::JavaPart>()>("getRecognizer");
48
49
  auto __result = method(_javaPart);
49
- return __result->cthis()->shared_cast<JHybridRecognizerSpec>();
50
+ return __result->getJHybridRecognizerSpec();
50
51
  }
51
52
  void JHybridNitroSpeechSpec::setRecognizer(const std::shared_ptr<HybridRecognizerSpec>& recognizer) {
52
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRecognizerSpec::javaobject> /* recognizer */)>("setRecognizer");
53
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRecognizerSpec::JavaPart> /* recognizer */)>("setRecognizer");
53
54
  method(_javaPart, std::dynamic_pointer_cast<JHybridRecognizerSpec>(recognizer)->getJavaPart());
54
55
  }
55
56
 
@@ -2,7 +2,7 @@
2
2
  /// HybridNitroSpeechSpec.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -18,33 +18,33 @@ namespace margelo::nitro::nitrospeech {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridNitroSpeechSpec: public jni::HybridClass<JHybridNitroSpeechSpec, JHybridObject>,
22
- public virtual HybridNitroSpeechSpec {
21
+ class JHybridNitroSpeechSpec: public virtual HybridNitroSpeechSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridNitroSpeechSpec;";
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 JHybridNitroSpeechSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridNitroSpeechSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridNitroSpeechSpec;";
25
+ std::shared_ptr<JHybridNitroSpeechSpec> getJHybridNitroSpeechSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridNitroSpeechSpec$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 JHybridNitroSpeechSpec(const jni::local_ref<JHybridNitroSpeechSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNitroSpeechSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridNitroSpeechSpec() 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
- void dispose() noexcept override;
44
- std::string toString() override;
45
-
46
- public:
47
- inline const jni::global_ref<JHybridNitroSpeechSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridNitroSpeechSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -58,9 +58,7 @@ namespace margelo::nitro::nitrospeech {
58
58
 
59
59
 
60
60
  private:
61
- friend HybridBase;
62
- using HybridBase::HybridBase;
63
- jni::global_ref<JHybridNitroSpeechSpec::javaobject> _javaPart;
61
+ jni::global_ref<JHybridNitroSpeechSpec::JavaPart> _javaPart;
64
62
  };
65
63
 
66
64
  } // namespace margelo::nitro::nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// JHybridRecognizerSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridRecognizerSpec.hpp"
@@ -28,35 +28,36 @@ namespace margelo::nitro::nitrospeech { enum class HapticFeedbackStyle; }
28
28
 
29
29
  namespace margelo::nitro::nitrospeech {
30
30
 
31
- jni::local_ref<JHybridRecognizerSpec::jhybriddata> JHybridRecognizerSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
32
- return makeCxxInstance(jThis);
33
- }
34
-
35
- void JHybridRecognizerSpec::registerNatives() {
36
- registerHybrid({
37
- makeNativeMethod("initHybrid", JHybridRecognizerSpec::initHybrid),
38
- });
31
+ std::shared_ptr<JHybridRecognizerSpec> JHybridRecognizerSpec::JavaPart::getJHybridRecognizerSpec() {
32
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
33
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRecognizerSpec>(hybridObject);
34
+ if (castHybridObject == nullptr) [[unlikely]] {
35
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRecognizerSpec!");
36
+ }
37
+ return castHybridObject;
39
38
  }
40
39
 
41
- size_t JHybridRecognizerSpec::getExternalMemorySize() noexcept {
42
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
43
- return method(_javaPart);
40
+ jni::local_ref<JHybridRecognizerSpec::CxxPart::jhybriddata> JHybridRecognizerSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
41
+ return makeCxxInstance(jThis);
44
42
  }
45
43
 
46
- void JHybridRecognizerSpec::dispose() noexcept {
47
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
48
- method(_javaPart);
44
+ std::shared_ptr<JHybridObject> JHybridRecognizerSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
45
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRecognizerSpec::JavaPart>(javaPart);
46
+ if (castJavaPart == nullptr) [[unlikely]] {
47
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRecognizerSpec::JavaPart!");
48
+ }
49
+ return std::make_shared<JHybridRecognizerSpec>(castJavaPart);
49
50
  }
50
51
 
51
- std::string JHybridRecognizerSpec::toString() {
52
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
53
- auto javaString = method(_javaPart);
54
- return javaString->toStdString();
52
+ void JHybridRecognizerSpec::CxxPart::registerNatives() {
53
+ registerHybrid({
54
+ makeNativeMethod("initHybrid", JHybridRecognizerSpec::CxxPart::initHybrid),
55
+ });
55
56
  }
56
57
 
57
58
  // Properties
58
59
  std::optional<std::function<void()>> JHybridRecognizerSpec::getOnReadyForSpeech() {
59
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnReadyForSpeech_cxx");
60
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnReadyForSpeech_cxx");
60
61
  auto __result = method(_javaPart);
61
62
  return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
62
63
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -69,11 +70,11 @@ namespace margelo::nitro::nitrospeech {
69
70
  }()) : std::nullopt;
70
71
  }
71
72
  void JHybridRecognizerSpec::setOnReadyForSpeech(const std::optional<std::function<void()>>& onReadyForSpeech) {
72
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onReadyForSpeech */)>("setOnReadyForSpeech_cxx");
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onReadyForSpeech */)>("setOnReadyForSpeech_cxx");
73
74
  method(_javaPart, onReadyForSpeech.has_value() ? JFunc_void_cxx::fromCpp(onReadyForSpeech.value()) : nullptr);
74
75
  }
75
76
  std::optional<std::function<void()>> JHybridRecognizerSpec::getOnRecordingStopped() {
76
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnRecordingStopped_cxx");
77
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnRecordingStopped_cxx");
77
78
  auto __result = method(_javaPart);
78
79
  return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
79
80
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -86,11 +87,11 @@ namespace margelo::nitro::nitrospeech {
86
87
  }()) : std::nullopt;
87
88
  }
88
89
  void JHybridRecognizerSpec::setOnRecordingStopped(const std::optional<std::function<void()>>& onRecordingStopped) {
89
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onRecordingStopped */)>("setOnRecordingStopped_cxx");
90
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onRecordingStopped */)>("setOnRecordingStopped_cxx");
90
91
  method(_javaPart, onRecordingStopped.has_value() ? JFunc_void_cxx::fromCpp(onRecordingStopped.value()) : nullptr);
91
92
  }
92
93
  std::optional<std::function<void(const std::vector<std::string>& /* resultBatches */)>> JHybridRecognizerSpec::getOnResult() {
93
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_std__vector_std__string_::javaobject>()>("getOnResult_cxx");
94
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_std__vector_std__string_::javaobject>()>("getOnResult_cxx");
94
95
  auto __result = method(_javaPart);
95
96
  return __result != nullptr ? std::make_optional([&]() -> std::function<void(const std::vector<std::string>& /* resultBatches */)> {
96
97
  if (__result->isInstanceOf(JFunc_void_std__vector_std__string__cxx::javaClassStatic())) [[likely]] {
@@ -103,11 +104,11 @@ namespace margelo::nitro::nitrospeech {
103
104
  }()) : std::nullopt;
104
105
  }
105
106
  void JHybridRecognizerSpec::setOnResult(const std::optional<std::function<void(const std::vector<std::string>& /* resultBatches */)>>& onResult) {
106
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_std__string_::javaobject> /* onResult */)>("setOnResult_cxx");
107
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_std__string_::javaobject> /* onResult */)>("setOnResult_cxx");
107
108
  method(_javaPart, onResult.has_value() ? JFunc_void_std__vector_std__string__cxx::fromCpp(onResult.value()) : nullptr);
108
109
  }
109
110
  std::optional<std::function<void(double /* timeLeftMs */)>> JHybridRecognizerSpec::getOnAutoFinishProgress() {
110
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnAutoFinishProgress_cxx");
111
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnAutoFinishProgress_cxx");
111
112
  auto __result = method(_javaPart);
112
113
  return __result != nullptr ? std::make_optional([&]() -> std::function<void(double /* timeLeftMs */)> {
113
114
  if (__result->isInstanceOf(JFunc_void_double_cxx::javaClassStatic())) [[likely]] {
@@ -120,11 +121,11 @@ namespace margelo::nitro::nitrospeech {
120
121
  }()) : std::nullopt;
121
122
  }
122
123
  void JHybridRecognizerSpec::setOnAutoFinishProgress(const std::optional<std::function<void(double /* timeLeftMs */)>>& onAutoFinishProgress) {
123
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onAutoFinishProgress */)>("setOnAutoFinishProgress_cxx");
124
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onAutoFinishProgress */)>("setOnAutoFinishProgress_cxx");
124
125
  method(_javaPart, onAutoFinishProgress.has_value() ? JFunc_void_double_cxx::fromCpp(onAutoFinishProgress.value()) : nullptr);
125
126
  }
126
127
  std::optional<std::function<void(const std::string& /* message */)>> JHybridRecognizerSpec::getOnError() {
127
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_std__string::javaobject>()>("getOnError_cxx");
128
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_std__string::javaobject>()>("getOnError_cxx");
128
129
  auto __result = method(_javaPart);
129
130
  return __result != nullptr ? std::make_optional([&]() -> std::function<void(const std::string& /* message */)> {
130
131
  if (__result->isInstanceOf(JFunc_void_std__string_cxx::javaClassStatic())) [[likely]] {
@@ -137,11 +138,11 @@ namespace margelo::nitro::nitrospeech {
137
138
  }()) : std::nullopt;
138
139
  }
139
140
  void JHybridRecognizerSpec::setOnError(const std::optional<std::function<void(const std::string& /* message */)>>& onError) {
140
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string::javaobject> /* onError */)>("setOnError_cxx");
141
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string::javaobject> /* onError */)>("setOnError_cxx");
141
142
  method(_javaPart, onError.has_value() ? JFunc_void_std__string_cxx::fromCpp(onError.value()) : nullptr);
142
143
  }
143
144
  std::optional<std::function<void()>> JHybridRecognizerSpec::getOnPermissionDenied() {
144
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPermissionDenied_cxx");
145
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPermissionDenied_cxx");
145
146
  auto __result = method(_javaPart);
146
147
  return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
147
148
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -154,11 +155,11 @@ namespace margelo::nitro::nitrospeech {
154
155
  }()) : std::nullopt;
155
156
  }
156
157
  void JHybridRecognizerSpec::setOnPermissionDenied(const std::optional<std::function<void()>>& onPermissionDenied) {
157
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onPermissionDenied */)>("setOnPermissionDenied_cxx");
158
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onPermissionDenied */)>("setOnPermissionDenied_cxx");
158
159
  method(_javaPart, onPermissionDenied.has_value() ? JFunc_void_cxx::fromCpp(onPermissionDenied.value()) : nullptr);
159
160
  }
160
161
  std::optional<std::function<void(double /* normVolume */)>> JHybridRecognizerSpec::getOnVolumeChange() {
161
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnVolumeChange_cxx");
162
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnVolumeChange_cxx");
162
163
  auto __result = method(_javaPart);
163
164
  return __result != nullptr ? std::make_optional([&]() -> std::function<void(double /* normVolume */)> {
164
165
  if (__result->isInstanceOf(JFunc_void_double_cxx::javaClassStatic())) [[likely]] {
@@ -171,29 +172,29 @@ namespace margelo::nitro::nitrospeech {
171
172
  }()) : std::nullopt;
172
173
  }
173
174
  void JHybridRecognizerSpec::setOnVolumeChange(const std::optional<std::function<void(double /* normVolume */)>>& onVolumeChange) {
174
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onVolumeChange */)>("setOnVolumeChange_cxx");
175
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onVolumeChange */)>("setOnVolumeChange_cxx");
175
176
  method(_javaPart, onVolumeChange.has_value() ? JFunc_void_double_cxx::fromCpp(onVolumeChange.value()) : nullptr);
176
177
  }
177
178
 
178
179
  // Methods
179
180
  void JHybridRecognizerSpec::startListening(const SpeechToTextParams& params) {
180
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JSpeechToTextParams> /* params */)>("startListening");
181
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JSpeechToTextParams> /* params */)>("startListening");
181
182
  method(_javaPart, JSpeechToTextParams::fromCpp(params));
182
183
  }
183
184
  void JHybridRecognizerSpec::stopListening() {
184
- static const auto method = javaClassStatic()->getMethod<void()>("stopListening");
185
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("stopListening");
185
186
  method(_javaPart);
186
187
  }
187
188
  void JHybridRecognizerSpec::addAutoFinishTime(std::optional<double> additionalTimeMs) {
188
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* additionalTimeMs */)>("addAutoFinishTime");
189
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* additionalTimeMs */)>("addAutoFinishTime");
189
190
  method(_javaPart, additionalTimeMs.has_value() ? jni::JDouble::valueOf(additionalTimeMs.value()) : nullptr);
190
191
  }
191
192
  void JHybridRecognizerSpec::updateAutoFinishTime(double newTimeMs, std::optional<bool> withRefresh) {
192
- static const auto method = javaClassStatic()->getMethod<void(double /* newTimeMs */, jni::alias_ref<jni::JBoolean> /* withRefresh */)>("updateAutoFinishTime");
193
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* newTimeMs */, jni::alias_ref<jni::JBoolean> /* withRefresh */)>("updateAutoFinishTime");
193
194
  method(_javaPart, newTimeMs, withRefresh.has_value() ? jni::JBoolean::valueOf(withRefresh.value()) : nullptr);
194
195
  }
195
196
  bool JHybridRecognizerSpec::getIsActive() {
196
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getIsActive");
197
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getIsActive");
197
198
  auto __result = method(_javaPart);
198
199
  return static_cast<bool>(__result);
199
200
  }
@@ -2,7 +2,7 @@
2
2
  /// HybridRecognizerSpec.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -18,33 +18,33 @@ namespace margelo::nitro::nitrospeech {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRecognizerSpec: public jni::HybridClass<JHybridRecognizerSpec, JHybridObject>,
22
- public virtual HybridRecognizerSpec {
21
+ class JHybridRecognizerSpec: public virtual HybridRecognizerSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridRecognizerSpec;";
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 JHybridRecognizerSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRecognizerSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridRecognizerSpec;";
25
+ std::shared_ptr<JHybridRecognizerSpec> getJHybridRecognizerSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrospeech/HybridRecognizerSpec$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 JHybridRecognizerSpec(const jni::local_ref<JHybridRecognizerSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRecognizerSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRecognizerSpec() 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
- void dispose() noexcept override;
44
- std::string toString() override;
45
-
46
- public:
47
- inline const jni::global_ref<JHybridRecognizerSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRecognizerSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -74,9 +74,7 @@ namespace margelo::nitro::nitrospeech {
74
74
  bool getIsActive() override;
75
75
 
76
76
  private:
77
- friend HybridBase;
78
- using HybridBase::HybridBase;
79
- jni::global_ref<JHybridRecognizerSpec::javaobject> _javaPart;
77
+ jni::global_ref<JHybridRecognizerSpec::JavaPart> _javaPart;
80
78
  };
81
79
 
82
80
  } // namespace margelo::nitro::nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// JSpeechToTextParams.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -2,7 +2,7 @@
2
2
  /// Func_void.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// Func_void_double.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// Func_void_std__string.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// Func_void_std__vector_std__string_.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -2,7 +2,7 @@
2
2
  /// HapticFeedbackStyle.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -20,4 +20,6 @@ enum class HapticFeedbackStyle(@DoNotStrip @Keep val value: Int) {
20
20
  MEDIUM(1),
21
21
  HEAVY(2),
22
22
  NONE(3);
23
+
24
+ companion object
23
25
  }
@@ -2,7 +2,7 @@
2
2
  /// HybridNitroSpeechSpec.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject
24
24
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
25
25
  )
26
26
  abstract class HybridNitroSpeechSpec: HybridObject() {
27
- @DoNotStrip
28
- private var mHybridData: HybridData = initHybrid()
29
-
30
- init {
31
- super.updateNative(mHybridData)
32
- }
33
-
34
- override fun updateNative(hybridData: HybridData) {
35
- mHybridData = hybridData
36
- super.updateNative(hybridData)
37
- }
38
-
39
- // Default implementation of `HybridObject.toString()`
40
- override fun toString(): String {
41
- return "[HybridObject NitroSpeech]"
42
- }
43
-
44
27
  // Properties
45
28
  @get:DoNotStrip
46
29
  @get:Keep
@@ -51,7 +34,21 @@ abstract class HybridNitroSpeechSpec: HybridObject() {
51
34
  // Methods
52
35
 
53
36
 
54
- private external fun initHybrid(): HybridData
37
+ // Default implementation of `HybridObject.toString()`
38
+ override fun toString(): String {
39
+ return "[HybridObject NitroSpeech]"
40
+ }
41
+
42
+ // C++ backing class
43
+ @DoNotStrip
44
+ @Keep
45
+ protected open class CxxPart(javaPart: HybridNitroSpeechSpec): HybridObject.CxxPart(javaPart) {
46
+ // C++ JHybridNitroSpeechSpec::CxxPart::initHybrid(...)
47
+ external override fun initHybrid(): HybridData
48
+ }
49
+ override fun createCxxPart(): CxxPart {
50
+ return CxxPart(this)
51
+ }
55
52
 
56
53
  companion object {
57
54
  protected const val TAG = "HybridNitroSpeechSpec"
@@ -2,7 +2,7 @@
2
2
  /// HybridRecognizerSpec.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech
@@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject
24
24
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
25
25
  )
26
26
  abstract class HybridRecognizerSpec: HybridObject() {
27
- @DoNotStrip
28
- private var mHybridData: HybridData = initHybrid()
29
-
30
- init {
31
- super.updateNative(mHybridData)
32
- }
33
-
34
- override fun updateNative(hybridData: HybridData) {
35
- mHybridData = hybridData
36
- super.updateNative(hybridData)
37
- }
38
-
39
- // Default implementation of `HybridObject.toString()`
40
- override fun toString(): String {
41
- return "[HybridObject Recognizer]"
42
- }
43
-
44
27
  // Properties
45
28
  abstract var onReadyForSpeech: (() -> Unit)?
46
29
 
@@ -161,7 +144,21 @@ abstract class HybridRecognizerSpec: HybridObject() {
161
144
  @Keep
162
145
  abstract fun getIsActive(): Boolean
163
146
 
164
- private external fun initHybrid(): HybridData
147
+ // Default implementation of `HybridObject.toString()`
148
+ override fun toString(): String {
149
+ return "[HybridObject Recognizer]"
150
+ }
151
+
152
+ // C++ backing class
153
+ @DoNotStrip
154
+ @Keep
155
+ protected open class CxxPart(javaPart: HybridRecognizerSpec): HybridObject.CxxPart(javaPart) {
156
+ // C++ JHybridRecognizerSpec::CxxPart::initHybrid(...)
157
+ external override fun initHybrid(): HybridData
158
+ }
159
+ override fun createCxxPart(): CxxPart {
160
+ return CxxPart(this)
161
+ }
165
162
 
166
163
  companion object {
167
164
  protected const val TAG = "HybridRecognizerSpec"
@@ -2,7 +2,7 @@
2
2
  /// NitroSpeechOnLoad.kt
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  package com.margelo.nitro.nitrospeech