PM123 Playable object handling - Classes

Class Tree

class tree 

class APlayable

This abstract base class is used as least common denominator of all objects that can be played with PM123 in any way.

The concept behind all of these objects is that they provide different kinds of information (see InfoFlags) and all of these information is to be requested before it is used. Failing to do so will cause undefined results like initial structures or outdated content, but it will not cause undefined behavior like an application crash.

Services

Properties

class Playable

A Playable object is the 1:1 representation of a URL in PM123. At most one Playable instance may exist for each URL. This is ensured by a private constructor and an instance repository. Use GetByUrl to access or create instances of Playable.

If a playable object is enumerable (e.g. a playlist) it has an additional extension object called PlaylistData. You cannot access this data directly. It is only used internally to keep the memory footprint of non-playlist objects small.

Services

Properties

class PlayableSlice

A PlayableSlice is a reference to an APlayable object which only addresses a slice of the referenced object. It overrides the ITEM_INFO containing an optional alias name optional start and a stop locations and the aggregate properties that depend on this values.

The locations are originally stored as PM123 location strings. This causes a delayed verification of their values and allows to set them while the referenced content is not yet available.

PlayableSlice objects may be nested. In this case the outer PlayableSlice represents the intersection of the two slices.

Services

Properties

class PlayableRef

This is a refinement of PlayableSlice that allows to override attribute and meta information too.

Services

class PlayableInstance

A PlayableInstance is playlist item, no more, no less. It is mainly the same than PlayableRef, but it keep track of the location in the playlist. A PlayableInstance belongs to exactly one Playable of playlist type or it is orphaned, i.e. removed from the playlist but still alive because of strong references. This causes defined behavior when removing a currently playing object from a playlist. Orphaned items never can be reattached to a playlist.

Services

Properties

class Location

A Location is a pointer to a particular position within any playable object. It may point to a time offset within a song as well as to a deep location inside a nested playlist structure and keep track of the navigation path.

Services

Properties

class SongIterator

A SongIterator is a refinement of a Location that provides additional Methods to keep track of the flattened playlist offsets.

Services

class CallstackEntry

This is only used by SongIterator instances to keep track of the current call stack.

Services

Properties