Merge pull request #48 from jcsoo/token_to_cstr

Add token_to_cstr
This commit is contained in:
0/0 2023-05-05 01:30:37 +00:00 committed by GitHub
commit a7caf1b96a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 4 deletions

View file

@ -311,13 +311,27 @@ impl WhisperContext {
/// # C++ equivalent
/// `const char * whisper_token_to_str(struct whisper_context * ctx, whisper_token token)`
pub fn token_to_str(&self, token_id: WhisperToken) -> Result<String, WhisperError> {
let c_str = self.token_to_cstr(token_id)?;
let r_str = c_str.to_str()?;
Ok(r_str.to_string())
}
/// Convert a token ID to a &CStr.
///
/// # Arguments
/// * token_id: ID of the token.
///
/// # Returns
/// Ok(String) on success, Err(WhisperError) on failure.
///
/// # C++ equivalent
/// `const char * whisper_token_to_str(struct whisper_context * ctx, whisper_token token)`
pub fn token_to_cstr(&self, token_id: WhisperToken) -> Result<&CStr, WhisperError> {
let ret = unsafe { whisper_rs_sys::whisper_token_to_str(self.ctx, token_id) };
if ret.is_null() {
return Err(WhisperError::NullPointer);
}
let c_str = unsafe { CStr::from_ptr(ret) };
let r_str = c_str.to_str()?;
Ok(r_str.to_string())
Ok(unsafe { CStr::from_ptr(ret) })
}
/// Undocumented but exposed function in the C++ API.

@ -1 +1 @@
Subproject commit c23588cc4b2c4be4ba3634a21c7f2b302c5f370e
Subproject commit 5108b30e6daf361c856abb6b86e5038500bdbeb1