fix: restore elb build — import paths, morphology deps, C master declarations header

- Fix wrong ELP import paths in soul.el, elp-input.el, studio.el
  (../foundation/elp/src → ../foundation/el/elp/src)
- Add missing import "morphology.el" to all 29 language morphology modules
- Recompile all affected dist/*.c with correct cross-module declarations
- Add dist/elp-c-decls.h: C-level master forward declarations for ELP package
  (enables elb --force-include to resolve undeclared cross-module calls)
This commit is contained in:
2026-05-08 19:43:57 -05:00
parent ffadafb0bf
commit 48ecd83421
50 changed files with 2107 additions and 341 deletions
+200 -25
View File
@@ -47,44 +47,219 @@ 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 es_pluralize(el_val_t noun);
el_val_t es_str_ends(el_val_t s, el_val_t suf);
el_val_t es_str_drop_last(el_val_t s, el_val_t n);
el_val_t es_str_last_char(el_val_t s);
el_val_t es_str_last2(el_val_t s);
el_val_t es_str_last3(el_val_t s);
el_val_t es_verb_class(el_val_t base);
el_val_t es_stem(el_val_t base);
el_val_t es_slot(el_val_t person, el_val_t number);
el_val_t es_irregular_present(el_val_t verb, el_val_t person, el_val_t number);
el_val_t es_irregular_preterite(el_val_t verb, el_val_t person, el_val_t number);
el_val_t es_irregular_imperfect(el_val_t verb, el_val_t person, el_val_t number);
el_val_t es_regular_present(el_val_t stem, el_val_t vclass, el_val_t slot);
el_val_t es_regular_preterite(el_val_t stem, el_val_t vclass, el_val_t slot);
el_val_t es_regular_future(el_val_t base, el_val_t slot);
el_val_t es_irregular_future_stem(el_val_t verb);
el_val_t es_regular_imperfect(el_val_t stem, el_val_t vclass, el_val_t slot);
el_val_t es_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t fr_pluralize(el_val_t noun);
el_val_t es_gender(el_val_t noun);
el_val_t es_invariant_plural(el_val_t noun);
el_val_t es_pluralize(el_val_t noun);
el_val_t es_starts_with_stressed_a(el_val_t noun);
el_val_t es_agree_article(el_val_t noun, el_val_t definite, el_val_t number);
el_val_t fr_str_ends(el_val_t s, el_val_t suf);
el_val_t fr_str_drop_last(el_val_t s, el_val_t n);
el_val_t fr_str_last_char(el_val_t s);
el_val_t fr_str_last2(el_val_t s);
el_val_t fr_is_vowel_start(el_val_t s);
el_val_t fr_is_known_irregular(el_val_t verb);
el_val_t fr_verb_group(el_val_t base);
el_val_t fr_stem(el_val_t base);
el_val_t fr_slot(el_val_t person, el_val_t number);
el_val_t fr_irregular_present(el_val_t verb, el_val_t person, el_val_t number);
el_val_t fr_regular_present(el_val_t stem, el_val_t vgroup, el_val_t slot);
el_val_t fr_future_stem(el_val_t base, el_val_t vgroup);
el_val_t fr_regular_future(el_val_t fstem, el_val_t slot);
el_val_t fr_irregular_future_stem(el_val_t verb);
el_val_t fr_imperfect_stem(el_val_t base, el_val_t vgroup);
el_val_t fr_regular_imperfect(el_val_t istem, el_val_t slot);
el_val_t fr_uses_etre(el_val_t verb);
el_val_t fr_past_participle(el_val_t verb);
el_val_t fr_avoir_present(el_val_t slot);
el_val_t fr_etre_present(el_val_t slot);
el_val_t fr_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t fr_gender(el_val_t noun);
el_val_t fr_invariant_plural(el_val_t noun);
el_val_t fr_pluralize(el_val_t noun);
el_val_t fr_agree_article(el_val_t noun, el_val_t definite, el_val_t number);
el_val_t fr_subject_starts_vowel(el_val_t subject);
el_val_t fr_verb_ends_vowel(el_val_t verb_form);
el_val_t fr_question_inversion(el_val_t subject, el_val_t verb_form);
el_val_t de_article_def(el_val_t gender, el_val_t gram_case, el_val_t number);
el_val_t de_article_indef(el_val_t gender, el_val_t gram_case, el_val_t number);
el_val_t de_article(el_val_t gender, el_val_t gram_case, el_val_t number, el_val_t definite);
el_val_t de_adj_ending(el_val_t gender, el_val_t gram_case, el_val_t number, el_val_t article_type);
el_val_t de_noun_plural(el_val_t noun, el_val_t gender);
el_val_t de_case_ending(el_val_t noun, el_val_t gender, el_val_t gram_case, el_val_t number);
el_val_t de_conjugate_weak(el_val_t stem, el_val_t tense, el_val_t person, el_val_t number);
el_val_t de_irregular_present(el_val_t verb, el_val_t person, el_val_t number);
el_val_t de_strong_past_stem(el_val_t verb);
el_val_t de_norm_number(el_val_t number);
el_val_t de_norm_person(el_val_t person);
el_val_t de_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ru_gender(el_val_t noun);
el_val_t ru_stem_type(el_val_t noun, el_val_t gender);
el_val_t ru_noun_case(el_val_t noun, el_val_t gender, el_val_t gram_case, el_val_t number);
el_val_t ru_decline_regular(el_val_t noun, el_val_t gender, el_val_t stype, el_val_t gram_case, el_val_t number);
el_val_t ru_decline_masc(el_val_t noun, el_val_t stype, el_val_t gram_case, el_val_t number);
el_val_t ru_decline_fem(el_val_t noun, el_val_t stype, el_val_t gram_case, el_val_t number);
el_val_t ru_decline_neut(el_val_t noun, el_val_t stype, el_val_t gram_case, el_val_t number);
el_val_t ru_past_agree(el_val_t verb_stem, el_val_t gender, el_val_t number);
el_val_t ru_conjugate_1st(el_val_t stem, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ru_conjugate_2nd(el_val_t stem, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ru_irregular(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ru_past_stem(el_val_t verb);
el_val_t ru_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number, el_val_t gender);
el_val_t ja_conjugate(el_val_t dict_form, el_val_t form);
el_val_t fi_harmony(el_val_t word);
el_val_t fi_suffix(el_val_t base, el_val_t harmony);
el_val_t fi_noun_case(el_val_t stem, el_val_t gram_case, el_val_t number, el_val_t harmony);
el_val_t fi_str_last_char(el_val_t s);
el_val_t fi_apply_case(el_val_t noun, el_val_t gram_case, el_val_t number);
el_val_t fi_verb_stem(el_val_t dict_form);
el_val_t fi_irregular_verb(el_val_t dict_form);
el_val_t fi_present_ending(el_val_t stem, el_val_t person, el_val_t number, el_val_t harmony);
el_val_t fi_past_stem(el_val_t stem);
el_val_t fi_past_ending(el_val_t stem, el_val_t person, el_val_t number, el_val_t harmony);
el_val_t fi_neg_aux(el_val_t person, el_val_t number);
el_val_t fi_negative(el_val_t verb, el_val_t person, el_val_t number);
el_val_t fi_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ar_sound_plural(el_val_t noun, el_val_t gender);
el_val_t fi_question_suffix(el_val_t harmony);
el_val_t fi_make_question(el_val_t verb_form, el_val_t harmony);
el_val_t fi_full_paradigm(el_val_t noun);
el_val_t ar_str_ends(el_val_t s, el_val_t suf);
el_val_t ar_str_len(el_val_t s);
el_val_t ar_str_drop_last(el_val_t s, el_val_t n);
el_val_t ar_str_last_char(el_val_t s);
el_val_t ar_slot(el_val_t person, el_val_t gender, el_val_t number);
el_val_t ar_perfect_suffix(el_val_t slot);
el_val_t ar_imperfect_prefix(el_val_t slot);
el_val_t ar_imperfect_suffix(el_val_t slot);
el_val_t ar_conjugate_form1(el_val_t past_base, el_val_t present_stem, el_val_t tense, el_val_t slot);
el_val_t ar_irregular_kaana(el_val_t slot, el_val_t tense);
el_val_t ar_irregular_qaala(el_val_t slot, el_val_t tense);
el_val_t ar_irregular_jaa(el_val_t slot, el_val_t tense);
el_val_t ar_irregular_raaa(el_val_t slot, el_val_t tense);
el_val_t ar_irregular_araada(el_val_t slot, el_val_t tense);
el_val_t ar_irregular_istata(el_val_t slot, el_val_t tense);
el_val_t ar_irregular(el_val_t verb, el_val_t tense, el_val_t slot);
el_val_t ar_present_stem(el_val_t verb);
el_val_t ar_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t gender, el_val_t number);
el_val_t hi_noun_direct(el_val_t noun, el_val_t gender, el_val_t number);
el_val_t ar_is_sun_letter(el_val_t c);
el_val_t ar_definite_article(el_val_t noun);
el_val_t ar_case_ending(el_val_t kase, el_val_t definite);
el_val_t ar_gender(el_val_t noun);
el_val_t ar_masc_pl_ending(el_val_t kase);
el_val_t ar_sound_plural(el_val_t noun, el_val_t gender);
el_val_t ar_noun_form(el_val_t noun, el_val_t gender, el_val_t kase, el_val_t number, el_val_t definite);
el_val_t ar_verb_form(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t hi_str_ends(el_val_t s, el_val_t suf);
el_val_t hi_str_drop_last(el_val_t s, el_val_t n);
el_val_t hi_str_last_char(el_val_t s);
el_val_t hi_gender(el_val_t noun);
el_val_t hi_masc_aa_stem(el_val_t noun);
el_val_t hi_noun_direct_m(el_val_t noun, el_val_t number);
el_val_t hi_noun_oblique_m(el_val_t noun, el_val_t number);
el_val_t hi_noun_direct_f(el_val_t noun, el_val_t number);
el_val_t hi_noun_oblique_f(el_val_t noun, el_val_t number);
el_val_t hi_noun_direct(el_val_t noun, el_val_t gender, el_val_t number);
el_val_t hi_noun_oblique(el_val_t noun, el_val_t gender, el_val_t number);
el_val_t hi_postposition(el_val_t gram_case);
el_val_t hi_agree_genitive(el_val_t possessed_gender, el_val_t possessed_number);
el_val_t hi_verb_stem(el_val_t infinitive);
el_val_t hi_verb_stem_clean(el_val_t infinitive);
el_val_t hi_present_aspect(el_val_t gender, el_val_t number);
el_val_t hi_aux_present(el_val_t person, el_val_t number);
el_val_t hi_past_suffix(el_val_t gender, el_val_t number);
el_val_t hi_past_irregular(el_val_t stem, el_val_t gender, el_val_t number);
el_val_t hi_future_suffix(el_val_t person, el_val_t number, el_val_t gender);
el_val_t hi_tense_suffix(el_val_t tense, el_val_t gender, el_val_t number);
el_val_t hi_hona_present(el_val_t person, el_val_t number);
el_val_t hi_hona_past(el_val_t gender, el_val_t number);
el_val_t hi_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t gender, el_val_t number);
el_val_t hi_noun_with_post(el_val_t noun, el_val_t gender, el_val_t number, el_val_t gram_case);
el_val_t hi_genitive_phrase(el_val_t possessor, el_val_t possessor_gender, el_val_t possessor_number, el_val_t possessed, el_val_t possessed_gender, el_val_t possessed_number);
el_val_t sw_str_ends(el_val_t s, el_val_t suf);
el_val_t sw_str_drop_last(el_val_t s, el_val_t n);
el_val_t sw_str_first_char(el_val_t s);
el_val_t sw_str_first2(el_val_t s);
el_val_t sw_str_first3(el_val_t s);
el_val_t sw_str_last_char(el_val_t s);
el_val_t sw_is_class1_noun(el_val_t noun);
el_val_t sw_noun_class(el_val_t noun);
el_val_t sw_subj_prefix(el_val_t person, el_val_t number, el_val_t noun_class);
el_val_t sw_obj_prefix(el_val_t person, el_val_t number, el_val_t noun_class);
el_val_t sw_tense_marker(el_val_t tense);
el_val_t sw_verb_final(el_val_t tense, el_val_t negative);
el_val_t sw_neg_subj_prefix(el_val_t person, el_val_t number, el_val_t noun_class);
el_val_t sw_verb_stem(el_val_t infinitive);
el_val_t sw_conjugate(el_val_t verb_stem, el_val_t person, el_val_t number, el_val_t noun_class, el_val_t tense);
el_val_t sw_negative(el_val_t verb_stem, el_val_t person, el_val_t number, el_val_t noun_class, el_val_t tense);
el_val_t sw_noun_plural(el_val_t noun);
el_val_t sw_conjugate(el_val_t verb, el_val_t person, el_val_t number, el_val_t noun_class, el_val_t tense);
el_val_t sw_adj_prefix(el_val_t noun_class, el_val_t number);
el_val_t sw_agree_adj(el_val_t adj_stem, el_val_t noun_class, el_val_t number);
el_val_t sw_demonstrative(el_val_t noun_class, el_val_t number, el_val_t proximity);
el_val_t sw_copula_present(el_val_t person, el_val_t number, el_val_t use_case);
el_val_t sw_copula_neg_present(el_val_t person, el_val_t number);
el_val_t la_str_ends(el_val_t s, el_val_t suf);
el_val_t la_str_drop_last(el_val_t s, el_val_t n);
el_val_t la_str_last_char(el_val_t s);
el_val_t la_str_last2(el_val_t s);
el_val_t la_str_last3(el_val_t s);
el_val_t la_slot(el_val_t person, el_val_t number);
el_val_t la_verb_class(el_val_t verb);
el_val_t la_stem(el_val_t verb, el_val_t vclass);
el_val_t la_perfect_stem(el_val_t verb, el_val_t vclass);
el_val_t la_perfect_ending(el_val_t slot);
el_val_t la_present_ending(el_val_t vclass, el_val_t slot);
el_val_t la_present_form(el_val_t stem, el_val_t vclass, el_val_t slot);
el_val_t la_future_ending_12(el_val_t slot);
el_val_t la_future_ending_34(el_val_t slot);
el_val_t la_future_form(el_val_t stem, el_val_t vclass, el_val_t slot);
el_val_t la_esse_present(el_val_t slot);
el_val_t la_esse_past(el_val_t slot);
el_val_t la_esse_future(el_val_t slot);
el_val_t la_ire_present(el_val_t slot);
el_val_t la_ire_past(el_val_t slot);
el_val_t la_ire_future(el_val_t slot);
el_val_t la_velle_present(el_val_t slot);
el_val_t la_velle_past(el_val_t slot);
el_val_t la_velle_future(el_val_t slot);
el_val_t la_posse_present(el_val_t slot);
el_val_t la_posse_past(el_val_t slot);
el_val_t la_posse_future(el_val_t slot);
el_val_t la_irregular_perfect_stem(el_val_t verb);
el_val_t la_map_canonical(el_val_t verb);
el_val_t la_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t he_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t gender, el_val_t number);
el_val_t grc_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t ang_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t sa_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t got_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t non_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t enm_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t pi_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t fro_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t goh_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t sga_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t txb_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t peo_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t akk_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t uga_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t egy_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t sux_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t gez_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t cop_conjugate(el_val_t verb, el_val_t tense, el_val_t person, el_val_t number);
el_val_t la_declension(el_val_t noun);
el_val_t la_decline_1(el_val_t stem, el_val_t gram_case, el_val_t number);
el_val_t la_decline_2m(el_val_t stem, el_val_t gram_case, el_val_t number);
el_val_t la_decline_2n(el_val_t stem, el_val_t gram_case, el_val_t number);
el_val_t la_decline_3(el_val_t noun, el_val_t gram_case, el_val_t number);
el_val_t la_decline_4(el_val_t stem, el_val_t gram_case, el_val_t number);
el_val_t la_decline_5(el_val_t stem, el_val_t gram_case, el_val_t number);
el_val_t la_decline_2er(el_val_t noun, el_val_t gram_case, el_val_t number);
el_val_t la_decline(el_val_t noun, el_val_t gram_case, el_val_t number);
el_val_t la_noun_phrase(el_val_t noun, el_val_t gram_case, el_val_t number, el_val_t definite);
el_val_t ja_verb_group(el_val_t dict_form);
el_val_t ja_ichidan_stem(el_val_t dict_form);
el_val_t ja_godan_stem_change(el_val_t dict_form, el_val_t row);
el_val_t ja_conjugate(el_val_t dict_form, el_val_t form);
el_val_t ja_particle(el_val_t gram_case);
el_val_t ja_noun_phrase(el_val_t noun, el_val_t gram_case);
el_val_t ja_question_particle(void);
el_val_t ja_make_question(el_val_t sentence);
el_val_t str_ends(el_val_t s, el_val_t suf);
el_val_t str_last_char(el_val_t s);
el_val_t str_last2(el_val_t s);