#pragma once
#include "Layer3Process.h"
#include "../../../Layer2Actions/Interface/Actions/Expand.h"

class BaseLocation;

class BuildExpansionsProcess : public Layer3Process
{
public:
  BuildExpansionsProcess(const Process* parent)
    : Layer3Process(parent, Scheduler::SCHEDULING_MEDIUM_PRIORITY, 10, 1)
    , m_expand(*this)
  {
  }

  virtual void run();

protected:
  virtual void _output(std::ostream& out) const
  {
    out << "Build expansions";
  }

  BaseLocation* getNextExpandLocation() const;

  ProcessContainer<Expand> m_expand;
};
