Skip to content

Commit 61e9632

Browse files
author
王录祥
committed
Merge remote-tracking branch 'godevsig/dev' into f/chan
2 parents df31704 + 4cfaeeb commit 61e9632

File tree

10 files changed

+883
-173
lines changed

10 files changed

+883
-173
lines changed

builtins.go

Lines changed: 39 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,44 @@
11
package tengo
22

3-
var builtinFuncs = []*BuiltinFunction{
4-
{
5-
Name: "len",
6-
Value: builtinLen,
7-
},
8-
{
9-
Name: "copy",
10-
Value: builtinCopy,
11-
},
12-
{
13-
Name: "append",
14-
Value: builtinAppend,
15-
},
16-
{
17-
Name: "delete",
18-
Value: builtinDelete,
19-
},
20-
{
21-
Name: "splice",
22-
Value: builtinSplice,
23-
},
24-
{
25-
Name: "string",
26-
Value: builtinString,
27-
},
28-
{
29-
Name: "int",
30-
Value: builtinInt,
31-
},
32-
{
33-
Name: "bool",
34-
Value: builtinBool,
35-
},
36-
{
37-
Name: "float",
38-
Value: builtinFloat,
39-
},
40-
{
41-
Name: "char",
42-
Value: builtinChar,
43-
},
44-
{
45-
Name: "bytes",
46-
Value: builtinBytes,
47-
},
48-
{
49-
Name: "time",
50-
Value: builtinTime,
51-
},
52-
{
53-
Name: "is_int",
54-
Value: builtinIsInt,
55-
},
56-
{
57-
Name: "is_float",
58-
Value: builtinIsFloat,
59-
},
60-
{
61-
Name: "is_string",
62-
Value: builtinIsString,
63-
},
64-
{
65-
Name: "is_bool",
66-
Value: builtinIsBool,
67-
},
68-
{
69-
Name: "is_char",
70-
Value: builtinIsChar,
71-
},
72-
{
73-
Name: "is_bytes",
74-
Value: builtinIsBytes,
75-
},
76-
{
77-
Name: "is_array",
78-
Value: builtinIsArray,
79-
},
80-
{
81-
Name: "is_immutable_array",
82-
Value: builtinIsImmutableArray,
83-
},
84-
{
85-
Name: "is_map",
86-
Value: builtinIsMap,
87-
},
88-
{
89-
Name: "is_immutable_map",
90-
Value: builtinIsImmutableMap,
91-
},
92-
{
93-
Name: "is_iterable",
94-
Value: builtinIsIterable,
95-
},
96-
{
97-
Name: "is_time",
98-
Value: builtinIsTime,
99-
},
100-
{
101-
Name: "is_error",
102-
Value: builtinIsError,
103-
},
104-
{
105-
Name: "is_undefined",
106-
Value: builtinIsUndefined,
107-
},
108-
{
109-
Name: "is_function",
110-
Value: builtinIsFunction,
111-
},
112-
{
113-
Name: "is_callable",
114-
Value: builtinIsCallable,
115-
},
116-
{
117-
Name: "type_name",
118-
Value: builtinTypeName,
119-
},
120-
{
121-
Name: "format",
122-
Value: builtinFormat,
123-
},
124-
{
125-
Name: "range",
126-
Value: builtinRange,
127-
},
3+
var builtinFuncs []*BuiltinFunction
4+
5+
// if needVMObj is true, VM will pass [VMObj, args...] to fn when calling it.
6+
func addBuiltinFunction(name string, fn CallableFunc, needVMObj bool) {
7+
builtinFuncs = append(builtinFuncs, &BuiltinFunction{Name: name, Value: fn, NeedVMObj: needVMObj})
8+
}
9+
10+
func init() {
11+
addBuiltinFunction("len", builtinLen, false)
12+
addBuiltinFunction("copy", builtinCopy, false)
13+
addBuiltinFunction("append", builtinAppend, false)
14+
addBuiltinFunction("delete", builtinDelete, false)
15+
addBuiltinFunction("splice", builtinSplice, false)
16+
addBuiltinFunction("string", builtinString, false)
17+
addBuiltinFunction("int", builtinInt, false)
18+
addBuiltinFunction("bool", builtinBool, false)
19+
addBuiltinFunction("float", builtinFloat, false)
20+
addBuiltinFunction("char", builtinChar, false)
21+
addBuiltinFunction("bytes", builtinBytes, false)
22+
addBuiltinFunction("time", builtinTime, false)
23+
addBuiltinFunction("is_int", builtinIsInt, false)
24+
addBuiltinFunction("is_float", builtinIsFloat, false)
25+
addBuiltinFunction("is_string", builtinIsString, false)
26+
addBuiltinFunction("is_bool", builtinIsBool, false)
27+
addBuiltinFunction("is_char", builtinIsChar, false)
28+
addBuiltinFunction("is_bytes", builtinIsBytes, false)
29+
addBuiltinFunction("is_array", builtinIsArray, false)
30+
addBuiltinFunction("is_immutable_array", builtinIsImmutableArray, false)
31+
addBuiltinFunction("is_map", builtinIsMap, false)
32+
addBuiltinFunction("is_immutable_map", builtinIsImmutableMap, false)
33+
addBuiltinFunction("is_iterable", builtinIsIterable, false)
34+
addBuiltinFunction("is_time", builtinIsTime, false)
35+
addBuiltinFunction("is_error", builtinIsError, false)
36+
addBuiltinFunction("is_undefined", builtinIsUndefined, false)
37+
addBuiltinFunction("is_function", builtinIsFunction, false)
38+
addBuiltinFunction("is_callable", builtinIsCallable, false)
39+
addBuiltinFunction("type_name", builtinTypeName, false)
40+
addBuiltinFunction("format", builtinFormat, false)
41+
addBuiltinFunction("range", builtinRange, false)
12842
}
12943

13044
// GetAllBuiltinFunctions returns all builtin function objects.

bytecode.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,4 +295,5 @@ func init() {
295295
gob.Register(&Time{})
296296
gob.Register(&Undefined{})
297297
gob.Register(&UserFunction{})
298+
gob.Register(&BuiltinFunction{})
298299
}

0 commit comments

Comments
 (0)