/*************************************************************************** * This file is part of the KDE project * copyright (C) 2005 by Sebastian Sauer (mail@dipe.org) * copyright (C) 2005 by Tobi Krebs (tobi.krebs@gmail.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library 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 * Library General Public License for more details. * You should have received a copy of the GNU Library General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. ***************************************************************************/ #ifndef KOMACRO_METAOBJECT_H #define KOMACRO_METAOBJECT_H #include #include #include "komacro_export.h" namespace KoMacro { // forward declarations. class Variable; class MetaMethod; /** * Class to provide abstract access to extended TQObject functionality * like the undocumented TQUObject-API in TQt3. * * The design tried to limit future porting to TQt4 by providing a * somewhat similar API to the TQt4 TQMeta* stuff. */ class KOMACRO_EXPORT MetaObject : public TDEShared { public: /** * Constructor. * * @param object The TQObject instance this @a MetaObject provides * abstract access to. */ explicit MetaObject(TQObject* const object); /** * Destructor. */ ~MetaObject(); /** * @return the TQObject this @a MetaObject provides abstract * access to. */ TQObject* const object() const; //TQStrList signalNames() const; //TQStrList slotNames() const; /** * @return the index of the signal @p signal . */ int indexOfSignal(const char* signal) const; /** * @return the index of the slot @p slot . */ int indexOfSlot(const char* slot) const; /** * @return the @a MetaMethod that matches to the * index @p index . */ TDESharedPtr method(int index); /** * @return a @a MetaMethod for the signal @p signal . */ TDESharedPtr signal(const char* signal); /** * @return a @a MetaMethod for the slot @p slot . */ TDESharedPtr slot(const char* slot); //TDESharedPtr addSlot(const char* slot); //void connectSignal(TQObject* obj, const char* signal); /** * Invoke the @a MetaMethod that has the index @p index . * * @param index The index the signal or slot has. Use * @a indexOfSignal() and @a indexOfSlot() to determinate * those index. * @param arguments The optional arguments passed to the * method. * @return The returnvalue the method provides and that got * returned if the execution is done. */ TDESharedPtr invokeMethod(int index, TQValueList< TDESharedPtr > arguments); private: /// @internal d-pointer class. class Private; /// @internal d-pointer instance. Private* const d; }; } #endif