summaryrefslogtreecommitdiff
path: root/SA_POP/PlanStrategy.h
diff options
context:
space:
mode:
Diffstat (limited to 'SA_POP/PlanStrategy.h')
-rw-r--r--SA_POP/PlanStrategy.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/SA_POP/PlanStrategy.h b/SA_POP/PlanStrategy.h
new file mode 100644
index 00000000000..1a966207f5f
--- /dev/null
+++ b/SA_POP/PlanStrategy.h
@@ -0,0 +1,110 @@
+// -*- C++ -*-
+// $Id$
+
+//=============================================================================
+/**
+ * @file PlanStrategy.h
+ *
+ * This file contains the PlanStrategy abstract base class definition for
+ * the high-level planning algorithm.
+ *
+ * @author John S. Kinnebrew <john.s.kinnebrew@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef SA_POP_PLAN_STRATEGY_H_
+#define SA_POP_PLAN_STRATEGY_H_
+
+#include "SA_POP_Types.h"
+#include "PlanCommands.h"
+
+namespace SA_POP {
+
+ // Forward declaration of Planner.
+ class Planner;
+
+ /**
+ * @class PlanStrategy
+ *
+ * @brief Abstract base class for the high-level planning/scheduling
+ * algorithm.
+ */
+ class PlanStrategy {
+ public:
+ /// Constructor.
+ /**
+ * @param planner Planner object to use.
+ */
+ PlanStrategy (SA_POP::Planner *planner)
+ : planner_ (planner) { };
+
+ /// Destructor.
+ virtual ~PlanStrategy (void) { };
+
+
+
+ // ************************************************************************
+ // Planning methods.
+ // ************************************************************************
+
+ /// Set goals.
+ /**
+ * @param goals Set of goals and associated utilities.
+ */
+ virtual void set_goals (GoalMap goals) = 0;
+
+ /// Get command ID to use for next command.
+ /**
+ * @return Command ID to use for next command.
+ */
+ virtual CommandID get_next_cmd_id (void) = 0;
+
+ /// Recursively satisfy all open conditions (including recursive
+ /// scheduling constraint satisfaction through call back).
+ /**
+ * @return True if all open conditions were satisfied, false otherwise.
+ */
+ virtual bool satisfy_open_conds (void) = 0;
+
+
+ // ************************************************************************
+ // Methods for obtaining prototypes of commands that work on this strategy.
+ // ************************************************************************
+
+ /// Get a PlanCommand prototype for adding open conditions,
+ /// which works on this strategy.
+ /**
+ * @return An AddOpenCondsCmd prototype for this strategy.
+ */
+ virtual AddOpenCondsCmd *get_AddOpenCondsCmd (void) = 0;
+
+ /// Get a PlanCommand prototype for removing open conditions,
+ /// which works on this strategy.
+ /**
+ * @return A RemoveOpenCondsCmd prototype for this strategy.
+ */
+ virtual RemoveOpenCondsCmd *get_RemoveOpenCondsCmd (void) = 0;
+
+ /// Get an command prototype for adding causal link threats, which works on
+ /// this strategy.
+ /**
+ * @return An AddOpenThreatsCmd prototype for this strategy.
+ */
+ virtual AddOpenThreatsCmd *get_AddOpenThreatsCmd (void) = 0;
+
+ /// Get a PlanCommand prototype for removing causal link threats,
+ /// which works on this strategy.
+ /**
+ * @return A RemoveOpenThreatsCmd prototype for this strategy.
+ */
+ virtual RemoveOpenThreatsCmd *get_RemoveOpenThreatsCmd (void) = 0;
+
+ protected:
+ /// Pointer to Planner object.
+ SA_POP::Planner *planner_;
+
+ };
+
+}; /* SA_POP namespace */
+
+#endif /* SA_POP_PLAN_STRATEGY_H_ */