Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
igl::geodesic::MemoryAllocator< T > Class Template Reference
+ Inheritance diagram for igl::geodesic::MemoryAllocator< T >:
+ Collaboration diagram for igl::geodesic::MemoryAllocator< T >:

Public Types

typedef T * pointer
 

Public Member Functions

 MemoryAllocator (unsigned block_size=1024, unsigned max_number_of_blocks=1024)
 
 ~MemoryAllocator ()
 
void clear ()
 
void reset (unsigned block_size, unsigned max_number_of_blocks)
 
pointer allocate ()
 
void deallocate (pointer p)
 

Private Attributes

std::vector< std::vector< T > > m_storage
 
unsigned m_block_size
 
unsigned m_max_number_of_blocks
 
unsigned m_current_position
 
std::vector< pointerm_deleted
 

Detailed Description

template<class T>
class igl::geodesic::MemoryAllocator< T >

Member Typedef Documentation

◆ pointer

template<class T >
typedef T* igl::geodesic::MemoryAllocator< T >::pointer

Constructor & Destructor Documentation

◆ MemoryAllocator()

template<class T >
igl::geodesic::MemoryAllocator< T >::MemoryAllocator ( unsigned  block_size = 1024,
unsigned  max_number_of_blocks = 1024 
)
inline
153 {
154 reset(block_size,
155 max_number_of_blocks);
156 };
void reset(unsigned block_size, unsigned max_number_of_blocks)
Definition exact_geodesic.cpp:166

References igl::geodesic::MemoryAllocator< T >::reset().

+ Here is the call graph for this function:

◆ ~MemoryAllocator()

template<class T >
igl::geodesic::MemoryAllocator< T >::~MemoryAllocator ( )
inline
158{};

Member Function Documentation

◆ allocate()

template<class T >
pointer igl::geodesic::MemoryAllocator< T >::allocate ( )
inline
186 {
187 pointer result;
188 if(m_deleted.empty())
189 {
191 {
192 m_storage.push_back( std::vector<T>() );
193 m_storage.back().resize(m_block_size);
195 }
196 result = & m_storage.back()[m_current_position];
198 }
199 else
200 {
201 result = m_deleted.back();
202 m_deleted.pop_back();
203 }
204
205 return result;
206 };
std::vector< pointer > m_deleted
Definition exact_geodesic.cpp:222
unsigned m_current_position
Definition exact_geodesic.cpp:220
T * pointer
Definition exact_geodesic.cpp:149
std::vector< std::vector< T > > m_storage
Definition exact_geodesic.cpp:217
unsigned m_block_size
Definition exact_geodesic.cpp:218

References igl::geodesic::MemoryAllocator< T >::m_block_size, igl::geodesic::MemoryAllocator< T >::m_current_position, igl::geodesic::MemoryAllocator< T >::m_deleted, and igl::geodesic::MemoryAllocator< T >::m_storage.

◆ clear()

template<class T >
void igl::geodesic::MemoryAllocator< T >::clear ( )
inline
161 {
164 }
unsigned m_max_number_of_blocks
Definition exact_geodesic.cpp:219

References igl::geodesic::MemoryAllocator< T >::m_block_size, igl::geodesic::MemoryAllocator< T >::m_max_number_of_blocks, and igl::geodesic::MemoryAllocator< T >::reset().

+ Here is the call graph for this function:

◆ deallocate()

template<class T >
void igl::geodesic::MemoryAllocator< T >::deallocate ( pointer  p)
inline
209 {
210 if(m_deleted.size() < m_deleted.capacity())
211 {
212 m_deleted.push_back(p);
213 }
214 };

References igl::geodesic::MemoryAllocator< T >::m_deleted.

◆ reset()

template<class T >
void igl::geodesic::MemoryAllocator< T >::reset ( unsigned  block_size,
unsigned  max_number_of_blocks 
)
inline
168 {
169 m_block_size = block_size;
170 m_max_number_of_blocks = max_number_of_blocks;
171
172 assert(m_block_size > 0);
173 assert(m_max_number_of_blocks > 0);
174
176
177 m_storage.reserve(max_number_of_blocks);
178 m_storage.resize(1);
179 m_storage[0].resize(block_size);
180
181 m_deleted.clear();
182 m_deleted.reserve(2*block_size);
183 };

References igl::geodesic::MemoryAllocator< T >::m_block_size, igl::geodesic::MemoryAllocator< T >::m_current_position, igl::geodesic::MemoryAllocator< T >::m_deleted, igl::geodesic::MemoryAllocator< T >::m_max_number_of_blocks, and igl::geodesic::MemoryAllocator< T >::m_storage.

Referenced by igl::geodesic::MemoryAllocator< T >::MemoryAllocator(), and igl::geodesic::MemoryAllocator< T >::clear().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_block_size

◆ m_current_position

template<class T >
unsigned igl::geodesic::MemoryAllocator< T >::m_current_position
private

◆ m_deleted

◆ m_max_number_of_blocks

template<class T >
unsigned igl::geodesic::MemoryAllocator< T >::m_max_number_of_blocks
private

◆ m_storage

template<class T >
std::vector<std::vector<T> > igl::geodesic::MemoryAllocator< T >::m_storage
private

The documentation for this class was generated from the following file: