38 |
38 |
39 static void unlink_events(); |
39 static void unlink_events(); |
40 static list<event_info*> g_events; |
40 static list<event_info*> g_events; |
41 |
41 |
42 // ============================================================================ |
42 // ============================================================================ |
43 // Read event definitions from file |
43 // |
44 void init_events() |
44 void add_event (event_info* e) |
45 { |
45 { |
46 lexer lx; |
46 g_events << e; |
47 lx.process_file ("events.def"); |
|
48 int num_events = 0; |
|
49 |
|
50 while (lx.get_next()) |
|
51 { |
|
52 lx.must_be (tk_symbol); |
|
53 event_info* e = new event_info; |
|
54 e->name = lx.get_token()->text; |
|
55 e->number = num_events++; |
|
56 g_events << e; |
|
57 } |
|
58 |
|
59 printf ("%d event definitions read.\n", num_events); |
|
60 atexit (&unlink_events); |
|
61 } |
47 } |
62 |
48 |
63 // ============================================================================ |
49 // ============================================================================ |
64 // Delete event definitions recursively |
50 // Delete event definitions recursively |
|
51 // |
65 static void unlink_events() |
52 static void unlink_events() |
66 { |
53 { |
67 print ("Freeing event information.\n"); |
|
68 |
|
69 for (event_info* e : g_events) |
54 for (event_info* e : g_events) |
70 delete e; |
55 delete e; |
71 |
56 |
72 g_events.clear(); |
57 g_events.clear(); |
73 } |
58 } |