opencc_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5extern crate link_cplusplus;
6
7use std::sync::LazyLock;
8
9#[allow(clippy::all)]
10mod bindings {
11    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
12}
13pub use bindings::*;
14
15macro_rules! JSON_PREFIX {
16    () => {
17        concat!(env!("CARGO_MANIFEST_DIR"), "/OpenCC/data/config/",)
18    };
19}
20
21macro_rules! OCD2_PREFIX {
22    () => {
23        "assets/"
24    };
25}
26
27pub struct Data {
28    pub file_name: &'static str,
29    pub content: &'static [u8],
30}
31
32macro_rules! new_json_data {
33    ($file_name:expr) => {
34        LazyLock::new(|| Data {
35            file_name: $file_name,
36            content: include_bytes!(concat!(JSON_PREFIX!(), $file_name)),
37        })
38    };
39}
40
41macro_rules! new_ocd2_data {
42    ($file_name:expr) => {
43        LazyLock::new(|| Data {
44            file_name: $file_name,
45            content: include_bytes!(concat!(OCD2_PREFIX!(), $file_name)),
46        })
47    };
48}
49
50pub static HK2S_JSON: LazyLock<Data> = new_json_data!("hk2s.json");
51pub static HK2T_JSON: LazyLock<Data> = new_json_data!("hk2t.json");
52pub static JP2T_JSON: LazyLock<Data> = new_json_data!("jp2t.json");
53pub static S2HK_JSON: LazyLock<Data> = new_json_data!("s2hk.json");
54pub static S2T_JSON: LazyLock<Data> = new_json_data!("s2t.json");
55pub static S2TW_JSON: LazyLock<Data> = new_json_data!("s2tw.json");
56pub static S2TWP_JSON: LazyLock<Data> = new_json_data!("s2twp.json");
57pub static T2HK_JSON: LazyLock<Data> = new_json_data!("t2hk.json");
58pub static T2JP_JSON: LazyLock<Data> = new_json_data!("t2jp.json");
59pub static T2S_JSON: LazyLock<Data> = new_json_data!("t2s.json");
60pub static T2TW_JSON: LazyLock<Data> = new_json_data!("t2tw.json");
61pub static TW2S_JSON: LazyLock<Data> = new_json_data!("tw2s.json");
62pub static TW2SP_JSON: LazyLock<Data> = new_json_data!("tw2sp.json");
63pub static TW2T_JSON: LazyLock<Data> = new_json_data!("tw2t.json");
64pub static HKVARIANTS_OCD2: LazyLock<Data> = new_ocd2_data!("HKVariants.ocd2");
65pub static HKVARIANTS_REV_OCD2: LazyLock<Data> = new_ocd2_data!("HKVariantsRev.ocd2");
66pub static HKVARIANTS_REV_PHRASES_OCD2: LazyLock<Data> =
67    new_ocd2_data!("HKVariantsRevPhrases.ocd2");
68pub static JPSHINJITAI_CHARATERS_OCD2: LazyLock<Data> =
69    new_ocd2_data!("JPShinjitaiCharacters.ocd2");
70pub static JPSHINJITAI_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("JPShinjitaiPhrases.ocd2");
71pub static JPVARIANTS_OCD2: LazyLock<Data> = new_ocd2_data!("JPVariants.ocd2");
72pub static JPVARIANTS_REV_OCD2: LazyLock<Data> = new_ocd2_data!("JPVariantsRev.ocd2");
73pub static STCHARACTERS_OCD2: LazyLock<Data> = new_ocd2_data!("STCharacters.ocd2");
74pub static STPHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("STPhrases.ocd2");
75pub static TSCHARACTERS_OCD2: LazyLock<Data> = new_ocd2_data!("TSCharacters.ocd2");
76pub static TSPHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("TSPhrases.ocd2");
77pub static TWPHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("TWPhrases.ocd2");
78pub static TWPHRASES_REV_OCD2: LazyLock<Data> = new_ocd2_data!("TWPhrasesRev.ocd2");
79pub static TWVARIANTS_OCD2: LazyLock<Data> = new_ocd2_data!("TWVariants.ocd2");
80pub static TWVARIANTS_REV_OCD2: LazyLock<Data> = new_ocd2_data!("TWVariantsRev.ocd2");
81pub static TWVARIANTS_REV_PHRASES_OCD2: LazyLock<Data> =
82    new_ocd2_data!("TWVariantsRevPhrases.ocd2");