first impl of builtin member methods (thus far, string.size implemented. more to...
[aqualang.git] / src / builtin.h
blob78df19a77f77c4dcf982ada29a9df0e94558b5a6
2 #include <map>
4 #define BUILTIN_PROTO(funcname, ipname, selfname) \
5 Interpreter::Value funcname(Interpreter& ipname, Interpreter::Value& selfname)
7 #define BUILTIN_DECLARE(funcname) \
8 BUILTIN_PROTO(funcname, _ip, _self)
10 #define BUILTIN_EXISTS(shortname, funcname) \
11 ( \
12 rtbuiltin_##shortname##_methods.find(funcname) != rtbuiltin_##shortname##_methods.end() \
15 #define BUILTIN_GET(shortname, funcname) \
16 rtbuiltin_##shortname##_methods[funcname]
18 using BuiltinFunction = std::function<Interpreter::Value(Interpreter&, Interpreter::Value&)>;
21 //! function protos for string builtins
22 BUILTIN_DECLARE(rtbuiltin_func_string_length);
24 //! function protos for array builtins
27 //! function protos for table builtins
29 // builtin functions for strings
30 static std::map<std::string, BuiltinFunction> rtbuiltin_string_methods =
32 {"length", rtbuiltin_func_string_length},
33 {"size", rtbuiltin_func_string_length},
37 // builtin functions for arrays
38 static std::map<std::string, BuiltinFunction> rtbuiltin_array_methods =
42 // builtin functions for tables
43 static std::map<std::string, BuiltinFunction> rtbuiltin_table_methods =