Outline
Purpose
Provide push parser for lists.
Classes
- See also
- bdlat_arrayfunctions
Description
The balxml::ListParser
class template provided by this component can be used to parse lists into an object that supports bdlat_ArrayFunctions
.
This class template is a model of the PushParser
concept, which contains the following methods:
int beginParse(TYPE *object);
int endParse();
template <typename INPUT_ITERATOR>
int pushCharacters(INPUT_ITERATOR begin, INPUT_ITERATOR end);
Usage
This section illustrates intended use of this component.
Example 1: Basic Usage
The following snippets of code illustrate the usage of this component. Suppose you had an input stream that contained a list of doubles. The following loadDoublesFromListStream
function loads this data into an bsl::vector<double>
:
#include <istream>
#include <iterator>
#include <vector>
#include <sstream>
#include <string>
using namespace BloombergLP;
int parseDouble(double *result, const char *data, int dataLength);
bsl::istream& stream)
{
enum { k_FAILURE = -1 };
if (0 != parser.beginParse(result)) {
return k_FAILURE;
}
if (0 != parser.pushCharacters(bsl::istreambuf_iterator<char>(stream),
bsl::istreambuf_iterator<char>())) {
return k_FAILURE;
}
return parser.endParse();
}
Definition balxml_listparser.h:187
Definition bslstl_vector.h:1025
The parseDouble
function is implemented as follows:
int parseDouble(double *result, const char *data, int dataLength)
{
ss >> (*result);
return 0;
}
Definition bslstl_string.h:1281
Definition bslstl_stringstream.h:184
The following function demonstrates the loadDoublesFromListStream
function:
void usageExample()
{
const char INPUT[] = "1.5 2.0 3.8 1.0";
int result = loadDoublesFromListStream(&vec, iss);
assert(0 == result);
assert(1.5 == vec[0]);
assert(2.0 == vec[1]);
assert(3.8 == vec[2]);
assert(1.0 == vec[3]);
}
Definition bslstl_istringstream.h:176
size_type size() const BSLS_KEYWORD_NOEXCEPT
Return the number of elements in this vector.
Definition bslstl_vector.h:2664