// {{{ the iWear header
/**
 * @file
 * $Id$
 * $Revision$
 * $Author$
 * $Date$
 *
 * This file is part of The iWear Framework.
 * In particular this file is part of the Framework Core Library
 *
 * The iWear Framework 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 as in version 2 of the License.

 * 
 * The iWear Framework 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
 * The iWear Framework; if not, write to the Free Software Foundation, Inc., 59
 * Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
// }}}

/// FIXME those only need to be forward declarations really
#include<iwear_uiservices/applicationservice.h>
#include<iwear_uiservices/daemon.h>


/**
 * This function creates an daemon object. This function may
 * return NULL in case of an error.
 */
extern "C" iwear::uiservices::Daemon* create_daemon( iwear::uiservices::ApplicationService*, const std::string& dn, const std::string& dd );


/**
 * Every Plugin Daemon must be passed to this function upon
 * destruction. Never, really never delete this object yourself as
 * this will mess up with your memory space.
 */
extern "C" void destroy_daemon( iwear::uiservices::Daemon* dae );


/**
 * Gets the iWear version identifier. The plugin will not be loaded
 * if it differs from the currently running system
 */
extern "C" uint32_t get_iwear_version( void );


/**
 * Before loading an daemon, the loader can look for the
 * daemon name here
 */
extern "C" const char* get_daemon_name( void );


/**
 * Before loading an application, the loader can look for an
 * daemon description here
 */
extern "C" const char* get_daemon_description( void );


/**
 * In case there are different revisions of the same service plugin, a
 * version should be displayed here. If the author of such a service
 * plugin agrees over a certain standard, he can also parse this as a
 * version identifier for communicating.
 */
extern "C" const char* get_daemon_version( void );


