28 #ifdef GUM_CONSTRAINT_CLASS_NAME 31 INLINE
void GUM_CONSTRAINT_CLASS_NAME::setGraph(
const UndiGraph& graph) {
32 constraints::setGraph(graph);
37 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkEdgeAddition(NodeId x,
39 return constraints::checkEdgeAddition(x, y) && checkEdgeAdditionAlone(x, y);
43 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkEdgeDeletion(NodeId x,
45 return constraints::checkEdgeDeletion(x, y) && checkEdgeDeletionAlone(x, y);
49 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const EdgeAddition& change) {
50 constraints::modifyGraph(change);
51 modifyGraphAlone(change);
55 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const EdgeDeletion& change) {
56 constraints::modifyGraph(change);
57 modifyGraphAlone(change);
61 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const GraphChange& change) {
62 constraints::modifyGraph(change);
63 modifyGraphAlone(change);
67 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::isAlwaysInvalid(
const GraphChange&)
const {
68 return constraints::isAlwaysInvalid(change) || isAlwaysInvalidAlone(change);
73 GUM_CONSTRAINT_CLASS_NAME::checkModification(
const EdgeAddition& change)
const {
74 return checkEdgeAddition(change.node1(), change.node2());
79 GUM_CONSTRAINT_CLASS_NAME::checkModification(
const EdgeDeletion& change)
const {
80 return checkEdgeDeletion(change.node1(), change.node2());
85 GUM_CONSTRAINT_CLASS_NAME::checkModification(
const GraphChange& change)
const {
86 switch (change.type()) {
87 case GraphChangeType::EDGE_ADDITION:
88 return checkEdgeAddition(change.node1(), change.node2());
90 case GraphChangeType::EDGE_DELETION:
91 return checkEdgeDeletion(change.node1(), change.node2());
94 GUM_ERROR(OperationNotAllowed,
95 "arc modifications are not supported by the constraint");