module.h

00001 /***************************************************************************
00002  * module.h
00003  * This file is part of the KDE project
00004  * copyright (C)2004-2005 by Sebastian Sauer (mail@dipe.org)
00005  *
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Library General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2 of the License, or (at your option) any later version.
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Library General Public License for more details.
00014  * You should have received a copy of the GNU Library General Public License
00015  * along with this program; see the file COPYING.  If not, write to
00016  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018  ***************************************************************************/
00019 
00020 #ifndef KROSS_API_MODULE_H
00021 #define KROSS_API_MODULE_H
00022 
00023 #include <qstring.h>
00024 #include <kdebug.h>
00025 
00026 #include "class.h"
00027 
00028 namespace Kross { namespace Api {
00029 
00030     /**
00031      * The Module class. Modules are managed in the \a Manager singleton 
00032      * instance and are implemented as in scripting plugins as main
00033      * entry point to load and work with them.
00034      */
00035     class Module : public Class<Module>
00036     {
00037         public:
00038 
00039             /**
00040              * Shared pointer to implement reference-counting.
00041              */
00042             typedef KSharedPtr<Module> Ptr;
00043 
00044             /**
00045              * Constructor.
00046              *
00047              * \param name The name of this module.
00048              *        Each module needs a unique name cause
00049              *        the application using Kross identifies
00050              *        modules with there names.
00051              */
00052             explicit Module(const QString& name)
00053                 : Class<Module>(name)
00054             {
00055                 kdDebug() << QString("Kross::Api::Module %1 created").arg(name) << endl;
00056             }
00057 
00058             /**
00059              * Destructor.
00060              */
00061             virtual ~Module()
00062             {
00063                 kdDebug() << QString("Kross::Api::Module %1 destroyed").arg(getName()) << endl;
00064             }
00065 
00066             /**
00067              * Method to load from \a Kross::Api::Object inherited classes
00068              * this module implements from within other modules.
00069              */
00070             virtual Kross::Api::Object::Ptr get(const QString& /*name*/, void* /*pointer*/ = 0)
00071             {
00072                 return 0;
00073             }
00074 
00075     };
00076 
00077 
00078 }}
00079 
00080 #endif
00081 

Generated on Thu Feb 9 17:59:10 2006 for Kross by  doxygen 1.4.6