Outline
Purpose
Provide push parser for hex types.
Classes
- See also
Description
The balxml::HexParser
class template provided by this component can be used to parse Hex characters into one of the supported Hex types, which are bsl::vector<char>
and bsl::string
. The TYPE
parameter can be one of these two types.
Note that if you need a way to encode binary data into ASCII, the bdlde_base64encoder and bdlde_base64decoder components are likely a more efficient solution.
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 Hex data. The following loadFromHexStream
function loads this data into an bsl::vector<char>
blob:
#include <bsl_istream.h>
#include <bsl_iterator.h>
#include <bsl_vector.h>
using namespace BloombergLP;
{
enum { k_FAILURE = -1 };
return k_FAILURE;
}
if (0 != parser.
pushCharacters(bsl::istreambuf_iterator<char>(stream),
bsl::istreambuf_iterator<char>())) {
return k_FAILURE;
}
}
Definition balxml_hexparser.h:169
int pushCharacters(INPUT_ITERATOR begin, INPUT_ITERATOR end)
Definition balxml_hexparser.h:297
int endParse()
Definition balxml_hexparser.h:284
int beginParse(TYPE *object)
Definition balxml_hexparser.h:269
Definition bslstl_vector.h:1025
The following function demonstrates the loadFromHexStream
function:
#include <sstream>
void usageExample()
{
const char INPUT[] = "0F3B296A";
int result = loadFromHexStream(&vec, iss);
assert(0 == result);
assert(0x0F == vec[0]);
assert(0x3B == vec[1]);
assert(0x29 == vec[2]);
assert(0x6A == 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