Kross::Api::Callable Class Reference

#include <callable.h>

Inheritance diagram for Kross::Api::Callable:

Inheritance graph
[legend]
Collaboration diagram for Kross::Api::Callable:

Collaboration graph
[legend]
List of all members.

Detailed Description

Base class for callable objects. Classes like Event or Class are inherited from this class and implement the Object::call() method to handle the call.

Definition at line 41 of file callable.h.

Public Types

typedef KSharedPtr< CallablePtr

Public Member Functions

 Callable (const QString &name, Object::Ptr parent, const ArgumentList &arglist)
virtual ~Callable ()
virtual const QString getClassName () const
virtual Object::Ptr call (const QString &name, List::Ptr arguments)
Object::Ptr hasChild (List::Ptr args)
Object::Ptr getChild (List::Ptr args)
Object::Ptr getChildrenList (List::Ptr args)
Object::Ptr getChildrenDict (List::Ptr args)
Object::Ptr callChild (List::Ptr args)
const QStringgetName () const
virtual const QString toString ()
Object::Ptr getParent () const
bool hasChild (const QString &name) const
Object::Ptr getChild (const QString &name) const
QMap< QString, Object::PtrgetChildren () const
bool addChild (Object::Ptr object, const QString &name=QString::null)
void removeChild (const QString &name)
void removeAllChildren ()
virtual Object::Ptr call (const QString &name, KSharedPtr< List > arguments)
virtual QStringList getCalls ()

Static Public Member Functions

template<class T>
static T * fromObject (Object::Ptr object)

Protected Attributes

ArgumentList m_arglist


Member Typedef Documentation

typedef KSharedPtr<Callable> Kross::Api::Callable::Ptr
 

Shared pointer to implement reference-counting.

Reimplemented from Kross::Api::Object.

Reimplemented in Kross::Api::EventAction, Kross::Api::EventScript, Kross::Api::EventSignal, Kross::Api::EventSlot, Kross::Api::Module, Kross::Api::QtObject, Kross::Api::MainModule, Kross::Api::ScriptAction, and Kross::Api::ScriptContainer.

Definition at line 48 of file callable.h.


Constructor & Destructor Documentation

Callable::Callable const QString name,
Object::Ptr  parent,
const ArgumentList arglist
 

Constructor.

Parameters:
name The name this callable object has and it is reachable as via Object::getChild() .
parent The parent Object this instance is child of.
arglist A list of arguments the callable object expects if it got called.

Definition at line 28 of file callable.cpp.

00029     : Object(name, parent)
00030     , m_arglist(arglist)
00031 {
00032 }

Callable::~Callable  )  [virtual]
 

Destructor.

Definition at line 34 of file callable.cpp.

00035 {
00036 }


Member Function Documentation

bool Object::addChild Object::Ptr  object,
const QString name = QString::null
[inherited]
 

Add a new child. Replaces a possible already existing child with such a name.

Parameters:
name the name of the child
object The Object to add.
Returns:
true if the Object was added successfully else false.

Definition at line 79 of file object.cpp.

References QString::arg(), QString::isEmpty(), QString::isNull(), and QMap::replace().

Referenced by Kross::Api::MainModule::addKAction(), Kross::Api::MainModule::addQObject(), Kross::Api::MainModule::addSignal(), Kross::Api::MainModule::addSlot(), Kross::Api::QtObject::QtObject(), and TestPluginModule::TestPluginModule().

00080 {
00081     QString n = name.isNull() ? object->getName() : name;
00082 
00083 #ifdef KROSS_API_OBJECT_ADDCHILD_DEBUG
00084     kdDebug() << QString("Kross::Api::Object::addChild() object.name='%2' object.classname='%3'")
00085         .arg(n).arg(object->getClassName()) << endl;
00086 #endif
00087 
00088     if(n.isEmpty()) // prevent invalid items.
00089         return false; //throw Exception::Ptr( new Exception( QString("Failed to add child object to object '%1'. Invalid name for class '%2'.").arg(getName()).arg(object->getClassName()) ) );
00090 
00091     object->m_parent = this;
00092     m_children.replace(n, object);
00093     return true;
00094 }

virtual Object::Ptr Kross::Api::Object::call const QString name,
KSharedPtr< List arguments
[virtual, inherited]
 

Pass a call to the object and evaluated it recursive down the object-hierachy. Objects like Class are able to handle call's by just implementing this function. If the call is done the called() method will be executed recursive from bottom up the call hierachy.

Exceptions:
TypeException if the object or the name is not callable.
Parameters:
name Each call has a name that says what should be called. In the case of a Class the name is the functionname.
arguments The list of arguments passed to the call.
Returns:
The call-result as Object::Ptr instance or NULL if the call has no result.

Reimplemented in Kross::Api::EventScript, Kross::Api::EventSignal, and Kross::Api::EventSlot.

Referenced by call(), and callChild().

Object::Ptr Callable::call const QString name,
List::Ptr  arguments
[virtual]
 

Call the object.

