28 #ifdef GUM_CONSTRAINT_CLASS_NAME 31 INLINE
void GUM_CONSTRAINT_CLASS_NAME::setGraph(
const DiGraph& graph) {
32 constraints::setGraph(graph);
37 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkArcAddition(NodeId x, NodeId y)
const {
38 return constraints::checkArcAddition(x, y) && checkArcAdditionAlone(x, y);
42 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkArcDeletion(NodeId x, NodeId y)
const {
43 return constraints::checkArcDeletion(x, y) && checkArcDeletionAlone(x, y);
47 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkArcReversal(NodeId x, NodeId y)
const {
48 return constraints::checkArcReversal(x, y) && checkArcReversalAlone(x, y);
52 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const ArcAddition& change) {
53 constraints::modifyGraph(change);
54 modifyGraphAlone(change);
58 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const ArcDeletion& change) {
59 constraints::modifyGraph(change);
60 modifyGraphAlone(change);
64 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const ArcReversal& change) {
65 constraints::modifyGraph(change);
66 modifyGraphAlone(change);
70 INLINE
void GUM_CONSTRAINT_CLASS_NAME::modifyGraph(
const GraphChange& change) {
71 constraints::modifyGraph(change);
72 modifyGraphAlone(change);
76 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::isAlwaysInvalid(
const GraphChange& change)
const {
77 return constraints::isAlwaysInvalid(change) || isAlwaysInvalidAlone(change);
81 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const ArcAddition& change)
const {
82 return checkArcAddition(change.node1(), change.node2());
86 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const ArcDeletion& change)
const {
87 return checkArcDeletion(change.node1(), change.node2());
91 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const ArcReversal& change)
const {
92 return checkArcReversal(change.node1(), change.node2());
96 INLINE
bool GUM_CONSTRAINT_CLASS_NAME::checkModification(
const GraphChange& change)
const {
97 switch (change.type()) {
98 case GraphChangeType::ARC_ADDITION:
99 return checkArcAddition(change.node1(), change.node2());
101 case GraphChangeType::ARC_DELETION:
102 return checkArcDeletion(change.node1(), change.node2());
104 case GraphChangeType::ARC_REVERSAL:
105 return checkArcReversal(change.node1(), change.node2());
108 GUM_ERROR(OperationNotAllowed,
"edge modifications are not supported by the constraint")