X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FDispatcher.hh;fp=src%2FMoof%2FDispatcher.hh;h=0000000000000000000000000000000000000000;hp=7945752df0b21ff3b97aa2104ee1b6bc1c3e4c0b;hb=e495074443d9fd7bc16137084cf9de3d031b75c4;hpb=c9e20ac06383b20ceb5404c9237e319c2e90d157 diff --git a/src/Moof/Dispatcher.hh b/src/Moof/Dispatcher.hh deleted file mode 100644 index 7945752..0000000 --- a/src/Moof/Dispatcher.hh +++ /dev/null @@ -1,118 +0,0 @@ - -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ - -#ifndef _MOOF_DISPATCHER_HH_ -#define _MOOF_DISPATCHER_HH_ - -#include - -#include -#include -#include - - -namespace Mf { - - -/** - * Interface for a notification class. - */ - -class Notification -{ -public: - virtual ~Notification() {}; -}; - - -/** - * Dispatcher of notifications to interested parties. - */ - -class Dispatcher -{ - class Impl; - boost::shared_ptr mImpl; - -public: - - // TODO - the Handler would be even better as an object which automagically - // removes itself from the dispatcher on destruction, so users don't have to - // worry about forgetting - typedef void* Handler; - typedef boost::function Function; - - Dispatcher(); - ~Dispatcher(); - - // get global instance - static Dispatcher& getInstance(); - - Handler addHandler(const std::string& message, const Function& callback); - Handler addHandler(const std::string& message, const Function& callback, - Handler id); - - void removeHandler(Handler id); - - void dispatch(const std::string& message, const Notification* param = 0); -}; - - -namespace dispatcher { - -inline Dispatcher::Handler addHandler(const std::string& message, - const Dispatcher::Function& callback) -{ - return Dispatcher::getInstance().addHandler(message, callback); -} - -inline Dispatcher::Handler addHandler(const std::string& message, - const Dispatcher::Function& callback, Dispatcher::Handler id) -{ - return Dispatcher::getInstance().addHandler(message, callback, id); -} - -inline void removeHandler(Dispatcher::Handler id) -{ - Dispatcher::getInstance().removeHandler(id); -} - -inline void dispatch(const std::string& message, const Notification* param = 0) -{ - Dispatcher::getInstance().dispatch(message, param); -} - -} // namespace dispatcher - - -} // namespace Mf - -#endif // _MOOF_DISPATCHER_HH_ - -/** vim: set ts=4 sw=4 tw=80: *************************************************/ -