#ifndef STOCHASTIC_NODE_H_
#define STOCHASTIC_NODE_H_
#include <graph/Node.h>
#include <sarray/SArray.h>
#include <vector>
class Distribution;
class StochasticNode : public Node {
Distribution const * const _dist;
std::vector<SArray const *> _parameters;
/* Forbid copying of Stochastic Nodes */
StochasticNode(StochasticNode const &orig);
StochasticNode &operator=(StochasticNode const &rhs);
public:
StochasticNode(Distribution const *dist, Index const &dim = Index(1));
~StochasticNode();
bool isBounded() const;
SArray const *lowerBound();
SArray const *upperBound();
void setBounds(Node *lBound, Node *uBound);
Distribution const *distribution() const;
void setParameters(std::vector<Node*> const ¶meters);
std::vector<SArray const *> const ¶meters() const;
double logDensity() const;
void forwardSample();
bool isStochastic() const;
};
StochasticNode const *asStochastic(Node const *node);
#endif /* STOCHASTIC_NODE_H_ */
syntax highlighted by Code2HTML, v. 0.9.1