33 #ifndef SC_TEMPORARY_H 34 #define SC_TEMPORARY_H 86 bytes_n = (bytes_n + 7) & ((std::size_t)(-8));
89 if ( m_next_p >= m_end_p )
92 m_next_p = m_bgn_p + bytes_n;
100 m_bgn_p =
new char[heap_size];
101 m_end_p = &m_bgn_p[heap_size];
107 return (std::size_t)(m_end_p - m_bgn_p);
111 m_bgn_p(0), m_end_p(0), m_next_p(0)
116 m_bgn_p(0), m_end_p(0), m_next_p(0)
118 initialize( heap_size );
173 inline sc_vpool(
int log2, T* pool_p=0 );
175 inline T* allocate();
177 inline std::size_t size();
182 , m_pool_p( pool_p ? pool_p : new T[static_cast<
std::size_t>(1) << log2] )
183 , m_wrap( ~(static_cast<
std::size_t>(-1) << log2) )
197 result_p = &m_pool_p[m_pool_i];
198 m_pool_i = (m_pool_i + 1) & m_wrap;
233 #endif // SC_TEMPORARY_H
void initialize(std::size_t heap_size=0x100000)
sc_byte_heap(std::size_t heap_size)
char * allocate(std::size_t bytes_n)
sc_vpool(int log2, T *pool_p=0)