Fail2abuseipdb
A simple application for converting fail2ban's jail output to an abuseipdb-compatible CSV
Public Member Functions | Private Attributes
StringSplit::Iterator Struct Reference

Simple implementation of an iterator usable in a iterative for-loop. More...

#include <string_splitter.hpp>

Collaboration diagram for StringSplit::Iterator:
Collaboration graph
[legend]

Public Member Functions

 Iterator ()
 Constructs an empty iterator which indicates the end of an iterator. More...
 
 Iterator (const string &input, const string &delimiter)
 Constructs a new instance of this iterator. More...
 
string_view operator* ()
 Dereference operator overload. More...
 
Iteratoroperator++ ()
 Increments the iterator's position by 1. More...
 
bool operator!= (const Iterator &other)
 Not-equal operator overload. Determines whether two. More...
 

Private Attributes

size_t m_tokenStart = 0
 
size_t m_tokenEnd = 0
 
string m_input
 
string_view m_inputView
 
string m_delimiter
 
bool m_done = false
 

Detailed Description

Simple implementation of an iterator usable in a iterative for-loop.

Definition at line 27 of file string_splitter.hpp.

Constructor & Destructor Documentation

◆ Iterator() [1/2]

StringSplit::Iterator::Iterator ( )
inline

Constructs an empty iterator which indicates the end of an iterator.

Definition at line 40 of file string_splitter.hpp.

40 { m_done = true; }

References m_done.

Referenced by StringSplit::end().

◆ Iterator() [2/2]

StringSplit::Iterator::Iterator ( const string &  input,
const string &  delimiter 
)
inline

Constructs a new instance of this iterator.

Parameters
inputThe input string.
delimiterThe delimiter to split the string by.

Definition at line 48 of file string_splitter.hpp.

48  :
49  m_input(std::move(input)), m_inputView(m_input), m_delimiter(std::move(delimiter)) {
51  }

References Iterator(), m_delimiter, and m_input.

Referenced by Iterator().

Member Function Documentation

◆ operator!=()

bool StringSplit::Iterator::operator!= ( const Iterator other)
inline

Not-equal operator overload. Determines whether two.

See also
Iterator instances are inequal.
Parameters
otherA const reference to a different
See also
Iterator.
Returns
true If the two instances are inequal.
false Otherwise.
Remarks
This only checks if both iterators point to the end of the iterator!

Definition at line 86 of file string_splitter.hpp.

86 { return m_done && other.m_done; }

References m_done.

◆ operator*()

string_view StringSplit::Iterator::operator* ( )
inline

Dereference operator overload.

Returns
string_view Returns a substring of the input marked by the current iterator position.

Definition at line 58 of file string_splitter.hpp.

58 { return m_inputView.substr(m_tokenStart, m_tokenEnd - m_tokenStart); }

◆ operator++()

Iterator& StringSplit::Iterator::operator++ ( )
inline

Increments the iterator's position by 1.

Returns
Iterator& A reference to the current instance.

Definition at line 65 of file string_splitter.hpp.

65  {
66  if (m_tokenEnd == string::npos) {
67  m_done = true;
68  return *this;
69  }
70 
73  return *this;
74  }

References m_delimiter, m_done, m_tokenEnd, and m_tokenStart.

Field Documentation

◆ m_delimiter

string StringSplit::Iterator::m_delimiter
private

Definition at line 33 of file string_splitter.hpp.

Referenced by Iterator(), and operator++().

◆ m_done

bool StringSplit::Iterator::m_done = false
private

Definition at line 34 of file string_splitter.hpp.

Referenced by Iterator(), operator!=(), and operator++().

◆ m_input

string StringSplit::Iterator::m_input
private

Definition at line 31 of file string_splitter.hpp.

Referenced by Iterator().

◆ m_inputView

string_view StringSplit::Iterator::m_inputView
private

Definition at line 32 of file string_splitter.hpp.

◆ m_tokenEnd

size_t StringSplit::Iterator::m_tokenEnd = 0
private

Definition at line 30 of file string_splitter.hpp.

Referenced by operator++().

◆ m_tokenStart

size_t StringSplit::Iterator::m_tokenStart = 0
private

Definition at line 29 of file string_splitter.hpp.

Referenced by operator++().


The documentation for this struct was generated from the following file: