#ifndef SAMPLER_FACTORY_H_
#define SAMPLER_FACTORY_H_

#include <vector>
#include <set>

class Sampler;
class StochasticNode;
class Graph;

/**
 * @short Factory object for samplers
 */
class SamplerFactory
{
 public:
  virtual ~SamplerFactory() {};
  /**
   * Finds nodes in the set of stochastic nodes that can be sampled,
   * removes them from the set and adds one or more samplers to the
   * vector of samplers.
   */
  virtual void makeSampler(std::set<StochasticNode*> &nodes, 
			   Graph const &graph,
			   std::vector<Sampler*> &samplers) const = 0;
};

#endif /* SAMPLER_FACTORY_H_ */


syntax highlighted by Code2HTML, v. 0.9.1