// {{{ 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
 */
// }}}


#include <iwear_uiservices/applicationservice.h>
#include <iwear_uiservices/application.h>


/**
 * This function create an application object. This function may
 * return NULL in case of an error.
 * @todo Pass quality gate Dennis L.
 */
extern "C" iwear::uiservices::Application* create_application( iwear::uiservices::ApplicationService* as, const std::string& dn, const std::string&  dd );

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

/**
 * 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 application, the loader can look for the
 * application name here
 */
extern "C" const char* get_application_name( void );

/**
 * Before loading an application, the loader can look for an
 * application description here
 */
extern "C" const char* get_application_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
 * plugiin agrees over a certain standard, he can also parse this as a
 * version identifier for communicating.
 */
extern "C" const char* get_application_version( void );


