#ifndef YAP_PACKAGES_CLPBN_HORUS_FACTOR_H_ #define YAP_PACKAGES_CLPBN_HORUS_FACTOR_H_ #include #include #include #include "GenericFactor.h" #include "Util.h" namespace Horus { class Factor : public GenericFactor { public: Factor() { } Factor (const Factor&); Factor (const VarIds&, const Ranges&, const Params&, unsigned = Util::maxUnsigned()); Factor (const Vars&, const Params&, unsigned = Util::maxUnsigned()); void sumOut (VarId); void sumOutAllExcept (VarId); void sumOutAllExcept (const VarIds&); void sumOutAllExceptIndex (size_t idx); void multiply (Factor&); std::string getLabel() const; void print() const; private: void sumOutFirstVariable(); void sumOutLastVariable(); void sumOutArgs (const std::vector& mask); void clone (const Factor& f); DISALLOW_ASSIGN (Factor); }; } // namespace Horus #endif // YAP_PACKAGES_CLPBN_HORUS_FACTOR_H_