30 struct CommandStack::Impl {
34 typedef std::vector<CommandPtr> Stack;
39 const Impl&) =
delete;
41 const Impl&) =
delete;
48 CommandStack::Impl::Impl(
49 CommandStack* owner_) :
54 CommandStack::Impl::~Impl() {
59 pimpl(new Impl(this)) {
69 assert(command_ !=
nullptr);
70 pimpl->stack.push_back(command_);
75 assert(command_ !=
nullptr);
76 assert(!pimpl->stack.empty());
77 pimpl->stack.back() = command_;
81 assert(!pimpl->stack.empty());
82 return pimpl->stack.back();
86 assert(!pimpl->stack.empty());
87 pimpl->stack.pop_back();
91 return pimpl->stack.empty();