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, NodeId y)
const {
38 return constraints::checkEdgeAddition(x, y) && checkEdgeAdditionAlone(x, y);
42 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkEdgeDeletion(NodeId x, NodeId y)
const {
43 return constraints::checkEdgeDeletion(x, y) && checkEdgeDeletionAlone(x, y);
47 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const EdgeAddition& change) {
48 constraints::modifyGraph(change);
49 modifyGraphAlone(change);
53 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const EdgeDeletion& change) {
54 constraints::modifyGraph(change);
55 modifyGraphAlone(change);
59 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const GraphChange& change) {
60 constraints::modifyGraph(change);
61 modifyGraphAlone(change);
65 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::isAlwaysInvalid(
const GraphChange&)
const {
66 return constraints::isAlwaysInvalid(change) || isAlwaysInvalidAlone(change);
70 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const EdgeAddition& change)
const {
71 return checkEdgeAddition(change.node1(), change.node2());
75 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const EdgeDeletion& change)
const {
76 return checkEdgeDeletion(change.node1(), change.node2());
80 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const GraphChange& change)
const {
81 switch (change.type()) {
82 case GraphChangeType::EDGE_ADDITION:
83 return checkEdgeAddition(change.node1(), change.node2());
85 case GraphChangeType::EDGE_DELETION:
86 return checkEdgeDeletion(change.node1(), change.node2());
89 GUM_ERROR(OperationNotAllowed,
"arc modifications are not supported by the constraint")