#include "fiko/sahne/parametre_nesne.hpp" #include #include "fiko/cekirdek/dunya.hpp" #include "fiko/parametre/ifade.hpp" namespace fiko { OzellikSeti ParametreNesnesi::ozellikler(Dunya& dunya) { (void)dunya; OzellikSeti set; // Formül = başka parametreye referanslı ifade (bağımlılık var). Salt sabitse Değer // düzenlenebilir; formülde Değer çözülen sonuç → salt-okunur (İfade'den düzenlenir). const bool formulVar = !parametre::bagimliliklar(ifade_).empty(); Ozellik d = Ozellik::sayi( "Değer", [this] { return deger_; }, [this](f64 v) { deger_ = v; char buf[32]; std::snprintf(buf, sizeof buf, "%g", v); ifade_ = buf; // sabit düzenlemesi ifadeyi de senkronlar senkronCagir(); }); d.saltOkunur = formulVar; set.push_back(std::move(d)); set.push_back(Ozellik::metin( "İfade", [this] { return ifade_; }, [this](const std::string& s) { ifade_ = s; senkronCagir(); })); set.push_back(Ozellik::metin( "Birim", [this] { return birim_; }, [this](const std::string& b) { birim_ = b; senkronCagir(); })); return set; } std::string ParametreGorunum::agacMiniBilgi(Dunya& dunya) const { const NesneKok* nk = dunya.bul(kimlik_); const auto* pn = (nk && *nk) ? dynamic_cast(nk->get()) : nullptr; if (!pn) return {}; char buf[64]; std::snprintf(buf, sizeof buf, "= %.6g %s", pn->deger(), pn->birim().c_str()); std::string s = buf; while (!s.empty() && s.back() == ' ') s.pop_back(); return s; } } // namespace fiko