#include <sampler/GibbsFactory.h>
#include <sampler/GibbsSampler.h>
#include <graph/StochasticNode.h>
#include <sampler/Sampler.h>

using std::vector;
using std::set;

void GibbsFactory::makeSampler(set<StochasticNode*> &nodes, 
                               Graph const &graph,
                               vector<Sampler*> &samplers) const
{
  for (set<StochasticNode*>::iterator p(nodes.begin()); p != nodes.end(); )
    {
      if (canSample(*p, graph)) {
	samplers.push_back(makeGibbsSampler(*p, graph));
	nodes.erase(p++); //Avoid invalidating the iterator
      }
      else {
	++p;
      }
    }
}


syntax highlighted by Code2HTML, v. 0.9.1