diff --git a/src/yaml/parsers.cc b/src/yaml/parsers.cc index a07473a..c806288 100644 --- a/src/yaml/parsers.cc +++ b/src/yaml/parsers.cc @@ -30,8 +30,8 @@ Parser::~Parser() { } -void -Parser::HandleEvent(yaml_event_t& event) +bool +Parser::HandleEvent(const yaml_event_t& event) { #define YAML_BOOL(x) ((x) != 0) #define YAML_STRING(x) ((char *)(x)) @@ -50,8 +50,8 @@ Parser::HandleEvent(yaml_event_t& event) break; case YAML_DOCUMENT_START_EVENT: - success = HandleDocumentStart(/* TODO: Version directive ,*/ - /* TODO: Tag directive list ,*/ + success = HandleDocumentStart(*event.data.document_start.version_directive, + TagDirectiveList(), YAML_BOOL(event.data.document_start.implicit), event.start_mark, event.end_mark); diff --git a/src/yaml/parsers.hh b/src/yaml/parsers.hh index 9bb2fd5..6b78ae1 100644 --- a/src/yaml/parsers.hh +++ b/src/yaml/parsers.hh @@ -82,8 +82,10 @@ struct Parser * Breaks out the event's data and calls the appropriate handler method. * * @param [in] event A libyaml parser event object + * @return `true` or `false` indicating whether the event was successfully + * handled */ - virtual void HandleEvent(yaml_event_t& event); + virtual bool HandleEvent(const yaml_event_t& event); /** * Handle a STREAM-START event. @@ -142,28 +144,28 @@ struct Parser const Mark& startMark, const Mark& endMark); - virtual void HandleMappingStart(const std::string& anchor, + virtual bool HandleMappingStart(const std::string& anchor, const std::string& tag, bool implicit, MappingStyle style, const Mark& startMark, const Mark& endMark); - virtual void HandleMappingEnd(const Mark& startMark, + virtual bool HandleMappingEnd(const Mark& startMark, const Mark& endMark); - virtual void HandleSequenceStart(const std::string& anchor, + virtual bool HandleSequenceStart(const std::string& anchor, const std::string& tag, bool implicit, SequenceStyle style, const Mark& startMark, const Mark& endMark); - virtual void HandleSequenceEnd(const Mark& startMark, + virtual bool HandleSequenceEnd(const Mark& startMark, const Mark& endMark); - virtual void HandleAlias(const std::string& anchor, + virtual bool HandleAlias(const std::string& anchor, const Mark& startMark, const Mark& endMark); - virtual void HandleScalar(const std::string& anchor, + virtual bool HandleScalar(const std::string& anchor, const std::string& tag, const std::string& value, bool plainImplicit,