SliceParams.cpp
Go to the documentation of this file.
/* Frobby: Software for monomial ideal computations.
Copyright (C) 2009 University of Aarhus
Contact Bjarke Hammersholt Roune for license information (www.broune.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/
#include "stdinc.h"
#include "SliceParams.h"
#include "SplitStrategy.h"
#include "error.h"
#include "CliParams.h"
SliceParams::SliceParams():
_split("median"),
_useIndependence(true),
_useBoundElimination(true),
_useBoundSimplification(true) {
}
SliceParams::SliceParams(const CliParams& cli):
_split("median"),
_useIndependence(true),
_useBoundElimination(true),
_useBoundSimplification(true) {
extractCliValues(*this, cli);
}
namespace {
const char* SplitParamName = "split";
const char* UseIndependenceName = "independence";
const char* UseBoundElimination = "bound";
const char* UseBoundSimplification = "boundSimplify";
}
void addSliceParams(CliParams& params) {
}
void extractCliValues(SliceParams& slice, const CliParams& cli) {
extractCliValues(static_cast<SliceLikeParams&>(slice), cli);
slice.setSplit(getString(cli, SplitParamName));
if (cli.hasParam(UseIndependenceName))
slice.useIndependenceSplits(getBool(cli, UseIndependenceName));
if (cli.hasParam(UseBoundElimination))
slice.useBoundElimination(getBool(cli, UseBoundElimination));
if (cli.hasParam(UseBoundSimplification))
slice.useBoundElimination(getBool(cli, UseBoundSimplification));
}
void validateSplit(const SliceParams& params,
bool allowLabel,
bool allowDegree) {
unique_ptr<SplitStrategy>
split(SplitStrategy::createStrategy(params.getSplit()));
ASSERT(split.get() != 0)
if (!allowLabel && split->isLabelSplit())
reportError("Label split strategy is not appropriate "
"in this context.");
// TODO: implement degree when there is no grading too, so that it
// is always appropriate.
if (!allowDegree && params.getSplit() == "degree") {
reportError("The split strategy degree is not appropriate "
"in this context.");
}
// TODO: remove the deprecated frob.
if (!allowDegree && params.getSplit() == "frob") {
reportError("The split strategy frob is not appropriate "
"in this context.");
}
}
getString
const string & getString(const CliParams &params, const string &name)
Definition CliParams.cpp:130
getBool
bool getBool(const CliParams &params, const string &name)
Definition CliParams.cpp:124
CliParams.h
validateSplit
void validateSplit(const SliceParams &params, bool allowLabel, bool allowDegree)
Definition SliceParams.cpp:61
addSliceParams
void addSliceParams(CliParams &params)
Definition SliceParams.cpp:47
extractCliValues
void extractCliValues(SliceParams &slice, const CliParams &cli)
Definition SliceParams.cpp:50
SliceParams.h
extractCliValues
void extractCliValues(SliceParams &slice, const CliParams &cli)
Definition SliceParams.cpp:50
SplitStrategy.h
CliParams
Definition CliParams.h:28
CliParams::hasParam
bool hasParam(const string &name) const
Definition CliParams.cpp:105
SliceLikeParams
Definition SliceLikeParams.h:25
SliceParams
Definition SliceParams.h:25
SliceParams::useIndependenceSplits
void useIndependenceSplits(bool value)
Definition SliceParams.h:34
SliceParams::getSplit
const string & getSplit() const
Definition SliceParams.h:30
SliceParams::setSplit
void setSplit(const string &name)
Definition SliceParams.h:31
SliceParams::_useIndependence
bool _useIndependence
Definition SliceParams.h:49
SliceParams::useBoundElimination
void useBoundElimination(bool value)
Definition SliceParams.h:39
SliceParams::_split
string _split
Definition SliceParams.h:48
SliceParams::SliceParams
SliceParams()
Definition SliceParams.cpp:25
SliceParams::_useBoundElimination
bool _useBoundElimination
Definition SliceParams.h:50
SliceParams::_useBoundSimplification
bool _useBoundSimplification
Definition SliceParams.h:51
SplitStrategy::createStrategy
static unique_ptr< SplitStrategy > createStrategy(const string &prefix)
Returns the strategy whose name has the given prefix.
Definition SplitStrategy.cpp:497
reportError
void reportError(const string &errorMsg)
Definition error.cpp:23
error.h
stdinc.h
This header file includes common definitions and is included as the first line of code in every imple...
ASSERT
#define ASSERT(X)
Definition stdinc.h:86