/** @file DDefineExpr.cpp * * @author Roland Conybeare, Jan 2026 **/ #include "DDefineExpr.hpp" #include namespace xo { using xo::facet::typeseq; namespace scm { DDefineExpr::DDefineExpr(DVariable * lhs_var, obj rhs) : lhs_var_{lhs_var}, rhs_{rhs} {} DDefineExpr * DDefineExpr::make(obj mm, const DUniqueString * lhs_name, obj rhs_expr) { void * mem = mm.alloc(typeseq::id(), sizeof(DDefineExpr)); TypeRef rhs_tref; if (rhs_expr) rhs_tref = rhs_expr.typeref(); auto lhs_var = DVariable::make(mm, lhs_name, rhs_tref); return new (mem) DDefineExpr(lhs_var, rhs_expr); } DDefineExpr * DDefineExpr::make_empty(obj mm) { return make(mm, nullptr /*lhs_name*/, obj() /*rhs_expr*/); } const DUniqueString * DDefineExpr::name() const noexcept { return lhs_var_->name(); } void DDefineExpr::assign_lhs_name(const DUniqueString * name) { lhs_var_->assign_name(name); } void DDefineExpr::assign_valuetype(TypeDescr td) noexcept { lhs_var_->assign_valuetype(td); } } /*namespace scm*/ } /*namespace xo*/ /* end DDefineExpr.cpp */