Reimplemented in Kross::Api::Event< T >, Kross::Api::Event< EventSignal >, Kross::Api::Event< Module >, Kross::Api::Event< EventSlot >, Kross::Api::Event< EventAction >, Kross::Api::Event< TestPluginObject >, Kross::Api::Event< EventScript >, and Kross::Api::Event< QtObject >.

Definition at line 43 of file callable.cpp.

References Kross::Api::Object::call(), callChild(), getChild(), getChildrenDict(), getChildrenList(), Kross::Api::Object::getName(), and hasChild().

00044 {
00045 #ifdef KROSS_API_CALLABLE_CALL_DEBUG
00046     kdDebug() << QString("Kross::Api::Callable::call() name=%1 getName()=%2 arguments=%3").arg(name).arg(getName()).arg(arguments ? arguments->toString() : QString("")) << endl;
00047 #endif
00048 
00049     if(name == "get") {
00050         //checkArguments( ArgumentList() << Argument("Kross::Api::Variant::String") );
00051         return getChild(arguments);
00052     }
00053     else if(name == "has") {
00054         //checkArguments( ArgumentList() << Argument("Kross::Api::Variant::String") );
00055         return hasChild(arguments);
00056     }
00057     else if(name == "call") {
00058         //checkArguments( ArgumentList() << Argument("Kross::Api::Variant::String") << Argument("Kross::Api::List", new List( QValueList<Object::Ptr>() )) );
00059         return callChild(arguments);
00060     }
00061     else if(name == "list") {
00062         //checkArguments( ArgumentList() << Argument("Kross::Api::Variant::String") << Argument("Kross::Api::List", new List( QValueList<Object::Ptr>() )) );
00063         return getChildrenList(arguments);
00064     }
00065     else if(name == "dict") {
00066         //checkArguments( ArgumentList() << Argument("Kross::Api::Variant::String") << Argument("Kross::Api::List", new List( QValueList<Object::Ptr>() )) );
00067         return getChildrenDict(arguments);
00068     }
00069 
00070     return Object::call(name, arguments);
00071 }

Object::Ptr Callable::callChild List::Ptr  args  ) 
 

Wrapper for the Kross::Api::Object::call() method to call a children.

Definition at line 172 of file callable.cpp.

References Kross::Api::Object::call(), and Kross::Api::Variant::toString().

Referenced by call().

00173 {
00174     //kdDebug() << QString("Kross::Api::Callable::callChild() getName()=%1").arg(getName()) << endl;
00175     return Object::call(Variant::toString(args->item(0)), args);
00176 }

template<class T>
static T* Kross::Api::Object::fromObject Object::Ptr  object  )  [inline, static, inherited]
 

Try to convert the Object instance to the template class T.

Exceptions:
TypeException if the cast failed.
Parameters:
object The Object to cast.
Returns:
The to a instance from template type T casted Object.

Definition at line 198 of file object.h.

00199             {
00200                 T* t = (T*) object.data();
00201                 if(! t)
00202                     throw KSharedPtr<Exception>( new Exception(QString("Object \"%1\" invalid.").arg(object ? object->getClassName() : "")) );
00203                 return t;
00204             }

virtual QStringList Kross::Api::Object::getCalls  )  [inline, virtual, inherited]
 

Return a list of supported callable objects.

Returns:
List of supported calls.

Reimplemented in Kross::Python::PythonObject.

Definition at line 186 of file object.h.

00186 { return QStringList(); }

Object::Ptr Object::getChild const QString name  )  const [inherited]
 

Return the defined child or NULL if there is no such object with that name avaible.

Parameters:
name The name of the Object to return.
Returns:
The Object matching to the defined name or NULL if there is no such Object.

Definition at line 69 of file object.cpp.

Referenced by getChild().

00070 {
00071     return m_children[name];
00072 }

Object::Ptr Callable::getChild List::Ptr  args  ) 
 

Wrapper for the Kross::Api::Object::getChild() method to return a children this object has.

Definition at line 146 of file callable.cpp.

References Kross::Api::Object::getChild(), Kross::Api::Object::getName(), and Kross::Api::Variant::toString().

Referenced by call().

00147 {
00148     QString s = Variant::toString(args->item(0));
00149     //kdDebug() << QString("Kross::Api::Callable::getChild() getName()=%1 childName=%2").arg(getName()).arg(s) << endl;
00150     Object::Ptr obj = Object::getChild(s);
00151     if(! obj)
00152         throw Exception::Ptr( new Exception(QString("The object '%1' has no child object '%2'").arg(getName()).arg(s)) );
00153     return obj;
00154 }

QMap< QString, Object::Ptr > Object::getChildren  )  const [inherited]
 

Return all children.

Returns:
A ObjectMap of children this Object has.

Definition at line 74 of file object.cpp.

Referenced by getChildrenDict(), and getChildrenList().

00075 {
00076     return m_children;
00077 }

Object::Ptr Callable::getChildrenDict List::Ptr  args  ) 
 

