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);
}
Example #2
0
inline PresetChooser::iterator PresetChooser::weightedRandom() const {
    std::size_t index = RandomNumberGenerators::weightedRandom
                        (m_presetLoader->getPresetRatings(), m_presetLoader->getPresetRatingsSum());
    return begin(index);
}
Example #3
0
inline std::auto_ptr<Preset> PresetChooser::directoryIndex(std::size_t index, PresetInputs & presetInputs,
        PresetOutputs & presetOutputs) const {

    return m_presetLoader->loadPreset(index, presetInputs, presetOutputs);
}
Example #4
0
inline bool PresetChooser::empty() const {
    return m_presetLoader->getNumPresets() == 0;
}
Example #5
0
inline PresetIterator PresetChooser::end() const {
    PresetIterator pos(m_presetLoader->getNumPresets());
    pos.setChooser(*this);
    return pos;
}
Example #6
0
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();
}