BufferAllocator::ReaderPtr BufferAllocator::create_reader_fast(size_t size) { size = (size + 7) & -8; init_thread_local<BufferRawTls>(buffer_raw_tls); auto buffer_raw = buffer_raw_tls->buffer_raw.get(); if (buffer_raw == nullptr || buffer_raw->data_size_ - buffer_raw->end_.load(std::memory_order_relaxed) < size) { buffer_raw = create_buffer_raw(4096 * 4); buffer_raw_tls->buffer_raw = std::unique_ptr<BufferRaw, BufferAllocator::BufferRawDeleter>(buffer_raw); } buffer_raw->end_.fetch_add(size, std::memory_order_relaxed); buffer_raw->ref_cnt_.fetch_add(1, std::memory_order_acq_rel); return ReaderPtr(buffer_raw); }
/// default Reader list PWIZ_API_DECL DefaultReaderList::DefaultReaderList(bool indexed /*= false*/) { Reader_FASTA::Config fastaConfig; fastaConfig.indexed = indexed; push_back(ReaderPtr(new Reader_FASTA(fastaConfig))); }
ReaderPtr Fieldable::readerValue() { BOOST_ASSERT(false); return ReaderPtr(); // override }
BufferAllocator::ReaderPtr BufferAllocator::create_reader(const ReaderPtr &raw) { raw->ref_cnt_.fetch_add(1, std::memory_order_acq_rel); return ReaderPtr(raw.get()); }