21 #include <boost/foreach.hpp>
37 void print(
const std::string& s =
"Assignment: ")
const {
38 std::cout << s <<
": ";
39 BOOST_FOREACH(
const typename Assignment::value_type& keyValue, *
this)
40 std::cout <<
"(" << keyValue.first <<
", " << keyValue.second <<
")";
41 std::cout << std::endl;
45 return (*
this == other);
64 const std::vector<std::pair<L, size_t> >& keys) {
65 std::vector<Assignment<L> > allPossValues;
68 BOOST_FOREACH(
const DiscreteKey& key, keys)
69 values[key.first] = 0;
71 allPossValues.push_back(values);
73 for (j = 0; j < keys.size(); j++) {
74 L idx = keys[j].first;
76 if (values[idx] < keys[j].second)
An assignment from labels to value index (size_t).
Definition: Assignment.h:35
Template to create a binary predicate.
Definition: Testable.h:102
std::pair< Key, size_t > DiscreteKey
Key type for discrete conditionals Includes name and cardinality.
Definition: DiscreteKey.h:33
std::vector< Assignment< L > > cartesianProduct(const std::vector< std::pair< L, size_t > > &keys)
Get Cartesian product consisting all possible configurations.
Definition: Assignment.h:63