/** @file DVsmApplyFrame.cpp * * @author Roland Conybeare, Feb 2026 **/ #include "DVsmApplyFrame.hpp" #include #include namespace xo { using xo::facet::typeseq; namespace scm { DVsmApplyFrame::DVsmApplyFrame(obj old_parent, VsmInstr old_cont, DArray * args) : parent_{old_parent}, cont_{old_cont}, args_{args} {} DVsmApplyFrame * DVsmApplyFrame::make(obj mm, obj old_parent, VsmInstr old_cont, DArray * args) { DVsmApplyFrame * result = nullptr; void * mem = mm.alloc(typeseq::id(), sizeof(DVsmApplyFrame)); result = new (mem) DVsmApplyFrame(old_parent, old_cont, args); assert(result); return result; } std::size_t DVsmApplyFrame::shallow_size() const noexcept { return sizeof(DVsmApplyFrame); } DVsmApplyFrame * DVsmApplyFrame::shallow_copy(obj mm) const noexcept { DVsmApplyFrame * copy = (DVsmApplyFrame *)mm.alloc_copy((std::byte *)this); if (copy) *copy = *this; return copy; } std::size_t DVsmApplyFrame::forward_children(obj gc) noexcept { gc.forward_inplace(&parent_); gc.forward_inplace(&fn_); gc.forward_inplace(&args_); return this->shallow_size(); } bool DVsmApplyFrame::pretty(const ppindentinfo & ppii) const { return ppii.pps()->pretty_struct(ppii, "DVsmApplyFrame", refrtag("cont", cont_), refrtag("n_args", args_->size())); } } /*namespace scm*/ } /*namespace xo*/ /* end DVsmApplyFrame.cpp */