mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Added default constructor to Parser, and cleaned it up a bit
This commit is contained in:
@@ -4,21 +4,24 @@
|
|||||||
#define PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
#define PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
||||||
|
|
||||||
|
|
||||||
|
#include "node.h"
|
||||||
|
#include "parserstate.h"
|
||||||
|
#include "noncopyable.h"
|
||||||
#include <ios>
|
#include <ios>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "node.h"
|
#include <memory>
|
||||||
#include "parserstate.h"
|
|
||||||
|
|
||||||
namespace YAML
|
namespace YAML
|
||||||
{
|
{
|
||||||
class Scanner;
|
class Scanner;
|
||||||
struct Token;
|
struct Token;
|
||||||
|
|
||||||
class Parser
|
class Parser: private noncopyable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Parser();
|
||||||
Parser(std::istream& in);
|
Parser(std::istream& in);
|
||||||
~Parser();
|
~Parser();
|
||||||
|
|
||||||
@@ -35,12 +38,7 @@ namespace YAML
|
|||||||
void HandleTagDirective(Token *pToken);
|
void HandleTagDirective(Token *pToken);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// can't copy this
|
std::auto_ptr<Scanner> m_pScanner;
|
||||||
Parser(const Parser&) {}
|
|
||||||
Parser& operator = (const Parser&) { return *this; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
Scanner *m_pScanner;
|
|
||||||
ParserState m_state;
|
ParserState m_state;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -8,25 +8,27 @@
|
|||||||
|
|
||||||
namespace YAML
|
namespace YAML
|
||||||
{
|
{
|
||||||
Parser::Parser(std::istream& in): m_pScanner(0)
|
Parser::Parser()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Parser::Parser(std::istream& in)
|
||||||
{
|
{
|
||||||
Load(in);
|
Load(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
Parser::~Parser()
|
Parser::~Parser()
|
||||||
{
|
{
|
||||||
delete m_pScanner;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Parser::operator bool() const
|
Parser::operator bool() const
|
||||||
{
|
{
|
||||||
return !m_pScanner->empty();
|
return m_pScanner.get() && !m_pScanner->empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::Load(std::istream& in)
|
void Parser::Load(std::istream& in)
|
||||||
{
|
{
|
||||||
delete m_pScanner;
|
m_pScanner.reset(new Scanner(in));
|
||||||
m_pScanner = new Scanner(in);
|
|
||||||
m_state.Reset();
|
m_state.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +52,7 @@ namespace YAML
|
|||||||
m_pScanner->pop();
|
m_pScanner->pop();
|
||||||
|
|
||||||
// now parse our root node
|
// now parse our root node
|
||||||
document.Parse(m_pScanner, m_state);
|
document.Parse(m_pScanner.get(), m_state);
|
||||||
|
|
||||||
// and finally eat any doc ends we see
|
// and finally eat any doc ends we see
|
||||||
while(!m_pScanner->empty() && m_pScanner->peek().type == Token::DOC_END)
|
while(!m_pScanner->empty() && m_pScanner->peek().type == Token::DOC_END)
|
||||||
|
Reference in New Issue
Block a user