Removed Reference expressions.

This commit is contained in:
2016-06-13 01:38:56 +02:00
parent 1c8af793c2
commit 680206b40b
13 changed files with 134 additions and 150 deletions

View File

@@ -11,7 +11,6 @@
#include <plasp/pddl/expressions/Or.h>
#include <plasp/pddl/expressions/Predicate.h>
#include <plasp/pddl/expressions/PredicateDeclaration.h>
#include <plasp/pddl/expressions/Reference.h>
#include <plasp/utils/IO.h>
#include <plasp/utils/ParserException.h>

View File

@@ -13,9 +13,32 @@ namespace expressions
//
////////////////////////////////////////////////////////////////////////////////////////////////////
const Expression &Not::argument() const
Not::Not()
: m_argument{nullptr}
{
return *m_argument;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void Not::setArgument(const Expression *argument)
{
m_argumentStorage = nullptr;
m_argument = argument;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void Not::setArgument(ExpressionPointer &&argument)
{
m_argumentStorage = std::move(argument);
m_argument = m_argumentStorage.get();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
const Expression *Not::argument() const
{
return m_argument;
}
////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -6,7 +6,6 @@
#include <plasp/pddl/Identifier.h>
#include <plasp/pddl/Problem.h>
#include <plasp/pddl/expressions/Constant.h>
#include <plasp/pddl/expressions/Reference.h>
#include <plasp/pddl/expressions/Variable.h>
namespace plasp
@@ -69,8 +68,7 @@ PredicatePointer Predicate::parse(Context &context, ExpressionContext &expressio
if (context.parser.currentCharacter() == '?')
{
const auto *variable = Variable::parseAndFind(context, expressionContext);
auto variableReference = std::make_unique<Reference<Variable>>(variable);
predicate->m_arguments.emplace_back(std::move(variableReference));
predicate->m_arguments.emplace_back(variable);
}
// Parse constants
else
@@ -78,8 +76,7 @@ PredicatePointer Predicate::parse(Context &context, ExpressionContext &expressio
const auto *constant = (expressionContext.problem == nullptr)
? Constant::parseAndFind(context, expressionContext.domain)
: Constant::parseAndFind(context, *expressionContext.problem);
auto constantReference = std::make_unique<Reference<Constant>>(constant);
predicate->m_arguments.emplace_back(std::move(constantReference));
predicate->m_arguments.emplace_back(constant);
}
context.parser.skipWhiteSpace();
@@ -134,8 +131,7 @@ PredicatePointer Predicate::parse(Context &context, const Problem &problem)
// Parse objects and constants
const auto *constant = Constant::parseAndFind(context, problem);
auto constantReference = std::make_unique<Reference<Constant>>(constant);
predicate->m_arguments.emplace_back(std::move(constantReference));
predicate->m_arguments.emplace_back(constant);
}
// TODO: check that signature matches one of the declared ones
@@ -168,7 +164,7 @@ const std::string &Predicate::name() const
////////////////////////////////////////////////////////////////////////////////////////////////////
const Expressions &Predicate::arguments() const
const std::vector<const Expression *> &Predicate::arguments() const
{
return m_arguments;
}

View File

@@ -5,7 +5,6 @@
#include <plasp/pddl/ExpressionContext.h>
#include <plasp/pddl/Identifier.h>
#include <plasp/pddl/expressions/Constant.h>
#include <plasp/pddl/expressions/Reference.h>
#include <plasp/pddl/expressions/Variable.h>
namespace plasp

View File

@@ -3,7 +3,6 @@
#include <plasp/pddl/Context.h>
#include <plasp/pddl/ExpressionContext.h>
#include <plasp/pddl/expressions/PrimitiveType.h>
#include <plasp/pddl/expressions/Reference.h>
namespace plasp
{
@@ -18,11 +17,9 @@ namespace expressions
//
////////////////////////////////////////////////////////////////////////////////////////////////////
ExpressionPointer parseExistingPrimitiveType(Context &context, ExpressionContext &expressionContext)
const Expression *parseExistingPrimitiveType(Context &context, ExpressionContext &expressionContext)
{
auto *primitiveType = PrimitiveType::parseAndFind(context, expressionContext.domain);
return std::make_unique<Reference<PrimitiveType>>(primitiveType);
return PrimitiveType::parseAndFind(context, expressionContext.domain);
}
////////////////////////////////////////////////////////////////////////////////////////////////////