// Copyright {Jagger Software Limited} 2003 #if !defined OWNERSHIP_SCOPED_INCLUDED || \ defined OWNERSHIP_SCOPED_TEMPLATE_INCLUDED #error "ownership/scoped-template.hpp" #included directly #endif #define OWNERSHIP_SCOPED_TEMPLATE_INCLUDED namespace ownership // scoped - 'tors { template scoped::scoped(resource_type resource) : acquired(resource) , is_released(false) { } template scoped::~scoped() { if (!is_released) { releaser_type()(acquired); } } } namespace ownership // scoped - ownership { template resource_type scoped::get() const { return acquired; } template resource_type scoped::release() { resource_type released = acquired; is_released = true; return released; } }