cfad47cfa3/tads3/vmmcreg.h

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
/* $Header: d:/cvsroot/tads/tads3/VMMCREG.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
  vmmcreg.h - Metaclass Registry definitions
12
Function
13
  
14
Notes
15
  
16
Modified
17
  12/01/98 MJRoberts  - Creation
18
*/
19
20
#ifndef VMMCREG_H
21
#define VMMCREG_H
22
23
/* ------------------------------------------------------------------------ */
24
/*
25
 *   Define the NORMAL version of the metaclass registration macro.  This
26
 *   version is used on all inclusions of metaclass header files in normal
27
 *   contexts, and does nothing.
28
 *   
29
 *   This macro is redefined for SPECIAL versions, where metaclass header
30
 *   files are included in order to build certain tables, such as the
31
 *   central registration table.
32
 */
33
#define VM_REGISTER_METACLASS(metaclass)
34
35
36
#include "t3std.h"
37
#include "vmtype.h"
38
#include "vmglob.h"
39
40
/*
41
 *   Include all of the core headers first, to ensure that we skip
42
 *   everything but the registration macros on subsequent inclusions while
43
 *   building the tables.  (Since each header is protected against
44
 *   multiple inclusion, except for the registration macros, we need only
45
 *   include each file once up front to ensure that these definitions
46
 *   won't show up again.) 
47
 */
48
#include "vmmccore.h"
49
50
/* ------------------------------------------------------------------------ */
51
/*
52
 *   Metaclass registration entry.  Each registered metaclass defines an
53
 *   entry like this. 
54
 */
55
struct vm_meta_reg_t
56
{
57
    /*
58
     *   The CVmMetaclass object that describes the metaclass 
59
     */
60
    class CVmMetaclass **meta;
61
};
62
63
/* ------------------------------------------------------------------------ */
64
/*
65
 *   Declare the global static table 
66
 */
67
extern vm_meta_reg_t G_meta_reg_table[];
68
69
70
/* ------------------------------------------------------------------------ */
71
/*
72
 *   Register metaclasses.  This must be called during VM initialization
73
 *   to assign each metaclass its registration index.  
74
 */
75
void vm_register_metaclasses();
76
77
78
#endif /* VMMCREG_H */
79