14 #include <tbb/tbb_thread.h>
15 #include <tbb/spin_rw_mutex.h>
16 #include <tbb/atomic.h>
18 #include <boost/optional.hpp>
19 #include <boost/shared_ptr.hpp>
20 #include <boost/weak_ptr.hpp>
21 #include <boost/scoped_ptr.hpp>
22 #include <boost/noncopyable.hpp>
31 namespace MAKVRinTerra
50 typedef boost::shared_ptr<DtUnusedFeatureTileTracker>
Ptr;
51 typedef boost::weak_ptr<DtUnusedFeatureTileTracker>
WeakPtr;
60 const std::string& name =
"tracker");
70 unsigned length()
const;
73 unsigned size()
const;
76 unsigned totalLength()
const;
79 void setMaxSize(
unsigned max);
82 unsigned maxSize()
const;
85 void setMinUnusedTime(
double);
88 double minUnusedTime()
const;
91 unsigned long unloadUntilSize(
unsigned maxSize,
double minTime);
92 unsigned long unloadUntilSize(
unsigned maxSize);
95 void addSubtracker(
const Ptr& subtracker);
98 void info(std::ostream&)
const;
101 void print(std::ostream&)
const;
111 bool add(
const boost::shared_ptr<Trackable>&);
144 :
private boost::noncopyable
155 virtual std::string
label()
const = 0;
158 virtual void load() = 0;
161 virtual bool unload() = 0;
164 virtual bool loading()
const = 0;
167 virtual bool loaded()
const = 0;
172 virtual unsigned size()
const = 0;
179 virtual boost::shared_ptr<Trackable>
getPtr()
const = 0;
183 boost::shared_ptr<Sentinel>
getSentinel(
bool loadIfNotPresent=
true)
const;
225 :
private boost::noncopyable
229 typedef boost::shared_ptr<Sentinel>
Ptr;
236 explicit Sentinel(
const boost::shared_ptr<Trackable>&);