00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _QORE_BUILTINFUNCTIONLIST_H
00025
00026 #define _QORE_BUILTINFUNCTIONLIST_H
00027
00028 #include <qore/common.h>
00029 #include <qore/hash_map.h>
00030 #include <qore/Restrictions.h>
00031 #include <qore/QoreThreadLock.h>
00032
00033 #include <stdarg.h>
00034
00039 DLLLOCAL void init_builtin_functions();
00040
00041 class BuiltinFunction;
00042
00044
00047 class BuiltinFunctionList {
00048 private:
00049
00050 DLLLOCAL BuiltinFunctionList(const BuiltinFunctionList&);
00051 DLLLOCAL BuiltinFunctionList& operator=(const BuiltinFunctionList&);
00052 DLLLOCAL void *operator new(size_t);
00053
00054 public:
00055 DLLLOCAL BuiltinFunctionList();
00056 DLLLOCAL ~BuiltinFunctionList();
00057
00059
00064 DLLEXPORT static void add(const char *name, q_func_t f, int functional_domain = QDOM_DEFAULT);
00065
00067
00075 DLLEXPORT static void add2(const char *name, q_func_t f, int64 code_flags = QC_NO_FLAGS, int64 functional_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
00076
00078
00087 DLLEXPORT static void add3(const char *name, q_func_t f, int64 code_flags = QC_NO_FLAGS, int64 functional_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
00088
00090
00093 DLLEXPORT static int size();
00094
00096
00099 DLLEXPORT static const BuiltinFunction *find(const char *name);
00100
00101
00102 DLLLOCAL void clear();
00103 DLLLOCAL static void init();
00104 };
00105
00107 DLLEXPORT extern BuiltinFunctionList builtinFunctions;
00108
00109 #endif // _QORE_BUILTINFUNCTIONLIST_H