/*****************************************************************//**
 * \file   RMPNodeObserver.h
 * \brief  The base class of an RMP observer. This is an implemntation of Design pattern OBSERVER.
 *
 * \author talmefta
 * \date   October 2022
 *********************************************************************/
#ifndef RMPNODEOBSERVER_H
#define RMPNODEOBSERVER_H


#include "Header.h"

 /**
  * \class  RMPNodeObserver
  * The class obesrving RMP to be aware of the changes of the RMP to have a special behavior if necessary.
  * Example: The node has a branching constraint, if the RMP has new column that can
  *  be added to this branching constraint in the node, then RMP notifies the node to add this column.
  */
class RMPNodeObserver {

public:
	virtual ~RMPNodeObserver() {};
	//virtual void update_arc_branching_constraints(const vector<pair<int, pair< int, int>>>& new_column_indexes_and_involved_items) = 0;
	virtual void update_clique_inequalities(const vector<int>& new_column_indexes) = 0;
	virtual void update_ineffective_cuts() = 0;
};
#endif // !RMPNODEOBSERVER_H
