Comparison

util/events.lua @ 7039:138241cc1b3a

util.events: Document data structures
author Matthew Wild <mwild1@gmail.com>
date Wed, 23 Dec 2015 11:17:26 +0000
parent 6777:5de6b93d0190
child 7424:ba83ff7d9bd7
comparison
equal deleted inserted replaced
7037:5d52e4ee2ae1 7039:138241cc1b3a
15 local next = next; 15 local next = next;
16 16
17 local _ENV = nil; 17 local _ENV = nil;
18 18
19 local function new() 19 local function new()
20 -- Map event name to ordered list of handlers (lazily built): handlers[event_name] = array_of_handler_functions
20 local handlers = {}; 21 local handlers = {};
22 -- Array of wrapper functions that wrap all events (nil if empty)
21 local global_wrappers; 23 local global_wrappers;
24 -- Per-event wrappers: wrappers[event_name] = wrapper_function
22 local wrappers = {}; 25 local wrappers = {};
26 -- Event map: event_map[handler_function] = priority_number
23 local event_map = {}; 27 local event_map = {};
28 -- Called on-demand to build handlers entries
24 local function _rebuild_index(handlers, event) 29 local function _rebuild_index(handlers, event)
25 local _handlers = event_map[event]; 30 local _handlers = event_map[event];
26 if not _handlers or next(_handlers) == nil then return; end 31 if not _handlers or next(_handlers) == nil then return; end
27 local index = {}; 32 local index = {};
28 for handler in pairs(_handlers) do 33 for handler in pairs(_handlers) do