prism-sys 0.1.3

Raw FFI bindings to the prism speech library
Documentation
#include <print>
#include <prism.h>

int main() {
  auto *const ctx = prism_init(nullptr);
  if (ctx == nullptr) {
    std::println("Could not initialize prism");
    return 1;
  }
  if (!prism_registry_exists(ctx, PRISM_BACKEND_ORCA)) {
    std::println(
        "Error: Orca backend was not compiled into this build of Prism");
    prism_shutdown(ctx);
    return 1;
  }
  auto *const backend = prism_registry_create(ctx, PRISM_BACKEND_ORCA);
  if (backend == nullptr) {
    std::println("Error: could not instantiate Prism Orca backend");
    prism_shutdown(ctx);
    return 1;
  }
  if (const auto res = prism_backend_initialize(backend); res != PRISM_OK) {
    std::println("Error: could not initialize Prism Orca backend: {}",
                 prism_error_string(res));
    prism_backend_free(backend);
    prism_shutdown(ctx);
    return 1;
  }
  if (const auto res = prism_backend_speak(backend, "Café", true);
      res != PRISM_OK) {
    std::println("Error: could not speak using Orca: {}",
                 prism_error_string(res));
    prism_backend_free(backend);
    prism_shutdown(ctx);
    return 1;
  }
  prism_backend_free(backend);
  prism_shutdown(ctx);
  return 0;
}