## RBRandomPlayOrder

RBRandomPlayOrder — base class for weighted random play orders

## Synopsis

                        RBRandomPlayOrder;
                        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

### RBRandomPlayOrder

    typedef struct _RBRandomPlayOrder RBRandomPlayOrder;

### RBRandomPlayOrderClass

    typedef struct {
    	RBPlayOrderClass parent_class;

    	/**
    	 * This method should return a weight for the given @entry.
    	 *
    	 * The @db will be locked when this method is called.
    	 */
    	double (*get_entry_weight) (RBRandomPlayOrder *rorder, RhythmDB *db, RhythmDBEntry *entry);
    } RBRandomPlayOrderClass;