stlab.adobe.com Adobe Systems Incorporated

XML Parser (and supporting constructs)
[Parsing, Serialization, and Strings]

Classes

class  attribute_set_t
 An associated array based on adobe::token_range_t. A utility class for the xml_parser_t. More...
class  line_position_t
 A type detailing parser position information. More...
class  stream_error_t
 An exception class thrown during parsing failures. More...
class  xml_parser_t< O >
 A relatively lightweight and simple xml (subset) parser. More...

Typedefs

typedef std::pair< uchar_ptr_t,
uchar_ptr_t > 
token_range_t

Functions

template<typename I1 , typename I2 , typename BP >
bool bounded_equal (I1 first1, I1 last1, I2 first2, I2 last2, BP pred)
template<typename I1 , typename I2 >
bool bounded_equal (I1 first1, I1 last1, I2 first2, I2 last2)
template<typename R1 , typename R2 >
bool bounded_equal (R1 &range1, R2 &range2)
std::ostream & operator<< (std::ostream &s, const token_range_t &x)
template<typename T >
token_range_t static_token_range (T *begin)
bool token_range_equal (const token_range_t &x, const token_range_t &y)
bool token_range_less (const token_range_t &x, const token_range_t &y)

Typedef Documentation

typedef std::pair<uchar_ptr_t, uchar_ptr_t> token_range_t

A range of pointers denoting a token within a character stream.

token_range_t is a utility class mostly used by the in-memory ASL parsers such as xml_parser_t. Token ranges are accompanied by a host of algorithms used to compare them to one another. Because they are a pair of pointers they do not copy any memory dynamically, and so are very fast to construct and copy. The data to which they point could be shared across countless other token_range_t instances, so the modification of the tokens they represent is prohibited.

A NULL-token as it relates to token_range_t is one where both the first and second value are equivalent, but any value. Typically this value is 0, but this is not required.

Definition at line 145 of file lex_shared_fwd.hpp.


Function Documentation

bool adobe::bounded_equal ( I1  first1,
I1  last1,
I2  first2,
I2  last2,
BP  pred 
)

Compares two ranges of data with a binary predicate.

Parameters:
first1Iterator to the first element of the first range
last1Iterator to one-past the last element of the first range
first2Iterator to the first element of the second range
last2Iterator to one-past the last element of the second range
predConvertibleToFunction that models a BinaryPredicate
Returns:
When the two ranges are of equal length and pairwise-comparison of the ranges' elements returns true, the function itself returns true. Otherwise, the function returns false.

Definition at line 66 of file lex_shared_fwd.hpp.

bool adobe::bounded_equal ( I1  first1,
I1  last1,
I2  first2,
I2  last2 
)

Compares two ranges of data with a default binary predicate (std::equal_to<>()).

Parameters:
first1Iterator to the first element of the first range
last1Iterator to one-past the last element of the first range
first2Iterator to the first element of the second range
last2Iterator to one-past the last element of the second range
Returns:
When the two ranges are of equal length and pairwise-comparison of the ranges' elements returns true, the function itself returns true. Otherwise, the function returns false.

Definition at line 94 of file lex_shared_fwd.hpp.

bool adobe::bounded_equal ( R1 &  range1,
R2 &  range2 
)

Compares two ranges of data with a default binary predicate (std::equal_to<>()).

Parameters:
range1Iterator range to the first range
range2Iterator range to the second range
Returns:
When the two ranges are of equal length and pairwise-comparison of the ranges' elements returns true, the function itself returns true. Otherwise, the function returns false.

Definition at line 119 of file lex_shared_fwd.hpp.

std::ostream& adobe::operator<< ( std::ostream &  s,
const token_range_t &  x 
)

Serializes a token_range_t to an output stream

Parameters:
sstream to take the token_range_t
xthe token_range_t to be output to the stream
Returns:
the original output stream.

Definition at line 223 of file lex_shared_fwd.hpp.

token_range_t adobe::static_token_range ( T *  begin )

static_token_range is a utility class that creates an token_range_t from a compile-time NTBS (null-terminated byte string). The precondition for this function is that the token's source is an NTBS that exists at least as long as the token itself. Note that this function does not copy the character range internally, and makes no warranties as to string ownership.

Definition at line 245 of file lex_shared_fwd.hpp.

bool adobe::token_range_equal ( const token_range_t &  x,
const token_range_t &  y 
)

Compares two token ranges for equality.

For two token ranges to be equal their lengths must be the same and a character-by-character comparison of the two ranges must be true.

Parameters:
xthe first range to be compared
ythe second range to be compared
Returns:
true when a character-wise comparsion of the two ranges results in equality for each set of characters. false otherwise.

Definition at line 164 of file lex_shared_fwd.hpp.

bool adobe::token_range_less ( const token_range_t &  x,
const token_range_t &  y 
)

Compares two token ranges for strict weak ordering.

Unlike standard string comparison this algorithm optimizes sorting based on the lengths of the tokens involved. If a token is smaller than another it is considered to be "less" than the other. Character-based sorting only takes place when the length of the two tokens is the same. When this is the case the algorithm sorts the tokens in the same manner as adobe::mismatch.

Parameters:
xthe first range to be compared
ythe second range to be compared
Returns:
true when:
  • the first range is smaller in length than the second range, or
  • in the case when the ranges are the same length, that the character at the point when the two ranges differ is smaller in the first range.
  • (false otherwise.)

Definition at line 194 of file lex_shared_fwd.hpp.

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google