Added default constructor to Parser, and cleaned it up a bit

This commit is contained in:
jbeder
2009-10-19 22:40:46 +00:00
parent dd29c8181a
commit afc7c1088d
2 changed files with 15 additions and 15 deletions

View File

@@ -4,21 +4,24 @@
#define PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#include "node.h"
#include "parserstate.h"
#include "noncopyable.h"
#include <ios>
#include <string>
#include <vector>
#include <map>
#include "node.h"
#include "parserstate.h"
#include <memory>
namespace YAML
{
class Scanner;
struct Token;
class Parser
class Parser: private noncopyable
{
public:
Parser();
Parser(std::istream& in);
~Parser();
@@ -35,12 +38,7 @@ namespace YAML
void HandleTagDirective(Token *pToken);
private:
// can't copy this
Parser(const Parser&) {}
Parser& operator = (const Parser&) { return *this; }
private:
Scanner *m_pScanner;
std::auto_ptr<Scanner> m_pScanner;
ParserState m_state;
};
}

View File

@@ -8,25 +8,27 @@
namespace YAML
{
Parser::Parser(std::istream& in): m_pScanner(0)
Parser::Parser()
{
}
Parser::Parser(std::istream& in)
{
Load(in);
}
Parser::~Parser()
{
delete m_pScanner;
}
Parser::operator bool() const
{
return !m_pScanner->empty();
return m_pScanner.get() && !m_pScanner->empty();
}
void Parser::Load(std::istream& in)
{
delete m_pScanner;
m_pScanner = new Scanner(in);
m_pScanner.reset(new Scanner(in));
m_state.Reset();
}
@@ -50,7 +52,7 @@ namespace YAML
m_pScanner->pop();
// 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
while(!m_pScanner->empty() && m_pScanner->peek().type == Token::DOC_END)