#ifndef DIST_TAB_H_ #define DIST_TAB_H_ #include #include class Distribution; /** * A DistTab is a table which can be used to look up distributions by * name. * @short Distribution table * @see Distribution */ class DistTab { std::map _table; public: /** * Constructor. A newly constructed DistTab will * automatically contain the standard JAGS distributions */ DistTab(); /** * Destructor. The memory associated with all the distributions * contained in the DistTab is freed. */ ~DistTab(); /** * Inserts a distribution into the table. * @return logical value indicating success. The insertion will * fail if a distribution with the same name is already in the * DistTab. * @param dist Pointer to the distribution to insert, which should * be dynamically allocated. The DistTab is responsible for freeing * the memory allocated to dist. */ bool insert(Distribution const *dist); /** * Removes a distribution by name and frees the associated * memory. * * With a combination of erase and insert calls, you can * replace the standard JAGS distribuutions. * * @return a logical value indicating success. The removal * will fail if there is no distribution with the given name * in the DistTab. */ bool erase(std::string const &name); /** * Finds a distribution by name * @return a pointer to the distribution or 0 if it was not found. */ Distribution const *find(std::string const &name) const; }; #endif /* DIST_TAB_H_ */