package uk.co.caprica.vlcj.player.list.events; /** * Enumeration of media list player event bit-masks. */ public enum MediaListPlayerEventType { /** * */ NONE (0x0000000000000000L), /** * */ NEXT_ITEM_SET (0x0000000000000001L), /** * */ ALL (0xffffffffffffffffL); /** * Bit-mask. */ private long value; /** * Create an enumerated value. * * @param value bit-mask */ private MediaListPlayerEventType(long value) { this.value = value; } /** * Get the bit-mask. * * @return value */ public final long value() { return value; } /** * Get a bit-mask for one or more event types. * * @param types one or more event types * @return bit-mask */ public static long events(MediaListPlayerEventType... types) { long eventMask = 0; for(MediaListPlayerEventType type : types) { eventMask |= type.value(); } return eventMask; } /** * Get an inverse bit-mask for one or more event types. * * @param types one or more event types * @return bit-mask */ public static long notEvents(MediaListPlayerEventType... types) { long eventMask = ALL.value; for(MediaListPlayerEventType type : types) { eventMask &= type.value() ^ -1; } return eventMask; } /** * Test whether or not a media player event type is set in a bit-mask. * * @param value bit-mask * @param type event type to test for * @return <code>true</code> if the type value is set in the bit-mask, otherwise <code>false</code> */ public static boolean set(long value, MediaListPlayerEventType type) { return (value & type.value()) != 0; } /** * Test whether or not a media player event type is set in a bit-mask. * * @param value bit-mask * @param type event type to test for * @return <code>false</code> if the type value is set in the bit-mask, otherwise <code>true</code> */ public static boolean notSet(long value, MediaListPlayerEventType type) { return (value & type.value()) == 0; } }