Implemented construction of SAS and PDDL Descriptions from Parser object.
This commit is contained in:
parent
c6bdfe3f38
commit
8bb25e9b90
@ -21,6 +21,7 @@ namespace pddl
|
|||||||
class Description
|
class Description
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static Description fromParser(utils::Parser &&parser);
|
||||||
static Description fromStream(std::istream &istream);
|
static Description fromStream(std::istream &istream);
|
||||||
static Description fromFile(const std::string &path);
|
static Description fromFile(const std::string &path);
|
||||||
static Description fromFiles(const std::vector<std::string> &paths);
|
static Description fromFiles(const std::vector<std::string> &paths);
|
||||||
|
@ -29,6 +29,7 @@ namespace sas
|
|||||||
class Description
|
class Description
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static Description fromParser(utils::Parser &&parser);
|
||||||
static Description fromStream(std::istream &istream);
|
static Description fromStream(std::istream &istream);
|
||||||
static Description fromFile(const boost::filesystem::path &path);
|
static Description fromFile(const boost::filesystem::path &path);
|
||||||
|
|
||||||
|
@ -41,6 +41,13 @@ class Parser
|
|||||||
explicit Parser();
|
explicit Parser();
|
||||||
explicit Parser(std::string streamName, std::istream &istream);
|
explicit Parser(std::string streamName, std::istream &istream);
|
||||||
|
|
||||||
|
// Forbid copy construction/assignment
|
||||||
|
Parser(const Parser &other) = delete;
|
||||||
|
Parser &operator=(const Parser &other) = delete;
|
||||||
|
|
||||||
|
Parser(Parser &&other);
|
||||||
|
Parser &operator=(Parser &&other);
|
||||||
|
|
||||||
void readStream(std::string streamName, std::istream &istream);
|
void readStream(std::string streamName, std::istream &istream);
|
||||||
void readFile(const boost::filesystem::path &path);
|
void readFile(const boost::filesystem::path &path);
|
||||||
|
|
||||||
|
@ -31,6 +31,20 @@ Description::Description()
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Description Description::fromParser(utils::Parser &&parser)
|
||||||
|
{
|
||||||
|
Description description;
|
||||||
|
|
||||||
|
description.m_parser = std::move(parser);
|
||||||
|
|
||||||
|
description.parseContent();
|
||||||
|
description.checkConsistency();
|
||||||
|
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Description Description::fromStream(std::istream &istream)
|
Description Description::fromStream(std::istream &istream)
|
||||||
{
|
{
|
||||||
Description description;
|
Description description;
|
||||||
|
@ -28,6 +28,16 @@ Description::Description()
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Description Description::fromParser(utils::Parser &&parser)
|
||||||
|
{
|
||||||
|
Description description;
|
||||||
|
description.parseContent(parser);
|
||||||
|
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Description Description::fromStream(std::istream &istream)
|
Description Description::fromStream(std::istream &istream)
|
||||||
{
|
{
|
||||||
utils::Parser parser;
|
utils::Parser parser;
|
||||||
|
@ -41,6 +41,29 @@ Parser::Parser(std::string streamName, std::istream &istream)
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Parser::Parser(Parser &&other)
|
||||||
|
: m_stream{std::move(other.m_stream)},
|
||||||
|
m_streamDelimiters{std::move(other.m_streamDelimiters)},
|
||||||
|
m_isCaseSensitive{other.m_isCaseSensitive}
|
||||||
|
{
|
||||||
|
other.m_isCaseSensitive = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Parser &Parser::operator=(Parser &&other)
|
||||||
|
{
|
||||||
|
m_stream = std::move(other.m_stream);
|
||||||
|
m_streamDelimiters = std::move(other.m_streamDelimiters);
|
||||||
|
m_isCaseSensitive = other.m_isCaseSensitive;
|
||||||
|
|
||||||
|
other.m_isCaseSensitive = true;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void Parser::readStream(std::string streamName, std::istream &istream)
|
void Parser::readStream(std::string streamName, std::istream &istream)
|
||||||
{
|
{
|
||||||
// Store position of new section
|
// Store position of new section
|
||||||
|
Reference in New Issue
Block a user