00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef RAUL_MAID_HPP
00019 #define RAUL_MAID_HPP
00020
00021 #include <boost/utility.hpp>
00022 #include "raul/SharedPtr.hpp"
00023 #include "raul/SRSWQueue.hpp"
00024 #include "raul/Deletable.hpp"
00025 #include "raul/List.hpp"
00026
00027 namespace Raul {
00028
00029
00046 class Maid : boost::noncopyable
00047 {
00048 public:
00049 explicit Maid(size_t size);
00050 ~Maid();
00051
00055 inline void push(Raul::Deletable* obj) {
00056 if (obj)
00057 _objects.push(obj);
00058 }
00059
00060 void manage(SharedPtr<Raul::Deletable> ptr);
00061
00062 void cleanup();
00063
00064 private:
00065 typedef Raul::SRSWQueue<Raul::Deletable*> Objects;
00066 typedef Raul::List<SharedPtr<Raul::Deletable> > Managed;
00067
00068 Objects _objects;
00069 Managed _managed;
00070 };
00071
00072
00073 }
00074
00075 #endif // RAUL_MAID_HPP
00076