From 0fa8be1fb4596e5cac6d95d0dc03f2dc12eece96 Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 14 Nov 2020 18:29:24 -0600 Subject: luaengine: change definition for rest of usertypes --- src/frontend/mame/luaengine.cpp | 99 ++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 65 deletions(-) diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 8f6302794a3..64f1ee565fa 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -1114,7 +1114,6 @@ void lua_engine::initialize() })); thread_type.set("busy", sol::readonly(&context::busy)); thread_type.set("yield", sol::readonly(&context::yield)); - //emu.set("thread", thread_type); /* save_item library @@ -1229,7 +1228,7 @@ void lua_engine::initialize() * options.entries[] - get table of option entries (k=name, v=core_options::entry) */ - auto core_options_type = sol().registry().new_usertype("new", sol::no_constructor); + auto core_options_type = sol().registry().new_usertype("core_options", "new", sol::no_constructor); core_options_type.set("help", &core_options::output_help); core_options_type.set("command", &core_options::command); core_options_type.set("entries", sol::property([this](core_options &options) { @@ -1252,7 +1251,6 @@ void lua_engine::initialize() } return table; })); - sol().registry().set("core_options", core_options_type); /* core_options::entry library @@ -1268,7 +1266,7 @@ void lua_engine::initialize() * entry:has_range() - are min and max valid for entry */ - auto core_options_entry_type = sol().registry().new_usertype("new", sol::no_constructor); + auto core_options_entry_type = sol().registry().new_usertype("core_options_entry", "new", sol::no_constructor); core_options_entry_type.set("value", sol::overload( [this](core_options::entry &e, bool val) { if(e.type() != OPTION_BOOLEAN) @@ -1314,7 +1312,6 @@ void lua_engine::initialize() core_options_entry_type.set("minimum", &core_options::entry::minimum); core_options_entry_type.set("maximum", &core_options::entry::maximum); core_options_entry_type.set("has_range", &core_options::entry::has_range); - sol().registry().set("core_options_entry", core_options_entry_type); /* running_machine library @@ -1354,7 +1351,7 @@ void lua_engine::initialize() * machine.images[] - get available image devices table (k=type, v=device_image_interface) */ - auto machine_type = sol().registry().new_usertype("new", sol::no_constructor); + auto machine_type = sol().registry().new_usertype("machine", "new", sol::no_constructor); machine_type.set("exit", &running_machine::schedule_exit); machine_type.set("hard_reset", &running_machine::schedule_hard_reset); machine_type.set("soft_reset", &running_machine::schedule_soft_reset); @@ -1443,7 +1440,6 @@ void lua_engine::initialize() [](running_machine &m, const char *str) { m.popmessage("%s", str); }, [](running_machine &m) { m.popmessage(); })); machine_type.set("logerror", [](running_machine &m, const char *str) { m.logerror("[luaengine] %s\n", str); } ); - sol().registry().set("machine", machine_type); /* game_driver library @@ -1472,7 +1468,7 @@ void lua_engine::initialize() * driver.is_incomplete - official system with blatantly incomplete hardware/software */ - auto game_driver_type = sol().registry().new_usertype("new", sol::no_constructor); + auto game_driver_type = sol().registry().new_usertype("game_driver", "new", sol::no_constructor); game_driver_type.set("source_file", sol::property([] (game_driver const &driver) { return &driver.type.source()[0]; })); game_driver_type.set("parent", sol::readonly(&game_driver::parent)); game_driver_type.set("name", sol::property([] (game_driver const &driver) { return &driver.name[0]; })); @@ -1532,7 +1528,6 @@ void lua_engine::initialize() game_driver_type.set("no_sound_hw", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::NO_SOUND_HW) > 0; })); game_driver_type.set("mechanical", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::MECHANICAL) > 0; })); game_driver_type.set("is_incomplete", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::IS_INCOMPLETE) > 0; } )); - sol().registry().set("game_driver", game_driver_type); /* debugger_manager library (requires debugger to be active) @@ -1549,7 +1544,7 @@ void lua_engine::initialize() struct wrap_textbuf { wrap_textbuf(const text_buffer &buf) : textbuf(buf) { } std::reference_wrapper textbuf; }; - auto debugger_type = sol().registry().new_usertype("new", sol::no_constructor); + auto debugger_type = sol().registry().new_usertype("debugger", "new", sol::no_constructor); debugger_type.set("command", [](debugger_manager &debug, const std::string &cmd) { debug.console().execute_command(cmd, false); }); debugger_type.set("consolelog", sol::property([](debugger_manager &debug) { return wrap_textbuf(debug.console().get_console_textbuf()); })); debugger_type.set("errorlog", sol::property([](debugger_manager &debug) { return wrap_textbuf(debug.console().get_errorlog_textbuf()); })); @@ -1566,7 +1561,6 @@ void lua_engine::initialize() else debug.cpu().set_execution_running(); })); - sol().registry().set("debugger", debugger_type); /* wrap_textbuf library (requires debugger to be active) @@ -1601,7 +1595,7 @@ void lua_engine::initialize() * debug:wplist(space)[] - table of watchpoints (k=index, v=watchpoint) */ - auto device_debug_type = sol().registry().new_usertype("new", sol::no_constructor); + auto device_debug_type = sol().registry().new_usertype("device_debug", "new", sol::no_constructor); device_debug_type.set("step", [](device_debug &dev, sol::object num) { int steps = 1; if(num.is()) @@ -1659,7 +1653,6 @@ void lua_engine::initialize() } return table; }); - sol().registry().set("device_debug", device_debug_type); /* device_t library @@ -1678,7 +1671,7 @@ void lua_engine::initialize() * device.roms[] - device rom entry table (k=name, v=rom_entry) */ - auto device_type = sol().registry().new_usertype("new", sol::no_constructor); + auto device_type = sol().registry().new_usertype("device", "new", sol::no_constructor); device_type.set("name", &device_t::name); device_type.set("shortname", &device_t::shortname); device_type.set("tag", &device_t::tag); @@ -1738,7 +1731,6 @@ void lua_engine::initialize() table[rom.name()] = rom; return table; })); - sol().registry().set("device", device_type); /* addr_space library @@ -1929,7 +1921,7 @@ void lua_engine::initialize() * ioport.ports[] - ioports table (k=tag, v=ioport_port) */ - auto ioport_manager_type = sol().registry().new_usertype("new", sol::no_constructor); + auto ioport_manager_type = sol().registry().new_usertype("ioport", "new", sol::no_constructor); ioport_manager_type.set("count_players", &ioport_manager::count_players); ioport_manager_type.set("natkeyboard", &ioport_manager::natkeyboard); ioport_manager_type.set("type_group", [](ioport_manager &im, ioport_type type, int player) { @@ -1944,7 +1936,6 @@ void lua_engine::initialize() ioport_manager_type.set("type_seq", [](ioport_manager &m, ioport_type type, int player, input_seq_type seqtype) { return sol::make_user(input_seq(m.type_seq(type, player, seqtype))); }); - sol().registry().set("ioport", ioport_manager_type); /* natural_keyboard library @@ -1959,13 +1950,12 @@ void lua_engine::initialize() * natkeyboard.in_use - is the natural keyboard in use? */ - auto natkeyboard_type = sol().registry().new_usertype("new", sol::no_constructor); + auto natkeyboard_type = sol().registry().new_usertype("natkeyboard", "new", sol::no_constructor); natkeyboard_type.set("empty", sol::property(&natural_keyboard::empty)); natkeyboard_type.set("in_use", sol::property(&natural_keyboard::in_use, &natural_keyboard::set_in_use)); natkeyboard_type.set("paste", &natural_keyboard::paste); natkeyboard_type.set("post", [](natural_keyboard &nat, const std::string &text) { nat.post_utf8(text); }); natkeyboard_type.set("post_coded", [](natural_keyboard &nat, const std::string &text) { nat.post_coded(text); }); - sol().registry().set("natkeyboard", natkeyboard_type); /* ioport_port library @@ -1982,7 +1972,7 @@ void lua_engine::initialize() * port.fields[] - get ioport_field table (k=name, v=ioport_field) */ - auto ioport_port_type = sol().registry().new_usertype("new", sol::no_constructor); + auto ioport_port_type = sol().registry().new_usertype("ioport_port", "new", sol::no_constructor); ioport_port_type.set("tag", &ioport_port::tag); ioport_port_type.set("active", &ioport_port::active); ioport_port_type.set("live", &ioport_port::live); @@ -2009,7 +1999,6 @@ void lua_engine::initialize() } return f_table; })); - sol().registry().set("ioport_port", ioport_port_type); /* ioport_field library @@ -2054,7 +2043,7 @@ void lua_engine::initialize() * field.settings[] - ioport_setting table (k=value, v=name) */ - auto ioport_field_type = sol().registry().new_usertype("new", sol::no_constructor); + auto ioport_field_type = sol().registry().new_usertype("ioport_field", "new", sol::no_constructor); ioport_field_type.set("set_value", &ioport_field::set_value); ioport_field_type.set("set_input_seq", [](ioport_field &f, const std::string &seq_type_string, const input_seq &seq) { input_seq_type seq_type = s_seq_type_parser(seq_type_string); @@ -2140,7 +2129,6 @@ void lua_engine::initialize() result[setting.value()] = setting.name(); return result; })); - sol().registry().set("ioport_field", ioport_field_type); /* ioport_field_live library @@ -2187,7 +2175,7 @@ void lua_engine::initialize() * video.throttle_rate - throttle rate */ - auto video_type = sol().registry().new_usertype("new", sol::no_constructor); + auto video_type = sol().registry().new_usertype("video", "new", sol::no_constructor); video_type.set("begin_recording", sol::overload( [this](video_manager &vm, const char *filename, const char *format_string) { std::string fn = process_snapshot_filename(machine(), filename); @@ -2235,7 +2223,6 @@ void lua_engine::initialize() video_type.set("frameskip", sol::property(&video_manager::frameskip, &video_manager::set_frameskip)); video_type.set("throttled", sol::property(&video_manager::throttled, &video_manager::set_throttled)); video_type.set("throttle_rate", sol::property(&video_manager::throttle_rate, &video_manager::set_throttle_rate)); - sol().registry().set("video", video_type); /* sound_manager library @@ -2251,7 +2238,7 @@ void lua_engine::initialize() * sound.attenuation - sound attenuation */ - auto sound_type = sol().registry().new_usertype("new", sol::no_constructor); + auto sound_type = sol().registry().new_usertype("sound", "new", sol::no_constructor); sound_type.set("start_recording", &sound_manager::start_recording); sound_type.set("stop_recording", &sound_manager::stop_recording); sound_type.set("ui_mute", &sound_manager::ui_mute); @@ -2267,7 +2254,6 @@ void lua_engine::initialize() return sol::make_reference(L, sol::stack_reference(L, -1)); }); sound_type.set("attenuation", sol::property(&sound_manager::attenuation, &sound_manager::set_attenuation)); - sol().registry().set("sound", sound_type); /* input_manager library @@ -2290,7 +2276,7 @@ void lua_engine::initialize() * input.device_classes - returns device classes */ - auto input_type = sol().registry().new_usertype("new", sol::no_constructor); + auto input_type = sol().registry().new_usertype("input", "new", sol::no_constructor); input_type.set("code_from_token", [](input_manager &input, const char *token) { return sol::make_user(input.code_from_token(token)); }); input_type.set("code_pressed", [](input_manager &input, const input_code &code) { return input.code_pressed(code); }); input_type.set("code_to_token", [](input_manager &input, const input_code &code) { return input.code_to_token(code); }); @@ -2355,7 +2341,6 @@ void lua_engine::initialize() } return result; })); - sol().registry().set("input", input_type); /* input_class library @@ -2368,7 +2353,7 @@ void lua_engine::initialize() * devclass.devices[] */ - auto input_class_type = sol().registry().new_usertype("new", sol::no_constructor); + auto input_class_type = sol().registry().new_usertype("input_class", "new", sol::no_constructor); input_class_type.set("name", sol::property(&input_class::name)); input_class_type.set("enabled", sol::property(&input_class::enabled, &input_class::enable)); input_class_type.set("multi", sol::property(&input_class::multi, &input_class::set_multi)); @@ -2383,7 +2368,6 @@ void lua_engine::initialize() } return result; })); - sol().registry().set("input_class", input_class_type); /* input_device library @@ -2395,7 +2379,7 @@ void lua_engine::initialize() * device.items[] */ - auto input_device_type = sol().registry().new_usertype("new", sol::no_constructor); + auto input_device_type = sol().registry().new_usertype("input_device", "new", sol::no_constructor); input_device_type.set("name", sol::property(&input_device::name)); input_device_type.set("id", sol::property(&input_device::id)); input_device_type.set("devindex", sol::property(&input_device::devindex)); @@ -2409,7 +2393,6 @@ void lua_engine::initialize() } return result; })); - sol().registry().set("input_device", input_device_type); /* input_device_item library @@ -2420,14 +2403,13 @@ void lua_engine::initialize() * item:code() */ - auto input_device_item_type = sol().registry().new_usertype("new", sol::no_constructor); + auto input_device_item_type = sol().registry().new_usertype("input_device_item", "new", sol::no_constructor); input_device_item_type.set("name", sol::property(&input_device_item::name)); input_device_item_type.set("token", sol::property(&input_device_item::token)); input_device_item_type.set("code", [](input_device_item &item) { input_code code(item.device().devclass(), item.device().devindex(), item.itemclass(), ITEM_MODIFIER_NONE, item.itemid()); return sol::make_user(std::move(code)); }); - sol().registry().set("input_device_item", input_device_item_type); /* ui_input_manager library @@ -2439,7 +2421,7 @@ void lua_engine::initialize() * uiinput.presses_enabled - enable/disable ui key presses */ - auto uiinput_type = sol().registry().new_usertype("new", sol::no_constructor); + auto uiinput_type = sol().registry().new_usertype("uiinput", "new", sol::no_constructor); uiinput_type.set("find_mouse", [](ui_input_manager &ui) { int32_t x, y; bool button; @@ -2448,7 +2430,6 @@ void lua_engine::initialize() }); uiinput_type.set("pressed", &ui_input_manager::pressed); uiinput_type.set("presses_enabled", sol::property(&ui_input_manager::presses_enabled, &ui_input_manager::set_presses_enabled)); - sol().registry().set("uiinput", uiinput_type); /* render_target library @@ -2472,7 +2453,7 @@ void lua_engine::initialize() * target.zoom - enable zoom */ - auto target_type = sol().registry().new_usertype("new", sol::no_constructor); + auto target_type = sol().registry().new_usertype("target", "new", sol::no_constructor); target_type.set("view_bounds", [](render_target &rt) { const render_bounds b = rt.current_view().bounds(); return std::tuple(b.x0, b.x1, b.y0, b.y1); @@ -2489,7 +2470,6 @@ void lua_engine::initialize() target_type.set("orientation", sol::property(&render_target::orientation, &render_target::set_orientation)); target_type.set("screen_overlay", sol::property(&render_target::screen_overlay_enabled, &render_target::set_screen_overlay_enabled)); target_type.set("zoom", sol::property(&render_target::zoom_to_screen, &render_target::set_zoom_to_screen)); - sol().registry().set("target", target_type); /* render_container library @@ -2504,14 +2484,13 @@ void lua_engine::initialize() * container:is_empty() */ - auto render_container_type = sol().registry().new_usertype("new", sol::no_constructor); + auto render_container_type = sol().registry().new_usertype("render_container", "new", sol::no_constructor); render_container_type.set("orientation", &render_container::orientation); render_container_type.set("xscale", &render_container::xscale); render_container_type.set("yscale", &render_container::yscale); render_container_type.set("xoffset", &render_container::xoffset); render_container_type.set("yoffset", &render_container::yoffset); render_container_type.set("is_empty", &render_container::is_empty); - sol().registry().set("render_container", render_container_type); /* render_manager library @@ -2525,7 +2504,7 @@ void lua_engine::initialize() * render.targets[] - render_target table */ - auto render_type = sol().registry().new_usertype("new", sol::no_constructor); + auto render_type = sol().registry().new_usertype("render", "new", sol::no_constructor); render_type.set("max_update_rate", &render_manager::max_update_rate); render_type.set("ui_target", &render_manager::ui_target); render_type.set("ui_container", &render_manager::ui_container); @@ -2536,7 +2515,6 @@ void lua_engine::initialize() target_table[tc++] = &curr_rt; return target_table; })); - sol().registry().set("render", render_type); /* screen_device library @@ -2566,7 +2544,7 @@ void lua_engine::initialize() * screen:time_until_pos(vpos, hpos) - get the time until this screen pos is reached */ - auto screen_dev_type = sol().registry().new_usertype("new", sol::no_constructor); + auto screen_dev_type = sol().registry().new_usertype("screen_dev", "new", sol::no_constructor); screen_dev_type.set("draw_box", [](screen_device &sdev, float x1, float y1, float x2, float y2, uint32_t bgcolor, uint32_t fgcolor) { int sc_width = sdev.visible_area().width(); int sc_height = sdev.visible_area().height(); @@ -2693,7 +2671,6 @@ void lua_engine::initialize() return sol::make_reference(L, sol::stack_reference(L, -1)); }); screen_dev_type.set("time_until_pos", [](screen_device &sdev, int vpos, int hpos) { return sdev.time_until_pos(vpos, hpos).as_double(); }); - sol().registry().set("screen_dev", screen_dev_type); /* mame_ui_manager library @@ -2712,7 +2689,7 @@ void lua_engine::initialize() * ui.show_profiler - profiler display enabled */ - auto ui_type = sol().registry().new_usertype("new", sol::no_constructor); + auto ui_type = sol().registry().new_usertype("ui", "new", sol::no_constructor); ui_type.set("is_menu_active", &mame_ui_manager::is_menu_active); ui_type.set("options", [](mame_ui_manager &m) { return static_cast(&m.options()); }); ui_type.set("show_fps", sol::property(&mame_ui_manager::show_fps, &mame_ui_manager::set_show_fps)); @@ -2723,7 +2700,6 @@ void lua_engine::initialize() // sol converts char32_t to a string ui_type.set("get_char_width", [](mame_ui_manager &m, uint32_t utf8char) { return m.get_char_width(utf8char); }); ui_type.set("set_aggressive_input_focus", [](mame_ui_manager &m, bool aggressive_focus) { osd_set_aggressive_input_focus(aggressive_focus); }); - sol().registry().set("ui", ui_type); /* device_state_entry library @@ -2737,9 +2713,9 @@ void lua_engine::initialize() * state.value - get device state value */ - auto dev_space_type = sol().registry().new_usertype("new", sol::no_constructor); - dev_space_type.set("name", &device_state_entry::symbol); - dev_space_type.set("value", sol::property( + auto dev_state_type = sol().registry().new_usertype("dev_state", "new", sol::no_constructor); + dev_state_type.set("name", &device_state_entry::symbol); + dev_state_type.set("value", sol::property( [this](device_state_entry &entry) -> uint64_t { device_state_interface *state = entry.parent_state(); if(state) @@ -2757,9 +2733,8 @@ void lua_engine::initialize() machine().save().dispatch_presave(); } })); - dev_space_type.set("is_visible", &device_state_entry::visible); - dev_space_type.set("is_divider", &device_state_entry::divider); - sol().registry().set("dev_space", dev_space_type); + dev_state_type.set("is_visible", &device_state_entry::visible); + dev_state_type.set("is_divider", &device_state_entry::divider); /* rom_entry library @@ -2773,13 +2748,12 @@ void lua_engine::initialize() * rom:flags() - see romentry.h */ - auto rom_entry_type = sol().registry().new_usertype("new", sol::no_constructor); + auto rom_entry_type = sol().registry().new_usertype("rom_entry", "new", sol::no_constructor); rom_entry_type.set("name", &rom_entry::name); rom_entry_type.set("hashdata", &rom_entry::hashdata); rom_entry_type.set("offset", &rom_entry::get_offset); rom_entry_type.set("length", &rom_entry::get_length); rom_entry_type.set("flags", &rom_entry::get_flags); - sol().registry().set("rom_entry", rom_entry_type); /* memory_manager library @@ -2791,7 +2765,7 @@ void lua_engine::initialize() * memory.shares[] - table of memory shares (k=tag, v=memory_share) */ - auto memory_type = sol().registry().new_usertype("new", sol::no_constructor); + auto memory_type = sol().registry().new_usertype("memory", "new", sol::no_constructor); memory_type.set("banks", sol::property([this](memory_manager &mm) { sol::table table = sol().create_table(); for (auto &bank : mm.banks()) @@ -2810,7 +2784,6 @@ void lua_engine::initialize() table[share.first] = share.second.get(); return table; })); - sol().registry().set("memory", memory_type); /* memory_region library @@ -2824,7 +2797,7 @@ void lua_engine::initialize() * region.size */ - auto region_type = sol().registry().new_usertype("new", sol::no_constructor); + auto region_type = sol().registry().new_usertype("region", "new", sol::no_constructor); region_type.set("read_i8", ®ion_read); region_type.set("read_u8", ®ion_read); region_type.set("read_i16", ®ion_read); @@ -2842,7 +2815,6 @@ void lua_engine::initialize() region_type.set("write_i64", ®ion_write); region_type.set("write_u64", ®ion_write); region_type.set("size", sol::property(&memory_region::bytes)); - sol().registry().set("region", region_type); /* memory_share library @@ -2856,7 +2828,7 @@ void lua_engine::initialize() * region.size */ - auto share_type = sol().registry().new_usertype("new", sol::no_constructor); + auto share_type = sol().registry().new_usertype("share", "new", sol::no_constructor); share_type.set("read_i8", &share_read); share_type.set("read_u8", &share_read); share_type.set("read_i16", &share_read); @@ -2874,7 +2846,6 @@ void lua_engine::initialize() share_type.set("write_i64", &share_write); share_type.set("write_u64", &share_write); share_type.set("size", sol::property(&memory_share::bytes)); - sol().registry().set("share", share_type); /* output_manager library @@ -2889,7 +2860,7 @@ void lua_engine::initialize() * outputs:id_to_name(index) - get name for index */ - auto output_type = sol().registry().new_usertype("new", sol::no_constructor); + auto output_type = sol().registry().new_usertype("output", "new", sol::no_constructor); output_type.set("set_value", &output_manager::set_value); output_type.set("set_indexed_value", [](output_manager &o, char const *basename, int index, int value) { o.set_value(util::string_format("%s%d", basename, index).c_str(), value); @@ -2900,7 +2871,6 @@ void lua_engine::initialize() }); output_type.set("name_to_id", &output_manager::name_to_id); output_type.set("id_to_name", &output_manager::id_to_name); - sol().registry().set("output", output_type); /* device_image_interface library @@ -2932,7 +2902,7 @@ void lua_engine::initialize() * image.must_be_loaded */ - auto image_type = sol().registry().new_usertype("new", sol::no_constructor); + auto image_type = sol().registry().new_usertype("image", "new", sol::no_constructor); image_type.set("exists", &device_image_interface::exists); image_type.set("filename", &device_image_interface::filename); image_type.set("longname", &device_image_interface::longname); @@ -2959,7 +2929,6 @@ void lua_engine::initialize() image_type.set("is_creatable", sol::property(&device_image_interface::is_creatable)); image_type.set("is_reset_on_load", sol::property(&device_image_interface::is_reset_on_load)); image_type.set("must_be_loaded", sol::property(&device_image_interface::must_be_loaded)); - sol().registry().set("image", image_type); /* mame_machine_manager library -- cgit v1.2.3