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