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

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
#include "tads.h"
2
3
modify TadsObject
4
    test(x) { "TadsObject.test(<<x>>)\n"; }
5
;
6
7
myObject: object
8
    prop1 = 100
9
    prop2 = 200
10
;
11
12
globals: PreinitObject
13
    execute()
14
    {
15
        symtab = t3GetGlobalSymbols();
16
        valToSym = new LookupTable(symtab.getBucketCount(),
17
                                   symtab.getEntryCount());
18
        symtab.forEachAssoc({sym, val: valToSym[val] = sym});
19
    }
20
    symtab = nil
21
    valToSym = nil;
22
;
23
24
sayBool(x)
25
{
26
    "<<x ? 'yes' : 'no'>>";
27
}
28
29
main(args)
30
{
31
    showScList(myObject);
32
33
    "myObject defines prop1? <<sayBool(myObject.propDefined(&prop1))>>\n";
34
    "myObject defines prop2? <<sayBool(myObject.propDefined(&prop2))>>\n";
35
    "myObject defines execute? <<sayBool(myObject.propDefined(&execute))>>\n";
36
    "myObject defines propDefined?
37
        <<sayBool(myObject.propDefined(&propDefined))>>\n";
38
}
39
40
showScList(obj)
41
{
42
    local lst = obj.getSuperclassList();
43
44
    "object <<globals.valToSym[obj]>>: ";
45
    for (local i = 1 ; i <= lst.length() ; ++i)
46
    {
47
        if (i != 1)
48
            ", ";
49
        "<<globals.valToSym[lst[i]]>>";
50
    }
51
    "\n";
52
    for (local i = 1 ; i <= lst.length() ; ++i)
53
        showScList(lst[i]);
54
}
55