17#ifndef PIVOT_EULER_STRATEGY_GUARD
18#define PIVOT_EULER_STRATEGY_GUARD
38 virtual void getName(ostream& out)
const = 0;
59 (unique_ptr<PivotStrategy> stdStrat, unique_ptr<PivotStrategy> genStrat);
63(unique_ptr<PivotStrategy> strat, FILE* out);
unique_ptr< PivotStrategy > newHybridPivotStrategy(unique_ptr< PivotStrategy > stdStrat, unique_ptr< PivotStrategy > genStrat)
unique_ptr< PivotStrategy > newDefaultPivotStrategy()
unique_ptr< PivotStrategy > newDebugPivotStrategy(unique_ptr< PivotStrategy > strat, FILE *out)
unique_ptr< PivotStrategy > newStdPivotStrategy(const string &name)
unique_ptr< PivotStrategy > newGenPivotStrategy(const string &name)
unique_ptr< PivotStrategy > newStatisticsPivotStrategy(unique_ptr< PivotStrategy > strat, FILE *out)
void operator=(const PivotStrategy &)
virtual EulerState * doPivot(EulerState &state, const size_t *divCounts)=0
Split state.
virtual bool shouldTranspose(const EulerState &state) const =0
Returns true if transposing state is adviced.
virtual void computationCompleted(const PivotEulerAlg &alg)=0
Call this function once when computation is complete.
PivotStrategy(const PivotStrategy &)
virtual void getName(ostream &out) const =0
Prints the name of the strategy to out.