package ingest import ( "git.smesh.lol/iskradb/lattice" "git.smesh.lol/transdb" ) // GenerateConjugations inserts MorphState 1+ records for a Bverb entry. // Uses BuildVerbForms from transdb.morph.mx — single source for conjugation tables. // State 0 (base form) must already be in the lattice. firstEN is the EN record index. func GenerateConjugations(db *DB, dictForm, verbClass string, branch lattice.Branch, branchByte uint8, firstEN uint32) { if firstEN == lattice.NullRec || verbClass == "" { return } forms := transdb.BuildVerbForms(dictForm, verbClass) if len(forms) == 0 { return } for state, form := range forms { if form == "" || form == dictForm || state == 0 { continue } // Insert at coord with morphological axis set — enables direct coord lookup. // DataFile MorphState redundantly encodes state for post-lookup applyMorphEN. coord := transdb.PackCoord(0, 0, 0, uint64(state), 0, 0, 0) key := transdb.MakeKey(transdb.LangJA, coord, form) if db.Tree.LookupRecIdx(branch, key) != lattice.NullRec { continue } var rec lattice.Record transdb.SetFormOnRecord(&rec, form, &db.StringPool) rec.Branch = branchByte transdb.SetMorphState(&rec, state) newRI := db.Tree.InsertRec(branch, key, rec) if r := db.Tree.GetRecord(newRI); r != nil { r.Link[0] = firstEN } } }