Wrapper for the Kross::Api::Object::getChild() method to return a dictonary of children this object has.

Returns:
a Dict filled with the children.

Definition at line 166 of file callable.cpp.

References Kross::Api::Object::getChildren().

Referenced by call().

00167 {
00168     //kdDebug()<<"Kross::Api::Callable::getChildrenDict()"<<endl;
00169     return new Dict(Object::getChildren(), "Kross::Api::Callable::getChildrenDict::Dict");
00170 }

Object::Ptr Callable::getChildrenList List::Ptr  args  ) 
 

Wrapper for the Kross::Api::Object::getChildren() method to return a list of childrennames this object has.

Returns:
a List filled with a list of names of the children this object has.

Definition at line 156 of file callable.cpp.

References QMap::begin(), QMap::end(), and Kross::Api::Object::getChildren().

Referenced by call().

00157 {
00158     QStringList list;
00159     QMap<QString, Object::Ptr> children = getChildren();
00160     QMap<QString, Object::Ptr>::Iterator it( children.begin() );
00161     for(; it != children.end(); ++it)
00162         list.append( it.key() );
00163     return new Variant(list);
00164 }

const QString Callable::getClassName  )  const [virtual]
 

Return the class name. This could be something like "Kross::Api::Callable" for this object. The value is mainly used for display purposes.

Returns:
The name of this class.

Implements Kross::Api::Object.

Reimplemented in Kross::Api::EventAction, Kross::Api::EventScript, Kross::Api::EventSignal, Kross::Api::EventSlot, Kross::Api::QtObject, Kross::Api::MainModule, TestPluginObject, and TestPluginModule.

Definition at line 38 of file callable.cpp.

00039 {
00040     return "Kross::Api::Callable";
00041 }

const QString & Object::getName  )  const [inherited]
 

Return the name this object has.

Returns:
Name of this object.

Reimplemented in Kross::Api::ScriptContainer.

Definition at line 49 of file object.cpp.

Referenced by Kross::Api::Event< QtObject >::call(), call(), getChild(), and Kross::Api::Module::~Module().

00050 {
00051     return m_name;
00052 }

Object::Ptr Object::getParent  )  const [inherited]
 

Return the parent object or NULL if this object doesn't has a parent.

Returns:
The parent-Object or NULL if this Object doesn't has a parent.

Definition at line 59 of file object.cpp.

00060 {
00061     return m_parent;
00062 }

bool Object::hasChild const QString name  )  const [inherited]
 

Returns if the defined child is avaible.

Returns:
true if child exists else false.

Reimplemented in Kross::Api::MainModule.

Definition at line 64 of file object.cpp.

References QMap::contains().

Referenced by Kross::Api::MainModule::hasChild(), and hasChild().

00065 {
00066     return m_children.contains(name);
00067 }

Object::Ptr Callable::hasChild List::Ptr  args  ) 
 

Wrapper for the Kross::Api::Object::hasChild() method to check if this object has children.

Definition at line 139 of file callable.cpp.

References Kross::Api::Object::hasChild(), and Kross::Api::Variant::toString().

Referenced by call().

00140 {
00141     //kdDebug() << QString("Kross::Api::Callable::hasChild() getName()=%1").arg(getName()) << endl;
00142     return new Variant( Object::hasChild( Variant::toString(args->item(0)) ),
00143                         "Kross::Api::Callable::hasChild::Bool" );
00144 }

void Object::removeAllChildren  )  [inherited]
 

Remove all children.

Definition at line 104 of file object.cpp.

References QMap::clear().

00105 {
00106 #ifdef KROSS_API_OBJECT_REMCHILD_DEBUG
00107     kdDebug() << "Kross::Api::Object::removeAllChildren()" << endl;
00108 #endif
00109     m_children.clear();
00110 }

void Object::removeChild const QString name  )  [inherited]
 

Remove an existing child.

Parameters:
name The name of the Object to remove. If there doesn't exists an Object with such name just nothing will be done.

Definition at line 96 of file object.cpp.

References QMap::remove().

00097 {
00098 #ifdef KROSS_API_OBJECT_REMCHILD_DEBUG
00099     kdDebug() << QString("Kross::Api::Object::removeChild() name='%1'").arg(name) << endl;
00100 #endif
00101     m_children.remove(name);
00102 }

const QString Object::toString  )  [virtual, inherited]
 

Returns:
a string representation of the object or it's content. This method is mainly used for debugging and testing purposes.

Reimplemented in Kross::Api::Dict, Kross::Api::Exception, Kross::Api::List, and Kross::Api::Variant.

Definition at line 54 of file object.cpp.

References QString::arg(), and Kross::Api::Object::getClassName().

00055 {
00056     return QString("%1 (%2)").arg(m_name).arg(getClassName());
00057 }


Member Data Documentation

ArgumentList Kross::Api::Callable::m_arglist [protected]
 

List of arguments this callable object supports.

Definition at line 123 of file callable.h.


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 17:59:36 2006 for Kross by  doxygen 1.4.6