Commit | Line | Data |
---|---|---|
0067158f JM |
1 | unit mal_func; |
2 | ||
3 | interface | |
4 | ||
5 | uses mal_types, | |
6 | mal_env; | |
7 | ||
8 | // Some general type definitions | |
9 | ||
10 | type | |
11 | TMalCallable = function (Args : TMalArray) : TMal; | |
12 | ||
13 | type TMalFunc = class(TMal) | |
14 | public | |
15 | Val : TMalCallable; | |
16 | Ast : TMal; | |
17 | Env : TEnv; | |
18 | Params : TMalList; | |
19 | isMacro : Boolean; | |
20 | Meta : TMal; | |
21 | ||
22 | constructor Create(V : TMalCallable); | |
23 | constructor Create(A : TMal; | |
24 | E : TEnv; | |
25 | P : TMalList); | |
26 | ||
27 | constructor Clone(F : TMalFunc); | |
28 | end; | |
29 | ||
30 | //////////////////////////////////////////////////////////// | |
31 | ||
32 | implementation | |
33 | ||
34 | constructor TMalFunc.Create(V : TMalCallable); | |
35 | begin | |
36 | inherited Create(); | |
37 | Self.Val := V; | |
38 | end; | |
39 | ||
40 | constructor TMalFunc.Create(A : TMal; | |
41 | E : TEnv; | |
42 | P : TMalList); | |
43 | begin | |
44 | inherited Create(); | |
45 | Self.Ast := A; | |
46 | Self.Env := E; | |
47 | Self.Params := P; | |
48 | end; | |
49 | ||
50 | constructor TMalFunc.Clone(F : TMalFunc); | |
51 | begin | |
52 | Self.Create(F.Ast, F.Env, F.Params); | |
53 | Self.isMacro := F.isMacro; | |
54 | Self.Meta := F.Meta; | |
55 | end; | |
56 | ||
57 | end. |