koscript_func.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __KSCRIPT_FUNC_H__
00021 #define __KSCRIPT_FUNC_H__
00022
00023 #include "koscript_value.h"
00024 #include "koscript_context.h"
00025 #include "koscript_ptr.h"
00026 #include "koscript_parsenode.h"
00027
00028 #include <qshared.h>
00029
00030 class KSParseNode;
00031 class KSInterpreter;
00032
00033 KSModule::Ptr ksCreateModule_KScript( KSInterpreter* );
00034
00035 class KSFunction : public QShared
00036 {
00037 public:
00038 typedef KSSharedPtr<KSFunction> Ptr;
00039
00040 KSFunction( KSModule* m ) : QShared(), m_module( m ) { }
00041
00042 virtual bool call( KSContext& context ) = 0;
00043 virtual QString name() const = 0;
00044
00045 KSModule* module() { return m_module; }
00046
00047 private:
00048 KSModule* m_module;
00049 };
00050
00051 typedef bool (*KSBuiltinFuncPtr)( KSContext& context );
00052
00053 class KSBuiltinFunction : public KSFunction
00054 {
00055 public:
00056 KSBuiltinFunction( KSModule* m, const QString& _name, KSBuiltinFuncPtr func ) : KSFunction( m ) { m_func = func; m_name = _name; }
00057 virtual ~KSBuiltinFunction() { }
00058
00059 virtual bool call( KSContext& context ) { return m_func( context ); }
00060 virtual QString name() const { return m_name; }
00061
00062 private:
00063 KSBuiltinFuncPtr m_func;
00064 QString m_name;
00065 };
00066
00067 class KSScriptFunction : public KSFunction
00068 {
00069 public:
00075 KSScriptFunction( KSModule* m, KSParseNode* node ) : KSFunction( m ) { m_node = node; }
00076
00077 virtual bool call( KSContext& context );
00078 virtual QString name() const { return m_node->getIdent(); }
00079
00080 private:
00081 KSParseNode* m_node;
00082 };
00083
00084 #endif
This file is part of the documentation for lib Library Version 1.3.5.