src/events.cxx

Sat, 11 Jan 2014 22:36:31 +0200

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Sat, 11 Jan 2014 22:36:31 +0200
changeset 73
1ee9b312dc18
parent 72
03e4d9db3fd9
permissions
-rw-r--r--

- *hot stuff coming through*

71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 /*
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
2 Copyright (c) 2013-2014, Santeri Piippo
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
3 All rights reserved.
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
4
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
5 Redistribution and use in source and binary forms, with or without
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
6 modification, are permitted provided that the following conditions are met:
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
7
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
8 * Redistributions of source code must retain the above copyright
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
9 notice, this list of conditions and the following disclaimer.
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
10
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
11 * Redistributions in binary form must reproduce the above copyright
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
12 notice, this list of conditions and the following disclaimer in the
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
13 documentation and/or other materials provided with the distribution.
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
14
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
15 * Neither the name of the <organization> nor the
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
16 names of its contributors may be used to endorse or promote products
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
17 derived from this software without specific prior written permission.
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
18
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
22 DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
23 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
26 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
29 */
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
30
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31 #include <stdlib.h>
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
32 #include <stdio.h>
72
03e4d9db3fd9 - major refactoring begins
Teemu Piippo <crimsondusk64@gmail.com>
parents: 71
diff changeset
33 #include "main.h"
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
34 #include "scriptreader.h"
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
35 #include "str.h"
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
36 #include "events.h"
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
37 #include "lexer.h"
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
38
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
39 static void unlink_events();
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
40 static list<event_info*> g_events;
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
41
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
42 // ============================================================================
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
43 // Read event definitions from file
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
44 void init_events()
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
45 {
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
46 lexer lx;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
47 lx.process_file ("events.def");
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
48 int num_events = 0;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
49
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
50 while (lx.get_next (tk_symbol))
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
51 {
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
52 event_info* e = new event_info;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
53 e->name = lx.get_token()->text;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
54 e->number = num_events++;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
55 g_events << e;
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
56 }
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
57
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
58 printf ("%d event definitions read.\n", num_events);
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
59 atexit (&unlink_events);
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
60 }
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
61
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
62 // ============================================================================
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
63 // Delete event definitions recursively
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
64 static void unlink_events()
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
65 {
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
66 print ("Freeing event information.\n");
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
67
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
68 for (event_info* e : g_events)
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
69 delete e;
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
70
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
71 g_events.clear();
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
72 }
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
73
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
74 // ============================================================================
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
75 // Finds an event definition by index
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
76 event_info* find_event_by_index (int idx)
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
77 {
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
78 return g_events[idx];
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
79 }
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
80
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
81 // ============================================================================
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
82 // Finds an event definition by name
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
83 event_info* find_event_by_name (string a)
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
84 {
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
85 for (event_info* e : g_events)
72
03e4d9db3fd9 - major refactoring begins
Teemu Piippo <crimsondusk64@gmail.com>
parents: 71
diff changeset
86 if (a.to_uppercase() == e->name.to_uppercase())
71
11f23fabf8a6 - moved sources to src/, migrated to cmake
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
87 return e;
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
88
72
03e4d9db3fd9 - major refactoring begins
Teemu Piippo <crimsondusk64@gmail.com>
parents: 71
diff changeset
89 return null;
73
1ee9b312dc18 - *hot stuff coming through*
Teemu Piippo <crimsondusk64@gmail.com>
parents: 72
diff changeset
90 }

mercurial