koscript_method.cc
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "koscript_method.h"
00021 #include "koscript_struct.h"
00022 #include "koscript_util.h"
00023 #include "koscript.h"
00024
00025 #include <klocale.h>
00026
00027
00028
00029
00030
00031
00032
00033 bool KSMethod::call( KSContext& context )
00034 {
00035 Q_ASSERT( context.value() && context.value()->type() == KSValue::ListType );
00036
00037 if ( m_func->type() == KSValue::FunctionType )
00038 {
00039 context.value()->listValue().prepend( m_object );
00040 if ( !m_func->functionValue()->call( context ) )
00041 return false;
00042 }
00043 else if ( m_func->type() == KSValue::StructBuiltinMethodType )
00044 {
00045 KSStructBuiltinMethod m = m_func->structBuiltinMethodValue();
00046 KSStruct* o = m_object->structValue();
00047 if ( ! (o->*m)( context, name() ) )
00048 return false;
00049 }
00050
00051 return true;
00052 }
This file is part of the documentation for lib Library Version 1.3.5.