#define VLC_VECTOR(type)
Vector struct body.
Definition: vlc_vector.h:65
vlc_playlist_item_t * randomizer_Prev(struct randomizer *r)
Go back to the previous item.
Definition: randomizer.c:404
size_t count
Definition: core.c:401
bool loop
Definition: randomizer.h:42
size_t size
Definition: randomizer.h:40
static void randomizer_RemoveAt(struct randomizer *r, size_t index)
Definition: randomizer.c:477
void vlc_rand_bytes(void *buf, size_t len)
Definition: rand.c:28
void randomizer_Destroy(struct randomizer *r)
Destroy a randomizer.
Definition: randomizer.c:275
bool randomizer_Count(struct randomizer *r)
Return the number of items in the randomizer.
Definition: randomizer.c:295
long nrand48(unsigned short subi[3])
vlc_playlist_item_t ** data
Definition: randomizer.h:40
static void randomizer_AutoReshuffle(struct randomizer *r)
Definition: randomizer.c:341
void randomizer_Init(struct randomizer *r)
Initialize an empty randomizer.
Definition: randomizer.c:260
#define vlc_vector_init(pv)
Initialize an empty vector.
Definition: vlc_vector.h:80
static void randomizer_RemoveOne(struct randomizer *r, const vlc_playlist_item_t *item)
Definition: randomizer.c:520
size_t next
Definition: randomizer.h:44
size_t history
Definition: randomizer.h:45
void randomizer_Select(struct randomizer *r, const vlc_playlist_item_t *item)
Force the selection of a specific item.
Definition: randomizer.c:469
#define vlc_vector_insert_all(pv, index, items, count)
Insert count items at the given index.
Definition: vlc_vector.h:411
bool randomizer_Add(struct randomizer *r, vlc_playlist_item_t *items[], size_t count)
Add items to the randomizer.
Definition: randomizer.c:424
static void randomizer_DetermineOne(struct randomizer *r)
Definition: randomizer.c:332
Playlist helper to manage random playback.
Definition: randomizer.h:39
void randomizer_Remove(struct randomizer *r, vlc_playlist_item_t *const items[], size_t count)
Remove items from the randomizer.
Definition: randomizer.c:528
bool randomizer_HasNext(struct randomizer *r)
Indicate whether there is a next item.
Definition: randomizer.c:372
void randomizer_Clear(struct randomizer *r)
Clear the randomizer.
Definition: randomizer.c:538
void randomizer_Reshuffle(struct randomizer *r)
Start a new random cycle.
Definition: randomizer.c:301
#define vlc_vector_clear(pv)
Clear a vector.
Definition: vlc_vector.h:101
#define NOT_SAME_BEFORE
Definition: randomizer.c:257
#define vlc_vector_index_of(pv, item, pidx)
Return the index of an item.
Definition: vlc_vector.h:615
#define vlc_vector_autoshrink(pv)
Resize the vector down automatically.
Definition: vlc_vector.h:293
struct randomizer::@113 items
void randomizer_SetLoop(struct randomizer *r, bool loop)
Enable or disable "loop" mode.
Definition: randomizer.c:281
#define vlc_vector_destroy(pv)
Destroy a vector.
Definition: vlc_vector.h:93
static ssize_t randomizer_IndexOf(struct randomizer *r, const vlc_playlist_item_t *item)
Definition: randomizer.c:287
static void randomizer_SelectIndex(struct randomizer *r, size_t index)
Definition: randomizer.c:436
size_t head
Definition: randomizer.h:43
vlc_playlist_item_t * randomizer_Next(struct randomizer *r)
Go back to the next item.
Definition: randomizer.c:413
vlc_playlist_item_t * randomizer_PeekPrev(struct randomizer *r)
Peek the previous item (without changing the current one).
Definition: randomizer.c:378
vlc_playlist_item_t * randomizer_PeekNext(struct randomizer *r)
Peek the next item (without changing the current one).
Definition: randomizer.c:386
static void swap_items(struct randomizer *r, int i, int j)
Definition: randomizer.c:310
static void randomizer_DetermineOne_(struct randomizer *r, size_t avoid_last_n)
Definition: randomizer.c:318
unsigned short xsubi[3]
Definition: randomizer.h:41
bool randomizer_HasPrev(struct randomizer *r)
Indicate whether there is a previous item.
Definition: randomizer.c:356