6#ifndef DEEPLIMA_APPS_LOCKED_BUFFER_H
7#define DEEPLIMA_APPS_LOCKED_BUFFER_H
53 inline uint8_t*
end()
const
86 assert((uint8_t*)new_start <
end());
106 uint32_t buffer_size = 0)
113 if (
nullptr !=
m_mem)
119 void init(
size_t n, uint32_t buffer_size)
123 assert(buffer_size > 0);
127 if (
nullptr !=
m_mem)
131 m_mem =
new uint8_t [ 8 + n * buffer_size ];
133 if (
nullptr ==
m_mem)
135 throw std::runtime_error(
"Out of memory.");
138 uint8_t* p_base =
m_mem + 8;
141 for (
size_t i = 0; i <
m_data.size(); i++)
143 m_data[i].m_data = p_base + (i * buffer_size);
144 m_data[i].m_len = buffer_size;
153 inline size_t next(
size_t n)
const
155 return (
m_data.size() == (n + 1)) ? 0 : (n + 1);
161 for (
size_t i = n; i <
m_data.size(); i++)
175 assert(n <
m_data.size());
181 std::cerr << (
void*)
this <<
" BUFFS: ";
182 for (
size_t i = 0; i <
m_data.size(); i++)
184 std::cerr <<
" | " <<
m_data[i].m_lock_count;
186 std::cerr <<
" |" << std::endl;
void init(size_t n, uint32_t buffer_size)
uint32_t bytes_available(size_t n)
std::vector< locked_buffer_t > m_data
size_t next(size_t n) const
locked_buffer_t & get(size_t n)
uint32_t max_buff_size() const
locked_buffer_set_t(size_t, uint32_t buffer_size=0)
locketd_buffer_t is the character-level buffer shared between the source file reader and the tokenize...
const char * m_char_aligned_data
void set_read_start(const char *new_start)
locked_buffer_t(const locked_buffer_t &other)
locked_buffer_t & operator=(const locked_buffer_t &)=delete