};
/// Cycle Parameter management class
class CycleParamEdit : public CycleParam {
public:
CycleParamEdit();
CycleParamEdit(const CycleParam& param);
void clear();
BString getString(); ///< Gets the Cycle Parameters in a string format for writing to a file or display
BError setString(BString str); ///< Sets the Cycle Parameters from a string. For reading from a file
BError readFromFile(BString fileName); ///< Reads the Cycle Parameters from a file
BError writeToFile(BString fileName); ///< Writes the Cycle Parameters to a file
BError setStates(BList<CycleParamState> cycleStates); ///< Sets the Cycle Parameter states given the state information list.
BError getStates(BList<CycleParamState>& cycleStates); ///< Returns the state information list describing the Cycle Parameter states. These may not be present.
static void getDefaultState(CycleParamState& state); ///< Get the default settings for a state.
static void getdefaultPickupPositions(BArray<Int32>& pos); ///< Get the default pickup positions.
private:
double value(int numSamples, int harmonic, double phase, int sample);
int bunch(int numSamples, int harmonic, double phase, int sample);