22 #ifndef FIFE_RESOURE_PTR_H
23 #define FIFE_RESOURE_PTR_H
47 ResourcePtr(
Pool* pool,
int index) : m_ptr(0),m_pool(pool),m_index(index) {
51 : m_ptr(r.m_ptr),m_pool(r.m_pool),m_index(r.m_index) {
84 operator bool()
const {
88 bool isValid()
const {
89 return m_ptr || isLoadable();
92 bool isLoadable()
const {
97 if( isLoadable() && r.isLoadable() )
98 return m_index == r.m_index && m_pool == r.m_pool;
99 if( !isLoadable() && !r.isLoadable() )
100 return m_ptr == r.m_ptr;
105 if( isLoadable() && r.isLoadable() )
107 if( m_pool == r.m_pool )
108 return m_index < r.m_index;
109 return m_pool < r.m_pool;
111 if( !isLoadable() && !r.isLoadable() )
112 return m_ptr < r.m_ptr;
113 return isLoadable() < r.isLoadable();
138 return dynamic_cast<T*
>(m_ptr);
142 void constLoad()
const {
145 m_ptr = &m_pool->
get(m_index);