cfad47cfa3/t3compiler/tads3/test/data/varmac.t

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
#include <tads.h>
2
3
#define printf(prefix, arg...) \
4
   tadsSay(prefix); "\n"; \
5
   arg#foreach*"\t"; tadsSay(#@arg + ' = ' + arg); "\n"; **
6
7
#define makelist(ele...) [ele#foreach#ele#,#]
8
9
#define makelist2(nm, eles...) (nm = [eles#argcount, ## eles])
10
11
#define inheritNext(prop, args...) \
12
    doInheritNext(nil, &prop, args#foreach#args#,#)
13
14
#define printConcat(prefix, args...) \
15
    tadsSay(prefix args#ifnempty#,# args#foreach#args#+#)
16
17
main(args)
18
{
19
    local a = 1;
20
    local b = 2;
21
    local xyz = 3;
22
    local lst;
23
    
24
    printf('hello', a, b, xyz);
25
    printf('goodbye');
26
27
    "\blist 1 a:\n";
28
    lst = makelist(1, 2, 3);
29
    foreach(local cur in lst)
30
        "cur = <<cur>>\n";
31
32
    "\blist 1 b:\n";
33
    lst = makelist();
34
    foreach(local cur in lst)
35
        "cur = <<cur>>\n";
36
37
    "\blist 1 c:\n";
38
    lst = makelist(8);
39
    foreach(local cur in lst)
40
        "cur = <<cur>>\n";
41
42
    "\blist2 a:\n";
43
    makelist2(lst, 7, 8, 9, 10);
44
    foreach(local cur in lst)
45
        "cur = <<cur>>\n";
46
47
    "\blist2 b:\n";
48
    makelist2(lst);
49
    foreach(local cur in lst)
50
        "cur = <<cur>>\n";
51
52
    inheritNext(sdesc, 1, 2, 3);
53
    inheritNext(sdesc, 'hello');
54
    inheritNext(ldesc);
55
56
    "\b";
57
    printConcat('no-arguments'); "\n";
58
    printConcat('args', 'a', 'b', 'c'); "\n";
59
}
60
61
property sdesc, ldesc;
62
63
doInheritNext(obj, prop, [args])
64
{
65
    "doInheritNext: ";
66
    switch(prop)
67
    {
68
    case &sdesc: "sdesc"; break;
69
    case &ldesc: "ldesc"; break;
70
    default: "unknown prop"; break;
71
    }
72
73
    "\n";
74
    foreach(local cur in args)
75
        "\t<<cur>>\n";
76
}