## RBRandomPlayOrder RBRandomPlayOrder — base class for weighted random play orders |

## Synopsis

    struct              RBRandomPlayOrder;
    struct              RBRandomPlayOrderClass;

## Object Hierarchy

      GObject
       +----RBPlayOrder
             +----RBRandomPlayOrder

## Description

Subclasses only need to override `get_entry_weight()` to return the right weight for a given entry.

This class also delays committing any changes until the user moves to the next or previous song. So if the user changes the entry-view to contain different songs, but changes it back before the current song finishes, they will not see any changes to their history of played songs.

## Details

### struct RBRandomPlayOrder

    struct RBRandomPlayOrder;

### struct RBRandomPlayOrderClass

    struct RBRandomPlayOrderClass {
    	RBPlayOrderClass parent_class;

    	/**
    	 * get_entry_weight:
    	 * @rorder: the play order
    	 * @db: the #RhythmDB
    	 * @entry: the #RhythmDBEntry to weight
    	 *
    	 * This method should return a weight for the given @entry.
    	 *
    	 * Return value: weighting for @entry
    	 */
    	double (*get_entry_weight) (RBRandomPlayOrder *rorder, RhythmDB *db, RhythmDBEntry *entry);
    };