Go to the documentation of this file.00001 #ifndef PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66_PM
00002 #define PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66_PM
00003
00004 #if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
00005 #pragma once
00006 #endif
00007
00008
00009 #include "yaml-cpp-pm/dll.h"
00010 #include "yaml-cpp-pm/noncopyable.h"
00011 #include <ios>
00012 #include <memory>
00013
00014 namespace YAML_PM
00015 {
00016 struct Directives;
00017 struct Mark;
00018 struct Token;
00019 class EventHandler;
00020 class Node;
00021 class Scanner;
00022
00023 class YAML_CPP_API Parser: private noncopyable
00024 {
00025 public:
00026 Parser();
00027 Parser(std::istream& in);
00028 ~Parser();
00029
00030 operator bool() const;
00031
00032 void Load(std::istream& in);
00033 bool HandleNextDocument(EventHandler& eventHandler);
00034
00035 bool GetNextDocument(Node& document);
00036
00037 void PrintTokens(std::ostream& out);
00038
00039 private:
00040 void ParseDirectives();
00041 void HandleDirective(const Token& token);
00042 void HandleYamlDirective(const Token& token);
00043 void HandleTagDirective(const Token& token);
00044
00045 private:
00046 std::auto_ptr<Scanner> m_pScanner;
00047 std::auto_ptr<Directives> m_pDirectives;
00048 };
00049 }
00050
00051 #endif // PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66_PM