Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
CharSequence.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <string>
9#include <vector>
10#include <memory>
11
13
14namespace cli {
15
17 std::shared_ptr < LineInterface > m_lineInterface;
18 std::string putbackBuffer;
19
20 const char * linePtr = nullptr;
21 std::vector < std::string > m_lines;
22
23 void fetch ( bool readNextLine );
24
25 std::string getData ( ) const;
26
27 size_t m_line = 0;
28 size_t m_position = 0;
29public:
30 explicit CharSequence ( std::shared_ptr < cli::LineInterface > reader ) : m_lineInterface ( std::move ( reader ) ) {
31 }
32
33 template < std::derived_from < LineInterface > Interface >
34 explicit CharSequence ( Interface && reader ) : m_lineInterface ( std::make_shared < Interface > ( std::forward < Interface > ( reader ) ) ) { //NOLINT(bugprone-forwarding-reference-overload)
35 }
36
37 CharSequence ( CharSequence && ) = default;
38
39 CharSequence ( const CharSequence & ) = delete;
40
42
43 CharSequence & operator = ( const CharSequence & ) = delete;
44
46 if ( m_lineInterface )
47 m_lineInterface->lineCallback ( getData ( ) );
48 }
49
50 int getCharacter ( ) const;
51
52 void advance ( bool readNextLine );
53
54 void putback ( std::string string, size_t line, size_t position ) {
55 m_line = line;
56 m_position = position;
57 putbackBuffer.insert ( putbackBuffer.end ( ), string.rbegin ( ), string.rend ( ) );
58 }
59
60 size_t getLine ( ) const {
61 return m_line;
62 }
63
64 size_t getPosition ( ) const {
65 return m_position;
66 }
67};
68
69} /* namespace cli */
70
Definition: CharSequence.h:16
CharSequence(std::shared_ptr< cli::LineInterface > reader)
Definition: CharSequence.h:30
CharSequence(const CharSequence &)=delete
size_t getLine() const
Definition: CharSequence.h:60
void putback(std::string string, size_t line, size_t position)
Definition: CharSequence.h:54
CharSequence(CharSequence &&)=default
int getCharacter() const
Definition: CharSequence.cpp:45
CharSequence(Interface &&reader)
Definition: CharSequence.h:34
~CharSequence()
Definition: CharSequence.h:45
CharSequence & operator=(CharSequence &&)=delete
void advance(bool readNextLine)
Definition: CharSequence.cpp:54
size_t getPosition() const
Definition: CharSequence.h:64
Definition: Arg.h:11
Definition: FordFulkerson.hpp:16