//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
{
/**
* @class Scanner
- * @brief This class provides to parse primitive types and strings, and supports to use regular expressions and various encoding schemes.
+ * @brief This class provides methods to parse primitive types and strings, and supports the use of regular expressions and various encoding schemes.
* @since 2.1
*
- * The %Scanner class breaks the input, which can be either a %String instance or strings from a file, into tokens using a delimiter.
+ * The %Scanner class breaks the input, which can either be a String instance or strings from a file, into tokens using a delimiter.
* The delimiter is set to whitespace as a default value. The resulting tokens are converted into values of different types according
* to the methods in %Scanner.
*
*
* @since 2.1
* @return An error code
- * @param[in] inputStr The string to scan
+ * @param[in] inputStr The string to scan
* @exception E_SUCCESS The method is successful.
- * @exception E_INVALID_ARG The length of the specified @c string parameter is @c 0.
+ * @exception E_INVALID_ARG The length of the specified @c string is @c 0.
*/
result Construct(const String& inputStr);
*
* @since 2.1
* @return An error code
- * @param[in] inputFilePath The file to read to construct input data
- * @param[in] encodingScheme The encoding type of the file
- * @exception E_SUCCESS The method is successful.
+ * @param[in] inputFilePath The file to read to construct input data
+ * @param[in] encodingScheme The encoding type of the file
+ * @exception E_SUCCESS The method is successful.
* @exception E_FILE_NOT_FOUND The input file does not exist.
- * @exception E_IO The file operation is invalid.
- * @exception E_INVALID_ARG The specified encoding scheme does not exist.
+ * @exception E_IO The file operation is invalid.
+ * @exception E_INVALID_ARG The specified encoding scheme does not exist.
* @remarks The supported encoding schemes are ASCII, GSM, UCS-2, UCS-2LE, UCS-2BE, UCS-4, UCS-4LE, UCS-4BE, UTF-8, UTF-16, UTF-16LE, UTF-16BE, UTF-32, UTF-32LE, UTF-32BE, ISO-8859-1~16 (except ISO-8859-12), Windows-874, Windows-1250 ~ Windows-1258, KSC5601, BIG5, GB2312, Shift_JIS, and ISO-2022-jp.
*/
result Construct(const String& inputFilePath, const String& encodingScheme);
/**
- * Gets the substring of the input data matching to the pattern constructed from the specified string. @n
- * Delimiter will be ignored and the returned string does not include any line terminator.
- * If such a pattern in the input data is not found upto the next line terminator, return an empty string through the out parameter, matchedStr.
+ * Gets the substring of the input data matching the pattern constructed from the specified string. @n
+ * Delimiter is ignored and the returned string does not include any line terminator.
+ * If such a pattern in the input data is not found upto the next line terminator, the %FindInLine() method returns an empty string through the out parameter, @c matchedStr.
*
* @since 2.1
* @return An error code
* @param[in] patternStr The string to construct the pattern
* @param[out] matchedStr The matched string or empty string
* @exception E_SUCCESS The method is successful.
- * @exception E_INVALID_ARG The length of the specified @c string parameter is @c 0.
- * @exception E_DATA_NOT_FOUND No substring is found in the input data of current instance.
+ * @exception E_INVALID_ARG The length of the specified @c string is @c 0.
+ * @exception E_DATA_NOT_FOUND No substring is found in the input data of the current instance.
*/
result FindInLine(const String& patternStr, String& matchedStr);
/**
* Gets the substring matching the pattern from the input data. @n
- * Delimiter will be ignored and the returned string does not include any line terminator.
- * If such a pattern in the input data is not found upto the next line terminator, return an empty string through the out parameter, matchedStr.
+ * Delimiter is ignored and the returned string does not include any line terminator.
+ * If such a pattern in the input data is not found upto the next line terminator, the %FindInLine() method returns an empty string through the out parameter, @c matchedStr.
*
* @since 2.1
* @return An error code
- * @param[in] pattern The pattern to compile for finding substring from input data
- * @param[out] matchedStr The matched string or empty string
- * @exception E_SUCCESS The method is successful.
- * @exception E_DATA_NOT_FOUND No substring is found in the input data of current instance.
+ * @param[in] pattern The pattern to compile for finding the substring from the input data
+ * @param[out] matchedStr The matched string or empty string
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_DATA_NOT_FOUND No substring is found in the input data of the current instance.
*/
result FindInLine(const RegularExpression& pattern, String& matchedStr);
/**
- * Gets the next token as @c signed @c char. @n Next token is converted to @c signed @c char using default radix.
- * The @c signed @c char can hold value from -128 to 127.
+ * Gets the next token as @c signed @c char. @n The next token is converted to a @c signed @c char using a default radix.
+ * The @c signed @c char can hold values from -128 to 127.
*
* @since 2.1
* @return An error code
- * @param[out] nextSignedChar The next token as a @c signed @c char
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid signed @c char value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextSignedChar The next token as a @c signed @c char
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid signed @c char value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextSignedChar(signed char& nextSignedChar) const;
/**
- * Gets the next token as @c signed @c char. @n Next token is converted to @c signed @c char using specified @c radix.
- * The @c signed @c char can hold value from -128 to 127.
+ * Gets the next token as @c signed @c char. @n The next token is converted to a @c signed @c char using the specified @c radix.
+ * The @c signed @c char can hold values from -128 to 127.
*
* @since 2.1
* @return An error code
- * @param[out] nextSignedChar The next token as a @c signed @c char
- * @param[in] radix The radix to use for conversion
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c char value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextSignedChar The next token as a @c signed @c char
+ * @param[in] radix The radix to use for conversion
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c char value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextSignedChar(signed char& nextSignedChar, int radix) const;
/**
- * Gets the next token as @c int. @n Next token is converted to signed integer using default radix.
- * The signed integer can hold value from -2^31 to 2^31-1.
+ * Gets the next token as @c int. @n The next token is converted to a @c signed integer using a default radix.
+ * The @c signed integer can hold values from -2^31 to 2^31-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextInt The next token as a signed integer
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid integer value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextInt The next token as a @c signed integer
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed integer value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextInt(int& nextInt) const;
/**
- * Gets the next token as @c int. @n Next token is converted to signed integer using specified @c radix.
- * The signed integer can hold value from -2^31 to 2^31-1.
+ * Gets the next token as @c int. @n The next token is converted to a @c signed integer using the specified @c radix.
+ * The @c signed integer can hold values from -2^31 to 2^31-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextInt The next token as a signed integer
- * @param[in] radix The radix to use for conversion
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid integer value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextInt The next token as a @c signed integer
+ * @param[in] radix The radix to use for conversion
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed integer value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextInt(int& nextInt, int radix) const;
/**
- * Gets the next token as @c short. @n Next token is converted to signed @c short using default radix.
- * The signed @c short can hold value from -2^15 to 2^15-1.
+ * Gets the next token as @c short. @n The next token is converted to a @c signed @c short using a default radix.
+ * The @c signed @c short can hold values from -2^15 to 2^15-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextShort The next token as a signed @c short
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c short value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextShort The next token as a signed @c short
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c short value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextShort(short& nextShort) const;
/**
- * Gets the next token as @c short. @n Next token is converted to signed @c short using specified @c radix.
- * The signed @c short can hold value from -2^15 to 2^15-1.
+ * Gets the next token as @c short. @n The next token is converted to a @c signed @c short using the specified @c radix.
+ * The @c signed @c short can hold values from -2^15 to 2^15-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextShort The next token as a signed @c short
- * @param[in] radix The radix to use for conversion
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c short value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextShort The next token as a @c signed @c short
+ * @param[in] radix The radix to use for conversion
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c short value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextShort(short& nextShort, int radix) const;
/**
- * Gets the next token as @c long @c long. @n Next token is converted to signed @c long @c long using default radix.
- * The signed @c long @c long can hold value from -2^63 to 2^63-1.
+ * Gets the next token as @c long @c long. @n The next token is converted to a @c signed @c long @c long using a default radix.
+ * The @c signed @c long @c long can hold values from -2^63 to 2^63-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextLongLong The next token as a signed @c long @c long
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c long @c long value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextLongLong The next token as a @c signed @c long @c long
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c long @c long value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextLongLong(long long& nextLongLong) const;
/**
- * Gets the next token as @c long @c long. @n Next token is converted to signed @c long @c long using specified @c radix.
- * The signed @c long @c long can hold value from -2^63 to 2^63-1.
+ * Gets the next token as @c long @c long. @n The next token is converted to a @c signed @c long @c long using the specified @c radix.
+ * The @c signed @c long @c long can hold values from -2^63 to 2^63-1.
*
* @since 2.1
* @return An error code
- * @param[out] nextLongLong The next token as a signed @c long @c long
- * @param[in] radix The radix to use for conversion
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c long @c long value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextLongLong The next token as a @c signed @c long @c long
+ * @param[in] radix The radix to use for conversion
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c signed @c long @c long value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextLongLong(long long& nextLongLong, int radix) const;
/**
- * Gets the next token as @c float. @n Next token is converted to @c float.
- * The signed @c float can hold a single-precision 32-bit floating number.
+ * Gets the next token as @c float. @n The next token is converted to @c float.
+ * The @c signed @c float can hold a single-precision 32-bit floating number.
*
* @since 2.1
* @return An error code
- * @param[out] nextFloat The next token as a @c float
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c float value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextFloat The next token as a @c float
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c float value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextFloat(float& nextFloat) const;
/**
- * Gets the next token as @c double. @n Next token is converted to @c double.
+ * Gets the next token as @c double. @n The next token is converted to @c double.
* The signed @c double can hold a double-precision 64-bit floating number.
*
* @since 2.1
* @return An error code
- * @param[out] nextDouble The next token as a @c double
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c double value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextDouble The next token as a @c double
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c double value.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextDouble(double& nextDouble) const;
/**
- * Gets the next token as @c bool. @n Next token is converted to boolean.
+ * Gets the next token as @c bool. @n The next token is converted to boolean.
* Nothing can be converted, except true/TRUE or false/FALSE.
*
* @since 2.1
* @return An error code
- * @param[out] nextBool The next token as @c bool
- * @exception E_SUCCESS The method is successful.
- * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c bool value.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextBool The next token as @c bool
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_NUM_FORMAT The next token cannot be translated into a valid @c bool value.
+ * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
*/
result GetNextBool(bool& nextBool) const;
/**
- * Gets the input string up to next line delimiter and advances the %Scanner to the beginning of the next line. @n
+ * Gets the input string up to the next line delimiter and advances the %Scanner to the beginning of the next line. @n
* The returned string does not include any line terminator.
*
* @since 2.1
* @return An error code
- * @param[out] nextLine The next line as an instance of String
- * @exception E_SUCCESS The method is successful.
- * @exception E_DATA_NOT_ENOUGH There are no remaining lines for the current instance of %Scanner.
+ * @param[out] nextLine The next line as an instance of String
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_DATA_NOT_ENOUGH There are no lines remaining for the current instance of %Scanner.
*
* The following example demonstrates how to use the %GetNextLine() method.
*
*
* @since 2.1
* @return An error code
- * @param[out] nextTok The next token as an instance of String
- * @exception E_SUCCESS The method is successful.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[out] nextTok The next token as an instance of String
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*
* The following example demonstrates how to use the %GetNextToken() method.
* @code
result GetNextToken(String& nextTok) const;
/**
- * Gets the next token as String if it matches to the pattern constructed from the specified string.
+ * Gets the next token as String if it matches the pattern constructed from the specified string.
*
* @since 2.1
* @return An error code
- * @param[in] pattern The string to construct the pattern
- * @param[out] nextTok The next token as an instance of String, @n
- * else an empty string if not matched
- * @exception E_SUCCESS The method is successful.
- * @exception E_DATA_NOT_FOUND The next token does not match to the pattern.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[in] pattern The string from which to construct the pattern
+ * @param[out] nextTok The next token as an instance of String, @n
+ * else an empty string if it is does not match
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_DATA_NOT_FOUND The next token does not match the pattern.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextToken(const String& pattern, String& nextTok) const;
/**
- * Gets the next token as String if it matches to the pattern.
+ * Gets the next token as String if it matches the pattern.
*
* @since 2.1
* @return An error code
- * @param[in] pattern The pattern to find.
- * @param[out] nextTok The next token as an instance of String, @n
- * else an empty string if not matched
- * @exception E_SUCCESS The method is successful.
- * @exception E_DATA_NOT_FOUND The next token does not match to the pattern.
- * @exception E_DATA_NOT_ENOUGH There are no remaining tokens for the current instance of %Scanner.
+ * @param[in] pattern The pattern to find
+ * @param[out] nextTok The next token as an instance of String, @n
+ * else an empty string if it is does not match
+ * @exception E_SUCCESS The method is successful.
+ * @exception E_DATA_NOT_FOUND The next token does not match the pattern.
+ * @exception E_DATA_NOT_ENOUGH There are no tokens remaining for the current instance of %Scanner.
*/
result GetNextToken(const RegularExpression& pattern, String& nextTok) const;
*
* @since 2.1
* @return @c true if the current instance has another token, @n
- * else @c false
+ * else @c false
*/
bool HasNextToken(void) const;
/**
- * Checks whether the next token matches to the pattern constructed from the specified string.
+ * Checks whether the next token matches the pattern constructed from the specified string.
*
* @since 2.1
- * @return @c true if the next token matches to the pattern constructed from the specified string, @n
- * else @c false
+ * @return @c true if the next token matches the pattern constructed from the specified string, @n
+ * else @c false
* @param[in] pattern The string to construct the pattern
*/
bool HasNextToken(const String& pattern) const;
/**
- * Checks whether the next token matches to the pattern.
+ * Checks whether the next token matches the pattern.
*
* @since 2.1
- * @return @c true if the next token matches to the pattern, @n
- * else @c false
+ * @return @c true if the next token matches the pattern, @n
+ * else @c false
* @param[in] pattern The pattern to find
*/
bool HasNextToken(const RegularExpression& pattern) const;
/**
* Checks whether the next token can be translated into a valid @c signed @c char value in the default radix.
- * The @c signed @c char can hold value from -128 to 127.
+ * The @c signed @c char can hold values from -128 to 127.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c signed @c char value in the current radix, @n
- * else @c false
+ * else @c false
*/
bool IsNextTokenConvertibleToSignedChar(void) const;
/**
* Checks whether the next token can be translated into a valid @c signed @c char value in the specified @c radix.
- * The @c signed @c char can hold value from -128 to 127.
+ * The @c signed @c char can hold values from -128 to 127.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c signed @c char value in the current radix, @n
- * else @c false
- * @param[in] radix The radix to use to translate the token as a valid @c signed @c char value
+ * else @c false
+ * @param[in] radix The radix used to translate the token as a valid @c signed @c char value
*/
bool IsNextTokenConvertibleToSignedChar(int radix) const;
/**
* Checks whether the next token can be translated into a valid @c int value in the default radix. @n
- * The signed integer can hold value from -2^31 to 2^31-1.
+ * The @c signed integer can hold values from -2^31 to 2^31-1.
*
* @since 2.1
- * @return @c true if the next token can be translated into a valid @c int value in the current radix, @n
- * else @c false
+ * @return @c true if the next token can be translated into a valid @c int value in the current radix, @n
+ * else @c false
*/
bool IsNextTokenConvertibleToInt(void) const;
/**
* Checks whether the next token can be translated into a valid @c int value in the specified @c radix. @n
- * The signed integer can hold value from -2^31 to 2^31-1.
+ * The @c signed integer can hold values from -2^31 to 2^31-1.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c int value in the current radix, @n
- * else @c false
- * @param[in] radix The radix to use to translate the token as a valid @c int value
+ * else @c false
+ * @param[in] radix The radix used to translate the token as a valid @c int value
*/
bool IsNextTokenConvertibleToInt(int radix) const;
/**
* Checks whether the next token can be translated into a valid @c short value in the default radix. @n
- * The signed @c short can hold value from -2^15 to 2^15-1.
+ * The @c signed @c short can hold values from -2^15 to 2^15-1.
*
* @since 2.1
- * @return @c true if the next token can be translated into a valid @c short value in the current radix, @n
- * else @c false
+ * @return @c true if the next token can be translated into a valid @c short value in the current radix, @n
+ * else @c false
*/
bool IsNextTokenConvertibleToShort(void) const;
/**
* Checks whether the next token can be translated into a valid @c short value in the specified @c radix. @n
- * The signed @c short can hold value from -2^15 to 2^15-1.
+ * The @c signed @c short can hold values from -2^15 to 2^15-1.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c short value in the current radix, @n
- * else @c false
- * @param[in] radix The radix to use to translate the token as a valid @c short value
+ * else @c false
+ * @param[in] radix The radix used to translate the token as a valid @c short value
*/
bool IsNextTokenConvertibleToShort(int radix) const;
/**
* Checks whether the next token can be translated into a valid @c long @c long value. @n
- * The signed @c long @c long can hold value from -2^63 to 2^63-1.
+ * The @c signed @c long @c long can hold value from -2^63 to 2^63-1.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c long @c long value in the current radix, @n
- * else @c false
+ * else @c false
*/
bool IsNextTokenConvertibleToLongLong(void) const;
/**
* Checks whether the next token can be translated into a valid @c float value. @n
- * The signed @c float can hold a single-precision 32-bit floating number.
+ * The @c signed @c float can hold a single-precision 32-bit floating number.
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c float value in the current radix, @n
- * else @c false
+ * else @c false
*/
bool IsNextTokenConvertibleToFloat(void) const;
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c double value in the current radix, @n
- * else @c false
+ * else @c false
*/
bool IsNextTokenConvertibleToDouble(void) const;
*
* @since 2.1
* @return @c true if the next token can be translated into a valid @c bool value, @n
- * else @c false
+ * else @c false
*/
bool IsNextTokenConvertibleToBool(void) const;
*
* @since 2.1
* @return @c true if the input data of the current instance of %Scanner has another line, @n
- * else @c false
+ * else @c false
*/
bool HasNextLine(void) const;