inline PresetChooser::iterator PresetChooser::weightedRandom(bool hardCut) const { // TODO make a sophisticated function object interface to determine why a certain rating // category is chosen, or weighted distribution thereover. const PresetRatingType ratingType = hardCut || (!_softCutRatingsEnabled) ? HARD_CUT_RATING_TYPE : SOFT_CUT_RATING_TYPE; const std::size_t ratingsTypeIndex = static_cast<std::size_t>(ratingType); const std::vector<int> & weights = _presetLoader->getPresetRatings()[ratingsTypeIndex]; const std::size_t index = RandomNumberGenerators::weightedRandom (weights, _presetLoader->getPresetRatingsSums()[ratingsTypeIndex]); return begin(index); }
inline PresetChooser::iterator PresetChooser::weightedRandom() const { std::size_t index = RandomNumberGenerators::weightedRandom (m_presetLoader->getPresetRatings(), m_presetLoader->getPresetRatingsSum()); return begin(index); }
inline std::auto_ptr<Preset> PresetChooser::directoryIndex(std::size_t index, PresetInputs & presetInputs, PresetOutputs & presetOutputs) const { return m_presetLoader->loadPreset(index, presetInputs, presetOutputs); }
inline bool PresetChooser::empty() const { return m_presetLoader->getNumPresets() == 0; }
inline PresetIterator PresetChooser::end() const { PresetIterator pos(m_presetLoader->getNumPresets()); pos.setChooser(*this); return pos; }
inline std::size_t PresetChooser::getNumPresets() const { return m_presetLoader->getNumPresets(); }
inline std::unique_ptr<Preset> PresetChooser::directoryIndex(std::size_t index) const { return _presetLoader->loadPreset(index); }
inline bool PresetChooser::empty() const { return _presetLoader->size() == 0; }
inline PresetIterator PresetChooser::end() const { PresetIterator pos(_presetLoader->size()); pos.setChooser(*this); return pos; }
inline std::size_t PresetChooser::size() const { return _presetLoader->size(); }