message: merge behavior model  class changes
diff: #include <memory>
  #include <vector>
  -#include "bark/commons/base_type.hpp"
  +#include "bark/commons/commons.hpp"
  #include "bark/models/dynamic/dynamic_model.hpp"
  namespace bark {
  @@ -29,9 +29,18 @@ using dynamic::Trajectory;
  typedef unsigned int DiscreteAction;
  typedef double Continuous1DAction;
  +struct LonLatAction {
  + Continuous1DAction acc_lat;
  + Continuous1DAction acc_lon;
  +
  + inline bool operator==(const LonLatAction& other) const {
  + return acc_lat == other.acc_lat && acc_lon == other.acc_lon;
  + }
  +};
  using dynamic::Input;
  using models::dynamic::State;
  -typedef boost::variant<DiscreteAction, Continuous1DAction, Input> Action;
  +typedef boost::variant<DiscreteAction, Continuous1DAction, Input, LonLatAction> Action;
  +typedef std::size_t ActionHash;
  typedef std::pair<State, Action> StateActionPair;
  typedef std::vector<StateActionPair> StateActionHistory;
  @@ -39,6 +48,33 @@ typedef std::vector<StateActionPair> StateActionHistory;
  typedef std::vector<State> StateHistory;
  typedef std::vector<Action> ActionHistory;
  +struct action_tostring_visitor : boost::static_visitor<std::string>
  +{
  + std::string operator()(DiscreteAction const& val) const {
  + std::stringstream ss;
  + ss << "Discrete Action: " << val;
  + return ss.str();
  + }
  +
  + std::string operator()(Continuous1DAction const& val) const {
  + std::stringstream ss;
  + ss << "Continuous1DAction: " << val;
  + return ss.str();
  + }
  +
  + std::string operator()(Input const& val) const {
  + std::stringstream ss;
  + ss << "ActionInput: " << val;
  + return ss.str();
  + }
  +
  + std::string operator()(modules::models::behavior::LonLatAction const& val) const {
  + std::stringstream ss;
  + ss << "LonLatAction: acc_lon=" << val.acc_lat << ", acc_lat=" << val.acc_lat;
  + return ss.str();
  + }
  +};
  +
  enum BehaviorStatus : unsigned int {
  NOT_STARTED_YET = 0,
  VALID = 1,
  @@ -81,7 +117,7 @@ class BehaviorModel : public bark::commons::BaseType {
  const world::ObservedWorld& observed_world) = 0;
  - virtual std::shared_ptr<BehaviorModel> Clone() const {};
  +virtual std::shared_ptr<BehaviorModel> Clone() const = 0;
  Action GetLastAction() const { return last_action_; }
  void SetLastAction(const Action& action) { last_action_ = action; }
  