45.9 SegmentUnreserver

SegmentUnreserver is an RAII class which calls UnreserveSegment on the SUT for a given segment when it destructs.


class SegmentUnreserver
{
public:
    SegmentUnreserver();
        sut_(nullptr),
        segid_(0)
    {
    }

    void Set(SUT* sut, SegId segid)
    {
        if (sut_)
        {
            cxAssert(segid_ != 0);
            sut_->UnreserveSegment(segid_);
        }
        sut_ = sut;
        segid_ = segid;
    }

    void Release() { sut_ = nullptr; }

    ~SegmentUnreserver()
    {
        if (sut_)
        {
            sut_->UnreserveSegment(segid_);
        }
    }

private:
    SUT* sut_;
    SegId segid_;
};