Program Listing for File TemporalAction.h
↰ Return to documentation for file (/tmp/ws/src/ros2_planning_system/plansys2_pddl_parser/include/plansys2_pddl_parser/TemporalAction.h
)
#pragma once
#include "plansys2_msgs/msg/node.hpp"
#include "plansys2_msgs/msg/tree.hpp"
#include "plansys2_pddl_parser/Action.h"
#include "plansys2_pddl_parser/And.h"
#include "plansys2_pddl_parser/Expression.h"
namespace parser { namespace pddl {
class Instance;
class TemporalAction : public Action {
public:
Expression * durationExpr;
// pre_s and eff_s inherited from Action
And *pre_o, *pre_e, *eff_e;
TemporalAction( const std::string & s )
: Action( s ), durationExpr( 0 ), pre_o( 0 ), pre_e( 0 ), eff_e( 0 ) {}
~TemporalAction() {
if ( durationExpr ) delete durationExpr;
if ( pre_o ) delete pre_o;
if ( pre_e ) delete pre_e;
if ( eff_e ) delete eff_e;
}
void print( std::ostream & s ) const {
s << name << params << "\n";
s << "Duration: " << durationExpr->info() << "\n";
s << "Pre_s: " << pre;
s << "Eff_s: " << eff;
s << "Pre_o: " << pre_o;
s << "Pre_e: " << pre_e;
s << "Eff_e: " << eff_e;
}
double duration() {
if ( durationExpr ) return durationExpr->evaluate();
else return 0;
}
Expression * parseDuration( Stringreader & f, TokenStruct< std::string > & ts, Domain & d );
void printCondition( std::ostream & s, const TokenStruct< std::string > & ts, const Domain & d,
const std::string & t, And * a ) const;
void PDDLPrint( std::ostream & s, unsigned indent, const TokenStruct< std::string > & ts, const Domain & d ) const override;
plansys2_msgs::msg::Node::SharedPtr getTree( plansys2_msgs::msg::Tree & tree, const Domain & d, const std::vector<std::string> & replace = {} ) const override;
void parseCondition( Stringreader & f, TokenStruct< std::string > & ts, Domain & d, And * a );
void parse( Stringreader & f, TokenStruct< std::string > & ts, Domain & d );
GroundVec preconsStart();
GroundVec preconsOverall();
GroundVec preconsEnd();
CondVec endEffects();
GroundVec addEndEffects();
GroundVec deleteEndEffects();
};
} } // namespaces