00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _QORE_BUILTINFUNCTIONLIST_H
00024
00025 #define _QORE_BUILTINFUNCTIONLIST_H
00026
00027 #include <qore/common.h>
00028 #include <qore/hash_map.h>
00029 #include <qore/Restrictions.h>
00030 #include <qore/QoreThreadLock.h>
00031
00036 DLLLOCAL void init_builtin_functions();
00037
00039
00042 class BuiltinFunctionList
00043 {
00044 private:
00045 DLLLOCAL static bool init_done;
00046 DLLLOCAL static hm_bf_t hm;
00047 DLLLOCAL static class QoreThreadLock mutex;
00048
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 DLLLOCAL void clear();
00058
00060
00065 DLLEXPORT static void add(const char *name, q_func_t f, int typ = QDOM_DEFAULT);
00066
00068
00071 DLLEXPORT static const class BuiltinFunction *find(const char *name);
00072
00074
00077 DLLEXPORT static int size();
00078
00079 DLLLOCAL static void init();
00080 };
00081
00083 DLLEXPORT extern BuiltinFunctionList builtinFunctions;
00084
00085 #endif // _QORE_BUILTINFUNCTIONLIST_H