Frobby 0.9.5
DebugStrategy.cpp
Go to the documentation of this file.
1/* Frobby: Software for monomial ideal computations.
2 Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see http://www.gnu.org/licenses/.
16*/
17#include "stdinc.h"
18#include "DebugStrategy.h"
19
20#include "Slice.h"
21
23 _strategy(strategy),
24 _out(out) {
25 ASSERT(strategy != 0);
26 fputs("DEBUG: Starting slice computation.\n", _out);
27}
28
30}
31
32void DebugStrategy::run(const Ideal& ideal) {
33 fputs("DEBUG: Starting Slice Algorithm. Input ideal is:\n", _out);
34 ideal.print(_out);
35
36 _strategy->run(ideal);
37
38 fputs("DEBUG: Slice computation done.\n", _out);
39}
40
41bool DebugStrategy::processSlice(TaskEngine& tasks, auto_ptr<Slice> slice) {
42 fputs("DEBUG: Processing slice.\n", _out);
43 slice->print(stderr);
44 bool wasBaseCase = _strategy->processSlice(tasks, slice);
45 if (wasBaseCase)
46 fputs("DEBUG: Determined that slice is base case.\n", _out);
47 else
48 fputs("DEBUG: Determined that slice is not base case.\n", _out);
49 return wasBaseCase;
50}
51
53 if (use)
54 fputs("DEBUG: Turning on independence splits.", _out);
55 else
56 fputs("DEBUG: Turning off independence splits.", _out);
57 _strategy->setUseIndependence(use);
58}
59
61 if (use)
62 fputs("DEBUG: Turning on simplification.", _out);
63 else
64 fputs("DEBUG: Turning off simplification.", _out);
65 _strategy->setUseSimplification(use);
66}
67
69 return _strategy->getUseSimplification();
70}
71
72void DebugStrategy::freeSlice(auto_ptr<Slice> slice) {
73 fputs("DEBUG: Freeing slice.\n", _out);
74 _strategy->freeSlice(slice);
75}
virtual void run(const Ideal &ideal)
Run the Slice algorithm.
virtual ~DebugStrategy()
virtual void freeSlice(auto_ptr< Slice > slice)
It is allowed to delete returned slices directly, but it is better to use freeSlice.
bool processSlice(TaskEngine &tasks, auto_ptr< Slice > slice)
Process the parameter slice.
virtual void setUseIndependence(bool use)
This method should only be called before calling run().
virtual bool getUseSimplification() const
DebugStrategy(SliceStrategy *strategy, FILE *out)
Debug information is written to out, and every call is delegated to strategy.
virtual void setUseSimplification(bool use)
This method should only be called before calling run().
Represents a monomial ideal with int exponents.
Definition: Ideal.h:27
void print(FILE *file) const
Definition: Ideal.cpp:440
This class describes the interface of a strategy object for the Slice Algorithm.
Definition: SliceStrategy.h:33
TaskEngine handles a list of tasks that are to be carried out.
Definition: TaskEngine.h:40
#define ASSERT(X)
Definition: stdinc.h:86