6#ifndef ACTIVE_UTILITY_BUFFER_IN
7#define ACTIVE_UTILITY_BUFFER_IN
9#include "Active/File/Interface/IOBase.h"
10#include "Active/Utility/Memory.h"
11#include "Active/Utility/String.h"
12#include "Active/Utility/TextEncoding.h"
30 using enum TextEncoding;
75 operator bool ()
const {
return !
fail(); }
125 const char*
data()
const {
return !
good() ? nullptr : m_buffer; }
177 bool find(
char32_t toFind,
String* pool =
nullptr,
bool isFoundSkipped =
false)
const;
186 {
return seek(toFind, pool,
true,
true,
true,
false, isFoundSkipped,
false); }
199 bool isFoundSkipped =
false,
bool isFoundPooled =
false, std::optional<char32_t> escapeChar = std::nullopt)
const
200 {
return seek(toFind, pool, isContiguousMatch,
false,
false, isRepeatMatch, isFoundSkipped, isFoundPooled, escapeChar); }
209 {
return seekNot(toFind, pool); }
228 std::pair<char32_t, String::size_type>
getEncodedChar(
bool isConsumed =
true)
const;
262 if (std::optional<T> temp{
readWord() }; temp)
330 void setSource(
const Memory& sourceMem, DataFormat::Option format = DataFormat{});
336 void setSource(
const String& sourceString, DataFormat::Option format = DataFormat{});
348 bool checkEndOfFile()
const;
359 bool refillBuffer()
const;
373 bool seek(
const String& toFind, String* pool,
bool isAllMatched,
bool isContiguousMatch,
bool isOrderedMatch,
374 bool isRepeatMatch,
bool isFoundSkipped,
bool isFoundPooled, std::optional<char32_t> escapeChar = std::nullopt)
const;
381 bool seekNot(
const String& toFind, String* pool, std::optional<char32_t> escapeChar = std::nullopt)
const;
387 void updatePosition(
unsigned char incoming, uint8_t size = 1)
const;
397 Memory::size_type getSupplyCount()
const {
return (m_bufferLen - m_readPos) + m_remaining; }
402 DataFormat discoverFormat();
409 void initialise(
char* pointerSrc,
const file::File* fileSrc,
Memory::size_type dataLen);
412 char* m_buffer =
nullptr;
414 const file::File* m_file =
nullptr;
416 std::unique_ptr<Memory> m_fileCache;
430 mutable bool m_foundCR =
false;
433 void swap(BufferIn& v1, BufferIn& v2);
Class to represent a file.
Definition File.h:21
virtual bool fail() const noexcept
Definition IOBase.h:66
virtual void setState(flag_type f)
Definition IOBase.h:89
virtual bool good() const noexcept
Definition IOBase.h:56
TextEncoding textEncoding() const
Definition BufferIn.h:155
const BufferIn & getLine(String &line, bool keepStop=true) const
Definition BufferIn.cpp:426
const char * data() const
Definition BufferIn.h:125
const BufferIn & skip(Memory::size_type howMany) const
Definition BufferIn.cpp:439
const BufferIn & rewind(Memory::size_type howMany) const
Definition BufferIn.cpp:457
Memory::size_type getLastColumn() const
Definition BufferIn.h:145
void setSource(const file::File &sourceFile, DataFormat::Option format=DataFormat{})
Definition BufferIn.cpp:534
const BufferIn & getString(String &dest, String::sizeOption howMany=std::nullopt) const
Definition BufferIn.cpp:406
const BufferIn & getValue(T &val) const
Definition BufferIn.h:261
bool findFirstNotOf(const String &toFind, String *pool=nullptr, std::optional< char32_t > escapeChar=std::nullopt) const
Definition BufferIn.h:208
const BufferIn & read(char *dest, Memory::size_type &howMany) const
Definition BufferIn.cpp:343
BufferIn(const file::File &sourceFile, DataFormat::Option format=DataFormat{})
Definition BufferIn.cpp:55
bool find(char32_t toFind, String *pool=nullptr, bool isFoundSkipped=false) const
Definition BufferIn.cpp:246
const BufferIn & operator>>(String &str) const
Definition BufferIn.h:81
Memory::size_type dataSize() const
Definition BufferIn.h:130
Memory::size_type getEncodedChar(String &encodedChar, bool isConsumed=true) const
Definition BufferIn.cpp:276
Memory::size_type sourceSize() const
Definition BufferIn.cpp:150
const BufferIn & operator>>(uint64_t &val) const
Definition BufferIn.h:111
void setFormat(DataFormat format)
Definition BufferIn.h:313
bool findFirstOf(const String &toFind, String *pool=nullptr, bool isContiguousMatch=false, bool isRepeatMatch=false, bool isFoundSkipped=false, bool isFoundPooled=false, std::optional< char32_t > escapeChar=std::nullopt) const
Definition BufferIn.h:198
void setPosition(Memory::size_type pos) const
Definition BufferIn.cpp:493
Memory::size_type getLastRow() const
Definition BufferIn.h:140
String readWord(const String &division=String::allWhiteSpace) const
Definition BufferIn.cpp:369
std::vector< String > readWords(Memory::sizeOption howMany=std::nullopt, const String &division=String::allWhiteSpace) const
Definition BufferIn.cpp:385
bool findIf(const String::Filter &filter, String *pool=nullptr, bool isFoundSkipped=false) const
Definition BufferIn.cpp:211
const BufferIn & operator>>(uint32_t &val) const
Definition BufferIn.h:99
const BufferIn & operator>>(int32_t &val) const
Definition BufferIn.h:93
bool find(const String &toFind, String *pool=nullptr, bool isFoundSkipped=false) const
Definition BufferIn.h:185
BufferIn & operator=(BufferIn &&source) noexcept
Definition BufferIn.cpp:127
BufferIn(const BufferIn &)=delete
No copy constructor.
const BufferIn & operator>>(int16_t &val) const
Definition BufferIn.h:87
const BufferIn & operator>>(int64_t &val) const
Definition BufferIn.h:105
void setSourceEncoding(TextEncoding encoding)
Definition BufferIn.h:318
Memory::size_type getPosition() const
Definition BufferIn.cpp:167
void swap(BufferIn &other)
Definition BufferIn.cpp:522
const BufferIn & get(unsigned char &dest) const
Definition BufferIn.cpp:259
void forEach(const String::Function &func, String *pool=nullptr) const
Definition BufferIn.cpp:184
Class representing (and optionally allocating) memory with a specified location and size.
Definition Memory.h:18
std::optional< size_type > sizeOption
Optional memory size/position.
Definition Memory.h:28
std::size_t size_type
Memory size/position type.
Definition Memory.h:26
A Unicode-aware string class.
Definition String.h:51
static const String allWhiteSpace
All white space characters.
Definition String.h:80
std::function< bool(char32_t)> Filter
Unary predicate for filtering strings.
Definition String.h:69
std::function< std::optional< char32_t >(char32_t)> Function
Unary functions for processing string characters.
Definition String.h:71
std::optional< size_type > sizeOption
Optional size type (used to indicate an unspecified or non-existant position)
Definition String.h:67
Definition Directory.h:12
Definition Base64Transport.h:11