22 std::set<size_t> values_;
29 :
Constraint(dkey.first), cardinality_(dkey.second) {
30 for (
size_t v = 0; v < cardinality_; v++) values_.insert(v);
36 :
Constraint(dkey.first), cardinality_(dkey.second) {
47 void insert(
size_t value) { values_.insert(value); }
50 void erase(
size_t value) { values_.erase(value); }
52 size_t nrValues()
const {
return values_.size(); }
54 bool isSingleton()
const {
return nrValues() == 1; }
56 size_t firstValue()
const {
return *values_.begin(); }
60 DefaultKeyFormatter)
const override;
64 if (!dynamic_cast<const Domain*>(&other))
67 const Domain& f(static_cast<const Domain&>(other));
68 return (cardinality_ == f.cardinality_) && (values_ == f.values_);
74 std::string base1Str()
const;
77 bool contains(
size_t value)
const {
return values_.count(value) > 0; }
95 bool ensureArcConsistency(
Key j, Domains* domains)
const override;
104 std::optional<Domain> checkAllDiff(
const KeyVector keys,
105 const Domains& domains)
const;
108 Constraint::shared_ptr partiallyApply(
const DiscreteValues& values)
const override;
111 Constraint::shared_ptr partiallyApply(
const Domains& domains)
const override;
Definition: DecisionTreeFactor.h:44
Definition: Constraint.h:35
Point2 operator*(double s, const Point2 &p)
multiply with scalar
Definition: Point2.h:52
Key key() const
The one key.
Definition: Domain.h:41
bool equals(const DiscreteFactor &other, double tol) const override
equals
Definition: Domain.h:63
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
Definition: DiscreteValues.h:34
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
Definition: chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
specialized key for discrete variables
Definition: DiscreteFactor.h:38
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
std::shared_ptr< Domain > shared_ptr
allowed values
Definition: Domain.h:25
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
void insert(size_t value)
Insert a value, non const :-(.
Definition: Domain.h:47
void erase(size_t value)
Erase a value, non const :-(.
Definition: Domain.h:50