Qore Programming Language Reference Manual 1.14.0
Loading...
Searching...
No Matches
Qore::AbstractLineIterator Class Referenceabstract

This class defines an abstract interface for line iterators. More...

#include <QC_AbstractLineIterator.dox.h>

Inheritance diagram for Qore::AbstractLineIterator:
[legend]

Public Member Methods

abstract string getLine ()
 Returns the current line in the data or throws an INVALID-ITERATOR exception if the iterator is invalid. More...
 
list< stringgetSplitLine (string sep, string quote, string eol="\n", bool trim_unquoted=False)
 Returns the current line and splits the string into a list of components based on a separator string and a quote character. More...
 
abstract string getValue ()
 Returns the current line in the data or throws an INVALID-ITERATOR exception if the iterator is invalid. More...
 
abstract int index ()
 Returns the current iterator line number (the first line is line 1) or 0 if not pointing at a valid element. More...
 
abstract bool next ()
 Moves the current position to the next line; returns False if there are no more lines to read. More...
 
abstract bool valid ()
 Returns True if the iterator is currently pointing at a valid element, False if not. More...
 
abstract auto getValue ()
 returns the current value More...
 
abstract bool next ()
 Moves the current position to the next element; returns False if there are no more elements. More...
 
abstract bool valid ()
 returns True if the iterator is currently pointing at a valid element, False if not More...
 

Detailed Description

This class defines an abstract interface for line iterators.

Classes inheriting this class can be used to iterate lines from various sources.

Since
Qore 0.8.13

Member Function Documentation

◆ getLine()

abstract string Qore::AbstractLineIterator::getLine ( )
pure virtual

Returns the current line in the data or throws an INVALID-ITERATOR exception if the iterator is invalid.

Returns
the current line in the data
Example:
while (i.next()) {
printf("+ %y\n", i.getLine());
}
Exceptions
INVALID-ITERATORthe iterator is not pointing at a valid element

Implemented in Qore::DataLineIterator, Qore::FileLineIterator, and Qore::InputStreamLineIterator.

◆ getSplitLine()

list< string > Qore::AbstractLineIterator::getSplitLine ( string  sep,
string  quote,
string  eol = "\n",
bool  trim_unquoted = False 
)

Returns the current line and splits the string into a list of components based on a separator string and a quote character.

Retrieves additional lines if the last is quoted and is not terimated; this way fields can contain multiple lines

The quote character can appear as the first part of a field, in which case it is assumed to designate the entire field. If instances of the quote character are found in the field preceded by a backquote character ("\"), then these quote characters are included as part of the field's text and not treated as quote characters.\n Also the separator character can appear as a part of a field with this variant.\n This variant is useful for parsing CSV files, for example. @par Code Flags: @ref RET_VALUE_ONLY @param sep the separator string; if the separator string is not found in the string to split, then a list with only one element containing the entire string argument is returned'; if this string has a different @ref character_encoding "character encoding" than \a str, then it will be converted to <em>str</em>'s @ref character_encoding "character encoding" @param quote the quote character @param eol the end of line string to be readded in case of a field split between lines @param trim_unquoted remove leading and trailing whitespace from unquoted fields @return a list of each component of a string separated by a separator string, with the separator and any enclosing quote characters removed @par Example: @code{.py} list<string> list = "some,'text with spaces, and commas, here is another one! ,',here".split(",", "'"); # returns ("some", ", and commas, here is another one! ,", "here") @endcode @throw ENCODING-CONVERSION-ERROR this exception could be thrown if the string arguments have different @ref character_encoding "character encodings" and an error occurs during encoding conversion

Exceptions
SPLIT-ERRORfield missing closing quote character; extra text following quoted field
Since
  • Qore 0.9.8 added this method

◆ getValue()

abstract string Qore::AbstractLineIterator::getValue ( )
pure virtual

Returns the current line in the data or throws an INVALID-ITERATOR exception if the iterator is invalid.

This method calls AbstractLineIterator::getLine() internally.

Returns
the current line in the data
Example:
while (i.next()) {
printf("+ %y\n", i.getValue());
}
Exceptions
INVALID-ITERATORthe iterator is not pointing at a valid element
See also
AbstractLineIterator::getLine()

Implements Qore::AbstractIterator.

Implemented in Qore::DataLineIterator, Qore::FileLineIterator, and Qore::InputStreamLineIterator.

◆ index()

abstract int Qore::AbstractLineIterator::index ( )
pure virtual

Returns the current iterator line number (the first line is line 1) or 0 if not pointing at a valid element.

Returns
the current iterator line number (the first line is line 1) or 0 if not pointing at a valid element
Example:
while (i.next()) {
printf("+ %d: %y\n", i.index(), i.getLine());
}

Implemented in Qore::DataLineIterator, Qore::FileLineIterator, and Qore::InputStreamLineIterator.

◆ next()

abstract bool Qore::AbstractLineIterator::next ( )
pure virtual

Moves the current position to the next line; returns False if there are no more lines to read.

This method will return True again after it returns False once if data is not empty, otherwise it will always return False. The iterator object should not be used after this method returns False.

Returns
False if there are no more lines in the source (in which case the iterator object is invalid and should not be used); True if successful (meaning that the iterator object is valid)
Example:
while (i.next()) {
printf("line: %y\n", i.getLine());
}

Implements Qore::AbstractIterator.

Implemented in Qore::DataLineIterator, Qore::FileLineIterator, and Qore::InputStreamLineIterator.

◆ valid()

abstract bool Qore::AbstractLineIterator::valid ( )
pure virtual

Returns True if the iterator is currently pointing at a valid element, False if not.

Returns
True if the iterator is currently pointing at a valid element, False if not
Example:
if (i.valid())
printf("current value: %y\n", i.getValue());

Implements Qore::AbstractIterator.

Implemented in Qore::DataLineIterator, Qore::FileLineIterator, and Qore::InputStreamLineIterator.