-
Notifications
You must be signed in to change notification settings - Fork 138
/
global_setup.c
126 lines (106 loc) · 5.13 KB
/
global_setup.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* global_setup.c
* Copyright: (When this is determined...it will go here)
* CVS Info
* $Id$
* Overview:
* Performs all the global setting up of things. This includes the
* (very few) global variables that Parrot totes around
* Data Structure and Algorithms:
* History:
* Notes:
* References:
*/
#define INSIDE_GLOBAL_SETUP
#include "parrot/parrot.h"
void
init_world(void)
{
KEY *key;
string_init(); /* Set up the string subsystem */
/* Call base vtable class constructor methods! */
Parrot_Array_class_init(enum_class_Array);
Parrot_PerlUndef_class_init(enum_class_PerlUndef);
Parrot_PerlInt_class_init(enum_class_PerlInt);
Parrot_PerlNum_class_init(enum_class_PerlNum);
Parrot_PerlString_class_init(enum_class_PerlString);
Parrot_PerlArray_class_init(enum_class_PerlArray);
Parrot_PerlHash_class_init(enum_class_PerlHash);
Parrot_Pointer_class_init(enum_class_Pointer);
Parrot_IntQueue_class_init(enum_class_IntQueue);
Parrot_Sub_class_init(enum_class_Sub);
Parrot_Coroutine_class_init(enum_class_Coroutine);
/* Now register the names of the PMCs */
/* We need a key to work with */
key = key_new(NULL);
key->atom.type = enum_key_string;
/* And we need a hash */
Parrot_base_classname_hash = pmc_new(NULL, enum_class_PerlHash);
Parrot_base_classname_hash->vtable->init(NULL, Parrot_base_classname_hash);
/* Now start filling the hash */
/* Array */
key->atom.val.string_val =
(STRING*)Parrot_base_vtables[enum_class_Array].name(NULL,
NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_Array);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlUndef].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlUndef);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlInt].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlInt);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlNum].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlNum);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlString].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlString);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlArray].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlArray);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_PerlHash].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_PerlHash);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_Pointer].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_Pointer);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_IntQueue].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_IntQueue);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_Sub].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_Sub);
key->atom.val.string_val = (STRING*)
Parrot_base_vtables[enum_class_Coroutine].name(NULL, NULL);
key->atom.type = enum_key_string;
Parrot_base_classname_hash->vtable->set_integer_keyed(NULL,
Parrot_base_classname_hash, key, enum_class_Coroutine);
}
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*
* vim: expandtab shiftwidth=4:
*/