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 HK2SP_JSON: LazyLock<Data> = new_json_data!("hk2sp.json");
52pub static HK2T_JSON: LazyLock<Data> = new_json_data!("hk2t.json");
53pub static JP2T_JSON: LazyLock<Data> = new_json_data!("jp2t.json");
54pub static S2HK_JSON: LazyLock<Data> = new_json_data!("s2hk.json");
55pub static S2HKP_JSON: LazyLock<Data> = new_json_data!("s2hkp.json");
56pub static S2T_JSON: LazyLock<Data> = new_json_data!("s2t.json");
57pub static S2TW_JSON: LazyLock<Data> = new_json_data!("s2tw.json");
58pub static S2TWP_JSON: LazyLock<Data> = new_json_data!("s2twp.json");
59pub static T2HK_JSON: LazyLock<Data> = new_json_data!("t2hk.json");
60pub static T2JP_JSON: LazyLock<Data> = new_json_data!("t2jp.json");
61pub static T2S_JSON: LazyLock<Data> = new_json_data!("t2s.json");
62pub static T2TW_JSON: LazyLock<Data> = new_json_data!("t2tw.json");
63pub static TW2S_JSON: LazyLock<Data> = new_json_data!("tw2s.json");
64pub static TW2SP_JSON: LazyLock<Data> = new_json_data!("tw2sp.json");
65pub static TW2T_JSON: LazyLock<Data> = new_json_data!("tw2t.json");
66
67pub static CJK_COMPATIBILITY_IDEOGRAPHS_OCD2: LazyLock<Data> =
68 new_ocd2_data!("CJK_Compatibility_Ideographs.ocd2");
69pub static HK_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("HKPhrases.ocd2");
70pub static HK_PHRASES_REV_OCD2: LazyLock<Data> = new_ocd2_data!("HKPhrasesRev.ocd2");
71pub static HK_VARIANTS_OCD2: LazyLock<Data> = new_ocd2_data!("HKVariants.ocd2");
72pub static HK_VARIANTS_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("HKVariantsPhrases.ocd2");
73pub static HK_VARIANTS_REV_OCD2: LazyLock<Data> = new_ocd2_data!("HKVariantsRev.ocd2");
74pub static HK_VARIANTS_REV_PHRASES_OCD2: LazyLock<Data> =
75 new_ocd2_data!("HKVariantsRevPhrases.ocd2");
76pub static JP_SHINJITAI_CHARATERS_OCD2: LazyLock<Data> =
77 new_ocd2_data!("JPShinjitaiCharacters.ocd2");
78pub static JP_SHINJITAI_CHARACTERS_REV_OCD2: LazyLock<Data> =
79 new_ocd2_data!("JPShinjitaiCharactersRev.ocd2");
80pub static JP_SHINJITAI_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("JPShinjitaiPhrases.ocd2");
81pub static ST_CHARACTERS_OCD2: LazyLock<Data> = new_ocd2_data!("STCharacters.ocd2");
82pub static ST_PHRASES_GENERATED_FROM_REGIONAL_PHRASES_OCD2: LazyLock<Data> =
83 new_ocd2_data!("STPhrases_GeneratedFromRegionalPhrases.ocd2");
84pub static ST_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("STPhrases.ocd2");
85pub static TS_CHARACTERS_OCD2: LazyLock<Data> = new_ocd2_data!("TSCharacters.ocd2");
86pub static TS_CHARACTERS_EXT_OCD2: LazyLock<Data> = new_ocd2_data!("TSCharactersExt.ocd2");
87pub static TS_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("TSPhrases.ocd2");
88pub static TW_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("TWPhrases.ocd2");
89pub static TW_PHRASES_REV_OCD2: LazyLock<Data> = new_ocd2_data!("TWPhrasesRev.ocd2");
90pub static TW_VARIANTS_OCD2: LazyLock<Data> = new_ocd2_data!("TWVariants.ocd2");
91pub static TW_VARIANTS_PHRASES_OCD2: LazyLock<Data> = new_ocd2_data!("TWVariantsPhrases.ocd2");
92pub static TW_VARIANTS_REV_OCD2: LazyLock<Data> = new_ocd2_data!("TWVariantsRev.ocd2");
93pub static TW_VARIANTS_REV_PHRASES_OCD2: LazyLock<Data> =
94 new_ocd2_data!("TWVariantsRevPhrases.ocd2");