1 #ifndef _PROBLEM_PBAQLOEHZX 2 #define _PROBLEM_PBAQLOEHZX 3 4 #include "memory_backtrack.hpp" 5 #include "constraint_store.hpp" 6 #include "partition_stack.hpp" 7 #include "queue/tracer.hpp" 8 #include "queue/rbase_generating_queue.hpp" 9 10 struct Problem 11 { 12 MemoryBacktracker full_search_memory_backtracker; 13 MemoryBacktracker rbase_generation_memory_backtracker; 14 TracerGenerator tracer_generator; 15 ConstraintStore con_store; 16 ConstraintQueue con_queue; 17 PartitionStack p_stack; ProblemProblem18 Problem(int n) : 19 tracer_generator(&full_search_memory_backtracker), 20 con_store(this), 21 con_queue(&tracer_generator), 22 p_stack(n, &con_queue, &full_search_memory_backtracker) 23 { 24 if(n < 2) 25 { 26 std::cerr << "YAPB++ requires problems on at least 2 points. Sorry" << std::endl; 27 std::cerr << "Super fatal error!" << std::endl; 28 abort(); 29 } 30 } 31 addConstraintProblem32 void addConstraint(AbstractConstraint* ac) 33 { con_store.addConstraint(ac); } 34 35 #if 0 36 void init(bool rbase_buildin) 37 { 38 con_store.initConstraints(); 39 // We do not care about the initalization, we do not want it filling 40 // up our trace (at least for groups, let's cover co-sets later...) 41 //tracer_generator.clearTrace(); 42 } 43 #endif 44 }; 45 46 #include "constraint_store.ipp" 47 48 #endif 49