From b0adb417a09003c04a4023ab3f7039c70c9cdd4e Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 24 Nov 2020 17:15:33 -0500 Subject: [PATCH] remove a few C++ modules that have been converted to D --- src-c/core/File.cc | 123 --------------------------- src-c/core/File.h | 27 ------ src-c/core/GapBuffer.cc | 129 ----------------------------- src-c/core/GapBuffer.h | 169 -------------------------------------- src-c/core/LineEndings.cc | 11 --- src-c/core/LineEndings.h | 20 ----- 6 files changed, 479 deletions(-) delete mode 100644 src-c/core/File.cc delete mode 100644 src-c/core/File.h delete mode 100644 src-c/core/GapBuffer.cc delete mode 100644 src-c/core/GapBuffer.h delete mode 100644 src-c/core/LineEndings.cc delete mode 100644 src-c/core/LineEndings.h diff --git a/src-c/core/File.cc b/src-c/core/File.cc deleted file mode 100644 index 386a264..0000000 --- a/src-c/core/File.cc +++ /dev/null @@ -1,123 +0,0 @@ -#include "File.h" -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define JES_O_BINARY O_BINARY -#else -#define JES_O_BINARY 0 -#endif - -/** - * Open a file. - * - * @param[in] filename The filename. - * @param[in] writing Whether to open for writing. - */ -bool File::open(const char * filename, bool writing) -{ - int fd; - if (writing) - { - /* TODO: handle mode */ - fd = ::open(filename, O_WRONLY | O_CREAT | O_TRUNC | JES_O_BINARY, 0644); - } - else - { - fd = ::open(filename, O_RDONLY | JES_O_BINARY); - } - if (fd < 0) - { - return false; - } - - m_fd = fd; - return true; -} - -/** - * Close the file. - */ -void File::close() -{ - if (m_fd >= 0) - { - ::close(m_fd); - m_fd = -1; - } -} - -/** - * Get the file's size. - * - * This function will reset the file position to the beginning of the file. - * - * @return The file's size, or -1 on error. - */ -size_t File::get_size() -{ - if (m_fd >= 0) - { - off_t o = lseek(m_fd, 0, SEEK_END); - lseek(m_fd, 0, SEEK_SET); - return o; - } - return -1; -} - -/** - * Read from the file. - * - * @param[in] buf Memory buffer to read into. Must be large enough to hold - * size bytes. - * @param[in] size Number of bytes to read. - * - * @retval false The file failed to read. - * @retval true The file was read successfully. - */ -bool File::read(uint8_t * buf, size_t size) -{ - size_t n_bytes_read = 0u; - for (;;) - { - off_t rd_size = ::read(m_fd, &buf[n_bytes_read], size - n_bytes_read); - if (rd_size <= 0) - break; - n_bytes_read += (size_t)rd_size; - if (n_bytes_read >= size) - break; - } - if (n_bytes_read != size) - { - return false; - } - - return true; -} - -bool File::write(const uint8_t * buf, size_t size) -{ - if (size <= 0) - return true; - - size_t n_bytes_written = 0u; - for (;;) - { - off_t write_size = ::write(m_fd, &buf[n_bytes_written], size - n_bytes_written); - if (write_size <= 0) - break; - n_bytes_written += (size_t)write_size; - if (n_bytes_written >= size) - break; - } - - if (n_bytes_written != size) - { - return false; - } - - return true; -} diff --git a/src-c/core/File.h b/src-c/core/File.h deleted file mode 100644 index 0958c70..0000000 --- a/src-c/core/File.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef FILE_H -#define FILE_H - -#include -#include -#include "Span.h" - -class File -{ -public: - File() : m_fd(-1) {} - ~File() { close(); } - bool open(const char * filename, bool writing = false); - void close(); - size_t get_size(); - bool read(uint8_t * buf, size_t size); - bool write(const uint8_t * buf, size_t size); - bool write(const Span & span) - { - return write(span.start, span.length); - } - -protected: - int m_fd; -}; - -#endif diff --git a/src-c/core/GapBuffer.cc b/src-c/core/GapBuffer.cc deleted file mode 100644 index 103e8d2..0000000 --- a/src-c/core/GapBuffer.cc +++ /dev/null @@ -1,129 +0,0 @@ -#include "GapBuffer.h" -#include "System.h" -#include - -GapBuffer::GapBuffer() -{ - int num_pages = (64u * 1024u + System::page_size - 1u) >> System::page_size_log; - m_buffer = (uint8_t *)System::alloc_pages(num_pages); - m_buffer_size = System::page_size; - m_size = 0u; - m_gap_position = 0u; -} - -GapBuffer::GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size) -{ - m_buffer = buffer; - m_buffer_size = buffer_size; - m_size = size; - m_gap_position = size; -} - -GapBuffer::~GapBuffer() -{ - System::free_pages(m_buffer, m_buffer_size >> System::page_size_log); -} - -void GapBuffer::insert(size_t position, const uint8_t * data, size_t length) -{ - ensure_free(length); - move_gap(position); - memcpy(&m_buffer[m_gap_position], data, length); - m_gap_position += length; - m_size += length; -} - -void GapBuffer::erase(size_t position, size_t length) -{ - if ((position < m_size) && ((position + length) <= m_size)) - { - if ((position + length) == m_gap_position) - { - m_gap_position -= length; - m_size -= length; - } - else - { - move_gap(position); - m_size -= length; - } - } -} - -void GapBuffer::clear() -{ - m_size = 0u; - m_gap_position = 0u; -} - -#ifdef ENABLE_TESTING -std::string GapBuffer::get_string() -{ - compact(); - return std::string((char *)m_buffer, m_size); -} - -void GapBuffer::set_string(const std::string & s) -{ - clear(); - insert(0u, (const uint8_t *)s.c_str(), s.size()); -} -#endif - -void GapBuffer::ensure_free(size_t length) -{ - if (gap_size() < length) - { - /* We're out of space. Allocate more and move data. */ - size_t new_size = (m_buffer_size + (128u * 1024u)) & System::page_base_mask; - size_t new_num_pages = new_size >> System::page_size_log; - uint8_t * new_buffer = (uint8_t *)System::alloc_pages(new_num_pages); - memcpy(new_buffer, m_buffer, m_gap_position); - memcpy(&new_buffer[m_gap_position], &m_buffer[m_gap_position + gap_size()], m_size - m_gap_position); - - /* Free the old buffer */ - System::free_pages(m_buffer, m_buffer_size >> System::page_size_log); - - m_buffer = new_buffer; - m_buffer_size = new_size; - m_gap_position = m_size; - } -} - -void GapBuffer::move_gap(size_t position) -{ - if (position != m_gap_position) - { - if (position < m_gap_position) - { - memmove(&m_buffer[position + gap_size()], &m_buffer[position], m_gap_position - position); - } - else - { - memmove(&m_buffer[m_gap_position], &m_buffer[m_gap_position + gap_size()], position - m_gap_position); - } - m_gap_position = position; - } -} - -void GapBuffer::copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position) -{ - if ((source_position < m_size) && - (length > 0u) && - ((source_position + length) <= m_size)) - { - if ((m_gap_position <= source_position) || - (m_gap_position >= (source_position + length))) - { - /* The gap is before or after the range of data to copy. */ - other.insert(destination_position, address(source_position), length); - } - else - { - /* The gap is in the middle of the range of data to copy. */ - size_t pre_gap_size = m_gap_position - source_position; - other.insert(destination_position, address(source_position), pre_gap_size); - other.insert(destination_position + pre_gap_size, address(source_position + pre_gap_size), length - pre_gap_size); - } - } -} diff --git a/src-c/core/GapBuffer.h b/src-c/core/GapBuffer.h deleted file mode 100644 index 21a5003..0000000 --- a/src-c/core/GapBuffer.h +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef GAPBUFFER_H -#define GAPBUFFER_H - -#include -#include -#ifdef ENABLE_TESTING -#include -#endif - -class GapBuffer -{ -public: - /** - * Create a new GapBuffer object. - * - * The GapBuffer will allocate its own memory. - */ - GapBuffer(); - - /** - * Create a GapBuffer object that points to preallocated memory. - * - * The GapBuffer object will take over ownership of the allocated memory. - * - * @param buffer - * Pointer to buffer allocated by System::alloc_pages(). - * @param buffer_size - * Size of the buffer allocated by System::alloc_pages(). - * @param size - * Size of the data in the buffer. - */ - GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size); - - /** - * Destroy the GapBuffer object and free its memory. - */ - ~GapBuffer(); - - /** - * Insert data into the gap buffer at the given position. - * - * @param position - * Position in the gap buffer to insert the code point at. - * @param data - * Pointer to the data to insert. - * @param length - * Length of the data to insert. - */ - void insert(size_t position, const uint8_t * data, size_t length); - - /** - * Erase data from the gap buffer. - * - * @param position - * Position in the gap buffer to erase data from. - * @param length - * Length of the data to erase. - */ - void erase(size_t position, size_t length); - - /** - * Erase all data from the gap buffer. - */ - void clear(); - - /** - * Get the size of the data stored within the buffer. - */ - size_t size() const - { - return m_size; - } - - /** - * Get the memory address of a buffer location. - * - * @param offset - * The index into the gap buffer data. - */ - uint8_t * address(size_t offset) const - { - if (offset < m_gap_position) - { - return &m_buffer[offset]; - } - else - { - return &m_buffer[offset + gap_size()]; - } - } - - /** - * Move buffer gap to the end of the buffer so the contents are congruent - * at the beginning of the buffer. - */ - void compact() - { - move_gap(m_size); - } - - /** - * Copy a range of data from this GapBuffer to another. - * - * @param source_position - * Position in the gap buffer containing the data to copy. - * @param length - * Length of the data to copy. - * @param other - * Destination GapBuffer to copy the data into. - * @param destination_position - * Position in the destination GapBuffer to copy the data to. - */ - void copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position); - -#ifdef ENABLE_TESTING - /** - * Get the contents of the gap buffer as a string. - * - * This makes a copy of the entire buffer in a std::string. This method is - * intended for use by unit tests. - */ - std::string get_string(); - - /** - * Replace the buffer contents with a string. - */ - void set_string(const std::string & s); -#endif - -protected: - /** Address of the allocated memory buffer. */ - uint8_t * m_buffer; - - /** Size of the allocated memory buffer. */ - size_t m_buffer_size; - - /** Size of the data stored in the buffer. */ - size_t m_size; - - /** Index of the gap in the memory buffer. */ - size_t m_gap_position; - - /** - * Get the gap size. - */ - size_t gap_size() const - { - return m_buffer_size - m_size; - } - - /** - * Verify that there is enough free space in the gap, and if not, grow the - * gap and move data. - * - * @param length - * The number of bytes that must be free. - */ - void ensure_free(size_t length); - - /** - * Move the gap buffer gap position to the requested position. - * - * @param position - * New gap position. Must be <= m_size. - */ - void move_gap(size_t position); -}; - -#endif diff --git a/src-c/core/LineEndings.cc b/src-c/core/LineEndings.cc deleted file mode 100644 index 89fe720..0000000 --- a/src-c/core/LineEndings.cc +++ /dev/null @@ -1,11 +0,0 @@ -#include "LineEndings.h" - -static uint8_t lf[] = "\n"; -static uint8_t crlf[] = "\r\n"; -static uint8_t cr[] = "\r"; - -const Span LineEndings::spans[] = { - Span(lf, 1u), - Span(crlf, 2u), - Span(cr, 1u), -}; diff --git a/src-c/core/LineEndings.h b/src-c/core/LineEndings.h deleted file mode 100644 index 95de16f..0000000 --- a/src-c/core/LineEndings.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef LINEENDINGS_H -#define LINEENDINGS_H - -#include "Span.h" - -class LineEndings -{ -public: - enum Type - { - LF, - CRLF, - CR, - COUNT, - }; - - static const Span spans[COUNT]; -}; - -#endif