Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: cstr!("…")c"…"に置き換える #782

Merged
merged 3 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading