Skip to content

Commit

Permalink
refactor: cstr!("…")c"…"に置き換える (VOICEVOX#782)
Browse files Browse the repository at this point in the history
  • Loading branch information
qryxip authored Oct 14, 2024
1 parent b82f7dc commit 683da55
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 68 deletions.
11 changes: 0 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ color-eyre = "0.6.3"
colorchoice = "1.0.2"
comrak = "0.26.0"
const_format = "0.2.33"
cstr = "0.2.12" # https://github.com/dtolnay/syn/issues/1502
derive-getters = "0.2.0"
derive-new = "0.5.9"
derive-syn-parse = "0.2.0"
Expand Down
1 change: 0 additions & 1 deletion crates/voicevox_core_c_api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ camino.workspace = true
chrono = { workspace = true, default-features = false, features = ["clock"] }
colorchoice.workspace = true
const_format.workspace = true
cstr.workspace = true
duplicate.workspace = true
easy-ext.workspace = true
educe.workspace = true
Expand Down
4 changes: 1 addition & 3 deletions crates/voicevox_core_c_api/src/drop_check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,6 @@ impl CStringDropChecker {
mod tests {
use std::ffi::{c_char, CStr};

use cstr::cstr;

use super::CStringDropChecker;

#[test]
Expand All @@ -118,7 +116,7 @@ mod tests {
)]
fn it_denies_duplicated_char_ptr() {
let checker = CStringDropChecker::new();
let s = cstr!("").to_owned();
let s = c"".to_owned();
checker.whitelist(checker.whitelist(s));
}

Expand Down
72 changes: 31 additions & 41 deletions crates/voicevox_core_c_api/src/result_code.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
use std::ffi::CStr;

use cstr::cstr;

/// 処理結果を示す結果コード。
#[repr(i32)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
Expand Down Expand Up @@ -65,56 +63,48 @@ pub enum VoicevoxResultCode {
pub(crate) const fn error_result_to_message(result_code: VoicevoxResultCode) -> &'static CStr {
use VoicevoxResultCode::*;
match result_code {
VOICEVOX_RESULT_NOT_LOADED_OPENJTALK_DICT_ERROR => {
cstr!("OpenJTalkの辞書が読み込まれていません")
}
VOICEVOX_RESULT_GPU_SUPPORT_ERROR => cstr!("GPU機能をサポートすることができません"),
VOICEVOX_RESULT_NOT_LOADED_OPENJTALK_DICT_ERROR => c"OpenJTalkの辞書が読み込まれていません",
VOICEVOX_RESULT_GPU_SUPPORT_ERROR => c"GPU機能をサポートすることができません",
VOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERROR => {
cstr!("サポートされているデバイス情報取得中にエラーが発生しました")
c"サポートされているデバイス情報取得中にエラーが発生しました"
}
VOICEVOX_RESULT_INIT_INFERENCE_RUNTIME_ERROR => {
cstr!("推論ライブラリのロードまたは初期化ができませんでした")
c"推論ライブラリのロードまたは初期化ができませんでした"
}
VOICEVOX_RESULT_OK => cstr!("エラーが発生しませんでした"),
VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR => cstr!(
"指定されたIDに対するスタイルが見つかりませんでした。音声モデルが読み込まれていないか\
、読み込みが解除されています"
),
VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR => cstr!(
"指定されたIDに対する音声モデルが見つかりませんでした。読み込まれていないか、読み込み\
が既に解除されています"
),
VOICEVOX_RESULT_RUN_MODEL_ERROR => cstr!("推論に失敗しました"),
VOICEVOX_RESULT_EXTRACT_FULL_CONTEXT_LABEL_ERROR => {
cstr!("入力テキストからのフルコンテキストラベル抽出に失敗しました")
VOICEVOX_RESULT_OK => c"エラーが発生しませんでした",
VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR => {
c"指定されたIDに対するスタイルが見つかりませんでした。音声モデルが読み込まれていない\
か、読み込みが解除されています"
}
VOICEVOX_RESULT_INVALID_UTF8_INPUT_ERROR => cstr!("入力テキストが無効なUTF-8データでした"),
VOICEVOX_RESULT_PARSE_KANA_ERROR => {
cstr!("入力テキストをAquesTalk風記法としてパースすることに失敗しました")
VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR => {
c"指定されたIDに対する音声モデルが見つかりませんでした。読み込まれていないか、読み込み\
が既に解除されています"
}
VOICEVOX_RESULT_INVALID_AUDIO_QUERY_ERROR => cstr!("無効なaudio_queryです"),
VOICEVOX_RESULT_INVALID_ACCENT_PHRASE_ERROR => cstr!("無効なaccent_phraseです"),
VOICEVOX_RESULT_OPEN_ZIP_FILE_ERROR => cstr!("ZIPファイルのオープンに失敗しました"),
VOICEVOX_RESULT_READ_ZIP_ENTRY_ERROR => {
cstr!("ZIP内のファイルを読むことができませんでした")
}
VOICEVOX_RESULT_INVALID_MODEL_HEADER_ERROR => cstr!("モデルの形式が不正です"),
VOICEVOX_RESULT_MODEL_ALREADY_LOADED_ERROR => cstr!("同じIDのモデルを読むことはできません"),
VOICEVOX_RESULT_STYLE_ALREADY_LOADED_ERROR => {
cstr!("同じIDのスタイルを読むことはできません")
VOICEVOX_RESULT_RUN_MODEL_ERROR => c"推論に失敗しました",
VOICEVOX_RESULT_EXTRACT_FULL_CONTEXT_LABEL_ERROR => {
c"入力テキストからのフルコンテキストラベル抽出に失敗しました"
}
VOICEVOX_RESULT_INVALID_MODEL_DATA_ERROR => {
cstr!("モデルデータを読むことができませんでした")
VOICEVOX_RESULT_INVALID_UTF8_INPUT_ERROR => c"入力テキストが無効なUTF-8データでした",
VOICEVOX_RESULT_PARSE_KANA_ERROR => {
c"入力テキストをAquesTalk風記法としてパースすることに失敗しました"
}
VOICEVOX_RESULT_LOAD_USER_DICT_ERROR => cstr!("ユーザー辞書を読み込めませんでした"),
VOICEVOX_RESULT_SAVE_USER_DICT_ERROR => cstr!("ユーザー辞書を書き込めませんでした"),
VOICEVOX_RESULT_INVALID_AUDIO_QUERY_ERROR => c"無効なaudio_queryです",
VOICEVOX_RESULT_INVALID_ACCENT_PHRASE_ERROR => c"無効なaccent_phraseです",
VOICEVOX_RESULT_OPEN_ZIP_FILE_ERROR => c"ZIPファイルのオープンに失敗しました",
VOICEVOX_RESULT_READ_ZIP_ENTRY_ERROR => c"ZIP内のファイルを読むことができませんでした",
VOICEVOX_RESULT_INVALID_MODEL_HEADER_ERROR => c"モデルの形式が不正です",
VOICEVOX_RESULT_MODEL_ALREADY_LOADED_ERROR => c"同じIDのモデルを読むことはできません",
VOICEVOX_RESULT_STYLE_ALREADY_LOADED_ERROR => c"同じIDのスタイルを読むことはできません",
VOICEVOX_RESULT_INVALID_MODEL_DATA_ERROR => c"モデルデータを読むことができませんでした",
VOICEVOX_RESULT_LOAD_USER_DICT_ERROR => c"ユーザー辞書を読み込めませんでした",
VOICEVOX_RESULT_SAVE_USER_DICT_ERROR => c"ユーザー辞書を書き込めませんでした",
VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR => {
cstr!("ユーザー辞書に単語が見つかりませんでした")
c"ユーザー辞書に単語が見つかりませんでした"
}
VOICEVOX_RESULT_USE_USER_DICT_ERROR => cstr!("OpenJTalkのユーザー辞書の設定に失敗しました"),
VOICEVOX_RESULT_USE_USER_DICT_ERROR => c"OpenJTalkのユーザー辞書の設定に失敗しました",
VOICEVOX_RESULT_INVALID_USER_DICT_WORD_ERROR => {
cstr!("ユーザー辞書の単語のバリデーションに失敗しました")
c"ユーザー辞書の単語のバリデーションに失敗しました"
}
VOICEVOX_RESULT_INVALID_UUID_ERROR => cstr!("UUIDの変換に失敗しました"),
VOICEVOX_RESULT_INVALID_UUID_ERROR => c"UUIDの変換に失敗しました",
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ use std::mem::MaybeUninit;
use std::sync::LazyLock;

use assert_cmd::assert::AssertResult;
use cstr::cstr;
use libloading::Library;
use serde::{Deserialize, Serialize};
use test_util::c_api::{self, CApi, VoicevoxInitializeOptions, VoicevoxResultCode};
Expand All @@ -33,8 +32,8 @@ impl assert_cdylib::TestCase for TestCase {

let word = {
let mut word = lib.voicevox_user_dict_word_make(
cstr!("this_word_should_not_exist_in_default_dictionary").as_ptr(),
cstr!("アイウエオ").as_ptr(),
c"this_word_should_not_exist_in_default_dictionary".as_ptr(),
c"アイウエオ".as_ptr(),
);
word.word_type =
c_api::VoicevoxUserDictWordType_VOICEVOX_USER_DICT_WORD_TYPE_PROPER_NOUN;
Expand Down Expand Up @@ -92,7 +91,7 @@ impl assert_cdylib::TestCase for TestCase {
let mut audio_query_without_dict = std::ptr::null_mut();
assert_ok(lib.voicevox_synthesizer_create_audio_query(
synthesizer,
cstr!("this_word_should_not_exist_in_default_dictionary").as_ptr(),
c"this_word_should_not_exist_in_default_dictionary".as_ptr(),
STYLE_ID,
&mut audio_query_without_dict,
));
Expand All @@ -105,7 +104,7 @@ impl assert_cdylib::TestCase for TestCase {
let mut audio_query_with_dict = std::ptr::null_mut();
assert_ok(lib.voicevox_synthesizer_create_audio_query(
synthesizer,
cstr!("this_word_should_not_exist_in_default_dictionary").as_ptr(),
c"this_word_should_not_exist_in_default_dictionary".as_ptr(),
STYLE_ID,
&mut audio_query_with_dict,
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use assert_cmd::assert::AssertResult;
use tempfile::NamedTempFile;
use uuid::Uuid;

use cstr::cstr;
use libloading::Library;
use serde::{Deserialize, Serialize};
use test_util::c_api::{self, CApi, VoicevoxResultCode, VoicevoxUserDict, VoicevoxUserDictWord};
Expand Down Expand Up @@ -58,7 +57,7 @@ impl assert_cdylib::TestCase for TestCase {
let dict = lib.voicevox_user_dict_new();

// 単語の追加のテスト
let word = lib.voicevox_user_dict_word_make(cstr!("hoge").as_ptr(), cstr!("ホゲ").as_ptr());
let word = lib.voicevox_user_dict_word_make(c"hoge".as_ptr(), c"ホゲ".as_ptr());

let word_uuid = add_word(dict, &word);

Expand All @@ -69,7 +68,7 @@ impl assert_cdylib::TestCase for TestCase {
assert_contains_uuid(&json, &word_uuid);

// 単語の変更のテスト
let word = lib.voicevox_user_dict_word_make(cstr!("fuga").as_ptr(), cstr!("フガ").as_ptr());
let word = lib.voicevox_user_dict_word_make(c"fuga".as_ptr(), c"フガ".as_ptr());

assert_ok(lib.voicevox_user_dict_update_word(dict, &word_uuid.into_bytes(), &word));

Expand All @@ -84,8 +83,7 @@ impl assert_cdylib::TestCase for TestCase {
// 辞書のインポートのテスト。
let other_dict = lib.voicevox_user_dict_new();

let other_word =
lib.voicevox_user_dict_word_make(cstr!("piyo").as_ptr(), cstr!("ピヨ").as_ptr());
let other_word = lib.voicevox_user_dict_word_make(c"piyo".as_ptr(), c"ピヨ".as_ptr());

let other_word_uuid = add_word(other_dict, &other_word);

Expand All @@ -110,7 +108,7 @@ impl assert_cdylib::TestCase for TestCase {
// 辞書のセーブ・ロードのテスト
let temp_path = NamedTempFile::new().unwrap().into_temp_path();
let temp_path = CString::new(temp_path.to_str().unwrap()).unwrap();
let word = lib.voicevox_user_dict_word_make(cstr!("hoge").as_ptr(), cstr!("ホゲ").as_ptr());
let word = lib.voicevox_user_dict_word_make(c"hoge".as_ptr(), c"ホゲ".as_ptr());
let word_uuid = add_word(dict, &word);

assert_ok(lib.voicevox_user_dict_save(dict, temp_path.as_ptr()));
Expand Down

0 comments on commit 683da55

Please sign in to comment.