/*                        AVAILABLE METHODS IN CFGC LIBRARY
*/

class cfgc
{
    public :

        //Constructor - Ilog
        cfgc(grammar g, 
             IloSolver s, 
             IloAnyVarArray variables, 
             bool incremental, string id);    

        //Constructor - Standalone
        cfgc(grammar g, 
             vector< set<string*> >* variablesPtr, 
             string id);

        //Non-incremental filtering
        bool filterFromScratch();

        //Incremental filtering - Ilog
        bool filterFromUpdate();    

        //Incremental filtering - Standalone
        bool filterFromUpdate(vector<pair<int, string*> > affected);

        //Create a restore point
        void setMarker();

        //Roll back to the most recent restore point
        void backtrack();
};