Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ABSTRACTSTATEFACTORY_H_
00009 #define ABSTRACTSTATEFACTORY_H_
00010
00011 #include "tfd_modules/module_api/pddlModuleTypes.h"
00012 #include "tfd_modules/opl/AbstractState.h"
00013
00014 namespace opl
00015 {
00016
00017 namespace interface
00018 {
00019
00020 class AbstractStateFactory
00021 {
00022 public:
00023 opl::interface::AbstractState* createState(
00024 const ObjectTypeMap& objects,
00025 const PredicateMapping& predicateMapping,
00026 const FunctionMapping& functionMapping,
00027 const modules::PredicateList& predicateConstants,
00028 const modules::NumericalFluentList& numericConstants);
00029
00030 protected:
00031 virtual AbstractState* instantiateState(const ObjectTypeMap& objects) = 0;
00033 void createFluentMapping(AbstractState* state, const std::pair<const std::string, ::VarVal>& mapping);
00035 void createFluentMapping(AbstractState* state, const std::pair<const std::string, int>& mapping);
00037 void createFluentMapping(AbstractState* state, modules::Predicate fluent);
00039 void createFluentMapping(AbstractState* state, const modules::NumericalFluent& fluent);
00040 };
00041
00042 }
00043
00044 }
00045
00046 #endif