1 /* $Header: d:/cvsroot/tads/tads3/VMPREDEF.H,v 1.2 1999/05/17 02:52:28 MJRoberts Exp $ */
2 
3 /*
4  *   Copyright (c) 1998, 2002 Michael J. Roberts.  All Rights Reserved.
5  *
6  *   Please see the accompanying license file, LICENSE.TXT, for information
7  *   on using and copying this software.
8  */
9 /*
10 Name
11   vmpredef.h - pre-defined objects and properties
12 Function
13   Defines a global structure containing the pre-defined objects
14   and properties.  These values are provided by the load image file's
15   predefined value symbol table; at load time, we cache these values
16   for quick access.
17 Notes
18 
19 Modified
20   12/09/98 MJRoberts  - Creation
21 */
22 
23 #ifndef VMPREDEF_H
24 #define VMPREDEF_H
25 
26 #include "t3std.h"
27 #include "vmtype.h"
28 
29 /*
30  *   some special import names - these are exports that we might need to
31  *   synthesize, so we need to know their names in the image loader code as
32  *   well as in the imports table
33  */
34 #define VM_IMPORT_NAME_LASTPROPOBJ   "*LastPropObj"
35 #define VM_IMPORT_NAME_RTERRMSG      "exceptionMessage"
36 #define VM_IMPORT_NAME_CONSTSTR      "*ConstStrObj"
37 #define VM_IMPORT_NAME_CONSTLST      "*ConstLstObj"
38 
39 /*
40  *   pre-defined values
41  */
42 struct CVmPredef
43 {
44     /* initialize */
CVmPredefCVmPredef45     CVmPredef()
46     {
47         /*
48          *   the pre-defined variables are all undefined initially
49          */
50         reset();
51     }
52 
53     /*
54      *   Reset the predef variables to their initial undefined values
55      */
resetCVmPredef56     void reset()
57     {
58         /*
59          *   include the import list to generate initializations for the
60          *   predef variables
61          */
62 #define VM_IMPORT_OBJ(sym, mem) mem = VM_INVALID_OBJ;
63 #define VM_NOIMPORT_OBJ(sym, mem) VM_IMPORT_OBJ(sym, mem)
64 
65 #define VM_IMPORT_PROP(sym, mem) mem = VM_INVALID_PROP;
66 #define VM_NOIMPORT_PROP(sym, mem) VM_IMPORT_PROP(sym, mem)
67 
68 #define VM_IMPORT_FUNC(sym, mem) mem = 0;
69 
70 #include "vmimport.h"
71     }
72 
73     /*
74      *   Now include the import list to generate the actual member variables
75      *   for the imported symbols.  During image file load, the loader will
76      *   set these members to the actual values imported from the image
77      *   file.
78      */
79 #define VM_IMPORT_OBJ(sym, mem) vm_obj_id_t mem;
80 #define VM_NOIMPORT_OBJ(sym, mem) VM_IMPORT_OBJ(sym, mem)
81 
82 #define VM_IMPORT_PROP(sym, mem) vm_prop_id_t mem;
83 #define VM_NOIMPORT_PROP(sym, mem) VM_IMPORT_PROP(sym, mem)
84 
85 #define VM_IMPORT_FUNC(sym, mem) pool_ofs_t mem;
86 
87 #include "vmimport.h"
88 };
89 
90 #endif /* VMPREDEF_H */
91 
92