diff --git a/Makefile.am b/Makefile.am index 77b631f40..3e00f4b1f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -95,6 +95,7 @@ libmpd_a_SOURCES = \ src/command/OtherCommands.cxx src/command/OtherCommands.hxx \ src/command/CommandListBuilder.cxx src/command/CommandListBuilder.hxx \ src/Idle.cxx src/Idle.hxx \ + src/IdleFlags.cxx src/IdleFlags.hxx \ src/decoder/DecoderError.cxx src/decoder/DecoderError.hxx \ src/decoder/DecoderThread.cxx src/decoder/DecoderThread.hxx \ src/decoder/DecoderCommand.hxx \ diff --git a/src/Idle.cxx b/src/Idle.cxx index d0f43a3d7..4280c4b5e 100644 --- a/src/Idle.cxx +++ b/src/Idle.cxx @@ -26,7 +26,6 @@ #include "Idle.hxx" #include "Main.hxx" #include "Instance.hxx" -#include "util/ASCII.hxx" #include @@ -34,23 +33,6 @@ static std::atomic_uint idle_flags; -static const char *const idle_names[] = { - "database", - "stored_playlist", - "playlist", - "player", - "mixer", - "output", - "options", - "sticker", - "update", - "subscription", - "message", - "neighbor", - "mount", - nullptr -}; - void idle_add(unsigned flags) { @@ -67,24 +49,3 @@ idle_get(void) { return idle_flags.exchange(0); } - -const char*const* -idle_get_names(void) -{ - return idle_names; -} - -unsigned -idle_parse_name(const char *name) -{ -#if !CLANG_CHECK_VERSION(3,6) - /* disabled on clang due to -Wtautological-pointer-compare */ - assert(name != nullptr); -#endif - - for (unsigned i = 0; idle_names[i] != nullptr; ++i) - if (StringEqualsCaseASCII(name, idle_names[i])) - return 1 << i; - - return 0; -} diff --git a/src/Idle.hxx b/src/Idle.hxx index d4052423f..b4328bc60 100644 --- a/src/Idle.hxx +++ b/src/Idle.hxx @@ -25,47 +25,7 @@ #ifndef MPD_IDLE_HXX #define MPD_IDLE_HXX -#include "Compiler.h" - -/** song database has been updated*/ -static constexpr unsigned IDLE_DATABASE = 0x1; - -/** a stored playlist has been modified, created, deleted or - renamed */ -static constexpr unsigned IDLE_STORED_PLAYLIST = 0x2; - -/** the current playlist has been modified */ -static constexpr unsigned IDLE_PLAYLIST = 0x4; - -/** the player state has changed: play, stop, pause, seek, ... */ -static constexpr unsigned IDLE_PLAYER = 0x8; - -/** the volume has been modified */ -static constexpr unsigned IDLE_MIXER = 0x10; - -/** an audio output device has been enabled or disabled */ -static constexpr unsigned IDLE_OUTPUT = 0x20; - -/** options have changed: crossfade; random; repeat; ... */ -static constexpr unsigned IDLE_OPTIONS = 0x40; - -/** a sticker has been modified. */ -static constexpr unsigned IDLE_STICKER = 0x80; - -/** a database update has started or finished. */ -static constexpr unsigned IDLE_UPDATE = 0x100; - -/** a client has subscribed or unsubscribed to/from a channel */ -static constexpr unsigned IDLE_SUBSCRIPTION = 0x200; - -/** a message on the subscribed channel was received */ -static constexpr unsigned IDLE_MESSAGE = 0x400; - -/** a neighbor was found or lost */ -static constexpr unsigned IDLE_NEIGHBOR = 0x800; - -/** the mount list has changed */ -static constexpr unsigned IDLE_MOUNT = 0x1000; +#include "IdleFlags.hxx" /** * Adds idle flag (with bitwise "or") and queues notifications to all @@ -80,18 +40,4 @@ idle_add(unsigned flags); unsigned idle_get(); -/** - * Get idle names - */ -const char*const* -idle_get_names(); - -/** - * Parse an idle name and return its mask. Returns 0 if the given - * name is unknown. - */ -gcc_nonnull_all gcc_pure -unsigned -idle_parse_name(const char *name); - #endif diff --git a/src/IdleFlags.cxx b/src/IdleFlags.cxx new file mode 100644 index 000000000..31723de78 --- /dev/null +++ b/src/IdleFlags.cxx @@ -0,0 +1,67 @@ +/* + * Copyright 2003-2016 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* + * Support library for the "idle" command. + * + */ + +#include "config.h" +#include "IdleFlags.hxx" +#include "util/ASCII.hxx" + +#include + +static const char *const idle_names[] = { + "database", + "stored_playlist", + "playlist", + "player", + "mixer", + "output", + "options", + "sticker", + "update", + "subscription", + "message", + "neighbor", + "mount", + nullptr +}; + +const char*const* +idle_get_names(void) +{ + return idle_names; +} + +unsigned +idle_parse_name(const char *name) +{ +#if !CLANG_CHECK_VERSION(3,6) + /* disabled on clang due to -Wtautological-pointer-compare */ + assert(name != nullptr); +#endif + + for (unsigned i = 0; idle_names[i] != nullptr; ++i) + if (StringEqualsCaseASCII(name, idle_names[i])) + return 1 << i; + + return 0; +} diff --git a/src/IdleFlags.hxx b/src/IdleFlags.hxx new file mode 100644 index 000000000..4f910f5df --- /dev/null +++ b/src/IdleFlags.hxx @@ -0,0 +1,84 @@ +/* + * Copyright 2003-2016 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* + * Support library for the "idle" command. + * + */ + +#ifndef MPD_IDLE_FLAGS_HXX +#define MPD_IDLE_FLAGS_HXX + +#include "Compiler.h" + +/** song database has been updated*/ +static constexpr unsigned IDLE_DATABASE = 0x1; + +/** a stored playlist has been modified, created, deleted or + renamed */ +static constexpr unsigned IDLE_STORED_PLAYLIST = 0x2; + +/** the current playlist has been modified */ +static constexpr unsigned IDLE_PLAYLIST = 0x4; + +/** the player state has changed: play, stop, pause, seek, ... */ +static constexpr unsigned IDLE_PLAYER = 0x8; + +/** the volume has been modified */ +static constexpr unsigned IDLE_MIXER = 0x10; + +/** an audio output device has been enabled or disabled */ +static constexpr unsigned IDLE_OUTPUT = 0x20; + +/** options have changed: crossfade; random; repeat; ... */ +static constexpr unsigned IDLE_OPTIONS = 0x40; + +/** a sticker has been modified. */ +static constexpr unsigned IDLE_STICKER = 0x80; + +/** a database update has started or finished. */ +static constexpr unsigned IDLE_UPDATE = 0x100; + +/** a client has subscribed or unsubscribed to/from a channel */ +static constexpr unsigned IDLE_SUBSCRIPTION = 0x200; + +/** a message on the subscribed channel was received */ +static constexpr unsigned IDLE_MESSAGE = 0x400; + +/** a neighbor was found or lost */ +static constexpr unsigned IDLE_NEIGHBOR = 0x800; + +/** the mount list has changed */ +static constexpr unsigned IDLE_MOUNT = 0x1000; + +/** + * Get idle names + */ +const char*const* +idle_get_names(); + +/** + * Parse an idle name and return its mask. Returns 0 if the given + * name is unknown. + */ +gcc_nonnull_all gcc_pure +unsigned +idle_parse_name(const char *name); + +#endif