| | 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 | } |