/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/cell_buffer.hpp" #include #define ORCUS_DEBUG_CELL_BUFFER 0 #if ORCUS_DEBUG_CELL_BUFFER #include using std::cout; using std::endl; #endif namespace orcus { cell_buffer::cell_buffer() : m_buf_size(0) {} cell_buffer::~cell_buffer() = default; void cell_buffer::append(const char* p, size_t len) { if (!len) return; #if ORCUS_DEBUG_CELL_BUFFER cout << "cell_buffer::append: '" << std::string(p, len) << "'" << endl; #endif size_t size_needed = m_buf_size + len; if (m_buffer.size() < size_needed) m_buffer.resize(size_needed); char* p_dest = &m_buffer[m_buf_size]; std::strncpy(p_dest, p, len); m_buf_size += len; } void cell_buffer::reset() { m_buf_size = 0; } std::string_view cell_buffer::str() const { return std::string_view{m_buffer.data(), m_buf_size}; } bool cell_buffer::empty() const { return m_buf_size == 0; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */