#include #include #include "el_runtime.h" el_val_t lang_profile(el_val_t code, el_val_t word_order, el_val_t morph_type, el_val_t has_case, el_val_t has_gender, el_val_t script_dir, el_val_t agreement, el_val_t null_subject); el_val_t lang_get(el_val_t profile, el_val_t key); el_val_t lang_profile_en(void); el_val_t lang_profile_ja(void); el_val_t lang_profile_ar(void); el_val_t lang_profile_zh(void); el_val_t lang_profile_de(void); el_val_t lang_profile_es(void); el_val_t lang_profile_fi(void); el_val_t lang_profile_sw(void); el_val_t lang_profile_hi(void); el_val_t lang_profile_ru(void); el_val_t lang_profile_fr(void); el_val_t lang_profile_la(void); el_val_t lang_profile_he(void); el_val_t lang_profile_sa(void); el_val_t lang_profile_got(void); el_val_t lang_profile_non(void); el_val_t lang_profile_enm(void); el_val_t lang_profile_pi(void); el_val_t lang_profile_grc(void); el_val_t lang_profile_ang(void); el_val_t lang_profile_fro(void); el_val_t lang_profile_goh(void); el_val_t lang_profile_sga(void); el_val_t lang_profile_txb(void); el_val_t lang_profile_peo(void); el_val_t lang_profile_akk(void); el_val_t lang_profile_uga(void); el_val_t lang_profile_egy(void); el_val_t lang_profile_sux(void); el_val_t lang_profile_gez(void); el_val_t lang_profile_cop(void); el_val_t lang_from_code(el_val_t code); el_val_t lang_default(void); el_val_t lang_is_isolating(el_val_t profile); el_val_t lang_is_agglutinative(el_val_t profile); el_val_t lang_is_fusional(el_val_t profile); el_val_t lang_is_polysynthetic(el_val_t profile); el_val_t lang_is_rtl(el_val_t profile); el_val_t lang_has_null_subject(el_val_t profile); el_val_t lang_has_case(el_val_t profile); el_val_t lang_has_gender(el_val_t profile); el_val_t lang_word_order(el_val_t profile); el_val_t lang_code(el_val_t profile); el_val_t lang_profile(el_val_t code, el_val_t word_order, el_val_t morph_type, el_val_t has_case, el_val_t has_gender, el_val_t script_dir, el_val_t agreement, el_val_t null_subject) { el_val_t r = native_list_empty(); r = native_list_append(r, EL_STR("code")); r = native_list_append(r, code); r = native_list_append(r, EL_STR("word_order")); r = native_list_append(r, word_order); r = native_list_append(r, EL_STR("morph_type")); r = native_list_append(r, morph_type); r = native_list_append(r, EL_STR("has_case")); r = native_list_append(r, has_case); r = native_list_append(r, EL_STR("has_gender")); r = native_list_append(r, has_gender); r = native_list_append(r, EL_STR("script_dir")); r = native_list_append(r, script_dir); r = native_list_append(r, EL_STR("agreement")); r = native_list_append(r, agreement); r = native_list_append(r, EL_STR("null_subject")); r = native_list_append(r, null_subject); return r; return 0; } el_val_t lang_get(el_val_t profile, el_val_t key) { el_val_t n = native_list_len(profile); el_val_t i = 0; while (i < (n - 1)) { el_val_t k = native_list_get(profile, i); if (str_eq(k, key)) { return native_list_get(profile, (i + 1)); } i = (i + 2); } return EL_STR(""); return 0; } el_val_t lang_profile_en(void) { return lang_profile(EL_STR("en"), EL_STR("SVO"), EL_STR("fusional"), EL_STR("false"), EL_STR("false"), EL_STR("ltr"), EL_STR("number;person"), EL_STR("false")); return 0; } el_val_t lang_profile_ja(void) { return lang_profile(EL_STR("ja"), EL_STR("SOV"), EL_STR("agglutinative"), EL_STR("false"), EL_STR("false"), EL_STR("ltr"), EL_STR("none"), EL_STR("true")); return 0; } el_val_t lang_profile_ar(void) { return lang_profile(EL_STR("ar"), EL_STR("VSO"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("rtl"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_zh(void) { return lang_profile(EL_STR("zh"), EL_STR("SVO"), EL_STR("isolating"), EL_STR("false"), EL_STR("false"), EL_STR("ltr"), EL_STR("none"), EL_STR("true")); return 0; } el_val_t lang_profile_de(void) { return lang_profile(EL_STR("de"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_es(void) { return lang_profile(EL_STR("es"), EL_STR("SVO"), EL_STR("fusional"), EL_STR("false"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender"), EL_STR("true")); return 0; } el_val_t lang_profile_fi(void) { return lang_profile(EL_STR("fi"), EL_STR("SOV"), EL_STR("agglutinative"), EL_STR("true"), EL_STR("false"), EL_STR("ltr"), EL_STR("number;person;case"), EL_STR("false")); return 0; } el_val_t lang_profile_sw(void) { return lang_profile(EL_STR("sw"), EL_STR("SVO"), EL_STR("agglutinative"), EL_STR("false"), EL_STR("false"), EL_STR("ltr"), EL_STR("noun-class;number"), EL_STR("true")); return 0; } el_val_t lang_profile_hi(void) { return lang_profile(EL_STR("hi"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_ru(void) { return lang_profile(EL_STR("ru"), EL_STR("free"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_fr(void) { return lang_profile(EL_STR("fr"), EL_STR("SVO"), EL_STR("fusional"), EL_STR("false"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender"), EL_STR("false")); return 0; } el_val_t lang_profile_la(void) { return lang_profile(EL_STR("la"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_he(void) { return lang_profile(EL_STR("he"), EL_STR("SVO"), EL_STR("semitic"), EL_STR("true"), EL_STR("false"), EL_STR("rtl"), EL_STR("number;person;gender"), EL_STR("true")); return 0; } el_val_t lang_profile_sa(void) { return lang_profile(EL_STR("sa"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_got(void) { return lang_profile(EL_STR("got"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_non(void) { return lang_profile(EL_STR("non"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_enm(void) { return lang_profile(EL_STR("enm"), EL_STR("SVO"), EL_STR("fusional"), EL_STR("false"), EL_STR("false"), EL_STR("ltr"), EL_STR("number;person"), EL_STR("false")); return 0; } el_val_t lang_profile_pi(void) { return lang_profile(EL_STR("pi"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_grc(void) { return lang_profile(EL_STR("grc"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case;aspect"), EL_STR("true")); return 0; } el_val_t lang_profile_ang(void) { return lang_profile(EL_STR("ang"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_fro(void) { return lang_profile(EL_STR("fro"), EL_STR("SVO"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_goh(void) { return lang_profile(EL_STR("goh"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_sga(void) { return lang_profile(EL_STR("sga"), EL_STR("VSO"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("true")); return 0; } el_val_t lang_profile_txb(void) { return lang_profile(EL_STR("txb"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_peo(void) { return lang_profile(EL_STR("peo"), EL_STR("SOV"), EL_STR("fusional"), EL_STR("true"), EL_STR("false"), EL_STR("ltr"), EL_STR("number;person;case"), EL_STR("true")); return 0; } el_val_t lang_profile_akk(void) { return lang_profile(EL_STR("akk"), EL_STR("VSO"), EL_STR("fusional"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_uga(void) { return lang_profile(EL_STR("uga"), EL_STR("VSO"), EL_STR("semitic"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender;case"), EL_STR("false")); return 0; } el_val_t lang_profile_egy(void) { return lang_profile(EL_STR("egy"), EL_STR("SVO"), EL_STR("agglutinative"), EL_STR("false"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender"), EL_STR("true")); return 0; } el_val_t lang_profile_sux(void) { return lang_profile(EL_STR("sux"), EL_STR("SOV"), EL_STR("agglutinative"), EL_STR("true"), EL_STR("false"), EL_STR("ltr"), EL_STR("number;person"), EL_STR("true")); return 0; } el_val_t lang_profile_gez(void) { return lang_profile(EL_STR("gez"), EL_STR("SOV"), EL_STR("semitic"), EL_STR("true"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender"), EL_STR("true")); return 0; } el_val_t lang_profile_cop(void) { return lang_profile(EL_STR("cop"), EL_STR("SVO"), EL_STR("agglutinative"), EL_STR("false"), EL_STR("true"), EL_STR("ltr"), EL_STR("number;person;gender"), EL_STR("false")); return 0; } el_val_t lang_from_code(el_val_t code) { if (str_eq(code, EL_STR("en"))) { return lang_profile_en(); } if (str_eq(code, EL_STR("ja"))) { return lang_profile_ja(); } if (str_eq(code, EL_STR("ar"))) { return lang_profile_ar(); } if (str_eq(code, EL_STR("zh"))) { return lang_profile_zh(); } if (str_eq(code, EL_STR("de"))) { return lang_profile_de(); } if (str_eq(code, EL_STR("es"))) { return lang_profile_es(); } if (str_eq(code, EL_STR("fi"))) { return lang_profile_fi(); } if (str_eq(code, EL_STR("sw"))) { return lang_profile_sw(); } if (str_eq(code, EL_STR("hi"))) { return lang_profile_hi(); } if (str_eq(code, EL_STR("ru"))) { return lang_profile_ru(); } if (str_eq(code, EL_STR("fr"))) { return lang_profile_fr(); } if (str_eq(code, EL_STR("la"))) { return lang_profile_la(); } if (str_eq(code, EL_STR("he"))) { return lang_profile_he(); } if (str_eq(code, EL_STR("grc"))) { return lang_profile_grc(); } if (str_eq(code, EL_STR("ang"))) { return lang_profile_ang(); } if (str_eq(code, EL_STR("sa"))) { return lang_profile_sa(); } if (str_eq(code, EL_STR("got"))) { return lang_profile_got(); } if (str_eq(code, EL_STR("non"))) { return lang_profile_non(); } if (str_eq(code, EL_STR("enm"))) { return lang_profile_enm(); } if (str_eq(code, EL_STR("pi"))) { return lang_profile_pi(); } if (str_eq(code, EL_STR("fro"))) { return lang_profile_fro(); } if (str_eq(code, EL_STR("goh"))) { return lang_profile_goh(); } if (str_eq(code, EL_STR("sga"))) { return lang_profile_sga(); } if (str_eq(code, EL_STR("txb"))) { return lang_profile_txb(); } if (str_eq(code, EL_STR("peo"))) { return lang_profile_peo(); } if (str_eq(code, EL_STR("akk"))) { return lang_profile_akk(); } if (str_eq(code, EL_STR("uga"))) { return lang_profile_uga(); } if (str_eq(code, EL_STR("egy"))) { return lang_profile_egy(); } if (str_eq(code, EL_STR("sux"))) { return lang_profile_sux(); } if (str_eq(code, EL_STR("gez"))) { return lang_profile_gez(); } if (str_eq(code, EL_STR("cop"))) { return lang_profile_cop(); } return lang_profile_en(); return 0; } el_val_t lang_default(void) { return lang_profile_en(); return 0; } el_val_t lang_is_isolating(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("morph_type")), EL_STR("isolating")); return 0; } el_val_t lang_is_agglutinative(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("morph_type")), EL_STR("agglutinative")); return 0; } el_val_t lang_is_fusional(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("morph_type")), EL_STR("fusional")); return 0; } el_val_t lang_is_polysynthetic(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("morph_type")), EL_STR("polysynthetic")); return 0; } el_val_t lang_is_rtl(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("script_dir")), EL_STR("rtl")); return 0; } el_val_t lang_has_null_subject(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("null_subject")), EL_STR("true")); return 0; } el_val_t lang_has_case(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("has_case")), EL_STR("true")); return 0; } el_val_t lang_has_gender(el_val_t profile) { return str_eq(lang_get(profile, EL_STR("has_gender")), EL_STR("true")); return 0; } el_val_t lang_word_order(el_val_t profile) { return lang_get(profile, EL_STR("word_order")); return 0; } el_val_t lang_code(el_val_t profile) { return lang_get(profile, EL_STR("code")); return 0; }