Maid.hpp
/* This file is part of Raul.
* Copyright (C) 2007-2009 David Robillard <http://drobilla.net>
*
* Raul is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* Raul is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef RAUL_MAID_HPP
#define RAUL_MAID_HPP
#include <boost/utility.hpp>
#include "raul/SharedPtr.hpp"
#include "raul/SRSWQueue.hpp"
#include "raul/Deletable.hpp"
#include "raul/List.hpp"
namespace Raul {
class Maid : boost::noncopyable
{
public:
explicit Maid(size_t size);
~Maid();
inline void push(Raul::Deletable* obj) {
if (obj)
_objects.push(obj);
}
void manage(SharedPtr<Raul::Deletable> ptr);
void cleanup();
private:
typedef Raul::SRSWQueue<Raul::Deletable*> Objects;
typedef Raul::List<SharedPtr<Raul::Deletable> > Managed;
Objects _objects;
Managed _managed;
};
} // namespace Raul
#endif // RAUL_MAID_HPP
Raul::Deletable
Something with a virtual destructor.
Definition: Deletable.hpp:28
Raul::SRSWQueue::push
bool push(const T &obj)
Push an item onto the back of the SRSWQueue - realtime-safe, not thread-safe.
Definition: SRSWQueue.hpp:130
Raul::Maid
Explicitly driven garbage collector.
Definition: Maid.hpp:46
Raul
Definition: Array.hpp:26
Raul::List
A realtime safe, (partially) thread safe doubly-linked list.
Definition: List.hpp:41
Raul::Maid::push
void push(Raul::Deletable *obj)
Push a raw pointer to be deleted when cleanup() is called next.
Definition: Maid.hpp:55
Raul::Maid::manage
void manage(SharedPtr< Raul::Deletable > ptr)
Manage a SharedPtr.
Definition: Maid.cpp:41
Raul::SRSWQueue< Raul::Deletable * >
Raul::Maid::cleanup
void cleanup()
Free all the objects in the queue (passed by push()).
Definition: Maid.cpp:51