indexing description: "[ Abstract subsystem that can be enabled and disabled. ]" date: "$Date$" revision: "$Revision$" deferred class EM_SUBSYSTEM inherit EM_CONSTANTS export {NONE} all end EM_SHARED_ERROR_HANDLER export {NONE} all end SDL_FUNCTIONS_EXTERNAL export {NONE} all end FASTEVENTS_FUNCTIONS_EXTERNAL export {NONE} all end feature -- Status report is_enabled: BOOLEAN is -- Is the subsystem enabled? deferred end feature -- Subsystem management enable is -- Enable subsystem. require not_enabled: not is_enabled deferred end disable is -- Disable subsystem. require enabled: is_enabled deferred end base_enable is -- Enable basic systems. do if enabled_subsystem_count.item = 0 then if -1 = sdl_init_external (Em_init_video | Em_init_timer) then Error_handler.raise_error (Error_handler.Em_error_init_sdl, []) elseif -1 = fe_init_external then Error_handler.raise_error (Error_handler.Em_error_init_fastevents, []) end end enabled_subsystem_count.put (enabled_subsystem_count.item + 1) end base_disable is -- Disable basic systems. do enabled_subsystem_count.put (enabled_subsystem_count.item - 1) if enabled_subsystem_count.item = 0 then fe_quit_external end end enabled_subsystem_count: DS_CELL [INTEGER] is -- Count of enabled subsystems once create Result.make (0) end end