blob: 674a3fa4e4b749cd0f406121c1bfc732265fb11c [file] [log] [blame]
#ifndef IMAGE_IO_XML_XML_PI_RULE_H_ // NOLINT
#define IMAGE_IO_XML_XML_PI_RULE_H_ // NOLINT
#include "image_io/xml/xml_rule.h"
namespace photos_editing_formats {
namespace image_io {
/// The XmlPiRule parses the processing information syntax: "<?...?>". This
/// syntax is considerably simplified from the official XML specification. As
/// documented in the comments for the XmlHandler Pi() function, The leading
/// "<?" syntax is never sent to the handler, while the trailing "?>" literal
/// is always sent as part of the processing content token. This approach makes
/// it much easier to parse XML syntax. The alternate start point constructor
/// is used by the XmlElementContentRule.
class XmlPiRule : public XmlRule {
public:
XmlPiRule();
explicit XmlPiRule(StartPoint start_point);
private:
/// Builds an XmlTokenContext from the XmlActionContext and calls the
/// handler's Pi() function.
/// @param context The action context from the rule's terminal.
/// @return The result value from the handler's function.
DataMatchResult HandlePiValue(const XmlActionContext& context);
};
} // namespace image_io
} // namespace photos_editing_formats
#endif // IMAGE_IO_XML_XML_PI_RULE_H_ // NOLINT