Skip to content

Commit f3a9860

Browse files
committed
convert mpi to use and support only c-api
1 parent 8555604 commit f3a9860

12 files changed

+299
-533
lines changed

libcommon/include/vcc/bus/cartridge_capi.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ extern "C"
5454
struct cartridge_capi_context
5555
{
5656
// FIXME-CHET: This needs a reset callback
57-
const PakAssertInteruptHostCallback assert_interrupt;
58-
const PakAssertCartridgeLineHostCallback assert_cartridge_line;
59-
const PakWriteMemoryByteHostCallback write_memory_byte;
60-
const PakReadMemoryByteHostCallback read_memory_byte;
61-
const PakAppendCartridgeMenuHostCallback add_menu_item;
57+
PakAssertInteruptHostCallback assert_interrupt;
58+
PakAssertCartridgeLineHostCallback assert_cartridge_line;
59+
PakWriteMemoryByteHostCallback write_memory_byte;
60+
PakReadMemoryByteHostCallback read_memory_byte;
61+
PakAppendCartridgeMenuHostCallback add_menu_item;
6262
};
6363

6464
}

mpi/cartridge_slot.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace vcc::modules::mpi
2929
{
3030
public:
3131

32-
using context_type = ::vcc::bus::cartridge_context;
32+
using context_type = cartridge_capi_context;
3333
using cartridge_type = ::vcc::bus::cartridge;
3434
using cartridge_ptr_type = ::std::unique_ptr<cartridge_type>;
3535
using name_type = cartridge_type::name_type;
@@ -150,11 +150,11 @@ namespace vcc::modules::mpi
150150
menu_items_.push_back(item);
151151
}
152152

153-
void enumerate_menu_items(context_type& context) const
153+
void enumerate_menu_items(void* host_key, const context_type& context) const
154154
{
155155
for (const auto& item : menu_items_)
156156
{
157-
context.add_menu_item(item.name.c_str(), item.menu_id, item.type);
157+
context.add_menu_item(host_key, item.name.c_str(), item.menu_id, item.type);
158158
}
159159
}
160160

mpi/configuration_dialog.cpp

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
// VCC (Virtual Color Computer). If not, see <http://www.gnu.org/licenses/>.
1717
////////////////////////////////////////////////////////////////////////////////
1818
#include "configuration_dialog.h"
19+
#include "multipak_cartridge.h"
1920
#include "resource.h"
2021
#include <vcc/common/DialogOps.h>
2122
#include <vcc/utils/critical_section.h>
@@ -44,23 +45,14 @@ namespace
4445

4546
}
4647

47-
configuration_dialog::configuration_dialog(
48-
HINSTANCE module_handle,
49-
multipak_configuration& configuration,
50-
multipak_controller& mpi)
51-
:
52-
module_handle_(module_handle),
53-
configuration_(configuration),
54-
mpi_(mpi)
55-
{}
5648

5749

5850
void configuration_dialog::open()
5951
{
6052
if (!dialog_handle_)
6153
{
6254
dialog_handle_ = CreateDialogParam(
63-
module_handle_,
55+
gModuleInstance,
6456
MAKEINTRESOURCE(IDD_DIALOG1),
6557
GetActiveWindow(),
6658
callback_procedure,
@@ -89,9 +81,9 @@ void configuration_dialog::select_new_cartridge(slot_id_type slot)
8981
dlg.setFlags(OFN_FILEMUSTEXIST);
9082
if (dlg.show(0, dialog_handle_))
9183
{
92-
mpi_.eject_cartridge(slot);
84+
mpi_eject_cartridge(slot);
9385

94-
if (const auto mount_result(mpi_.mount_cartridge(slot, dlg.path()));
86+
if (const auto mount_result(mpi_mount_cartridge(slot, dlg.path()));
9587
mount_result == cartridge_loader_status::success)
9688
{
9789
configuration_.slot_cartridge_path(slot, dlg.path());
@@ -107,7 +99,7 @@ void configuration_dialog::select_new_cartridge(slot_id_type slot)
10799
MessageBox(dialog_handle_, error_string.c_str(), "Load Error", MB_OK | MB_ICONERROR);
108100
}
109101

110-
mpi_.build_menu();
102+
mpi_build_menu();
111103
}
112104
}
113105

@@ -127,7 +119,7 @@ void configuration_dialog::set_selected_slot(slot_id_type slot)
127119
}
128120

129121
// FIXME-CHET: Maube move this to the callsite or when the dialog closes or at least make it optional?
130-
mpi_.switch_to_slot(slot);
122+
mpi_switch_to_slot(slot);
131123
configuration_.selected_slot(slot);
132124
}
133125

@@ -138,7 +130,7 @@ void configuration_dialog::display_slot_description(slot_id_type slot)
138130
IDC_MODINFO,
139131
WM_SETTEXT,
140132
0,
141-
reinterpret_cast<LPARAM>(mpi_.slot_description(slot).c_str()));
133+
reinterpret_cast<LPARAM>(mpi_slot_description(slot).c_str()));
142134
}
143135

144136
void configuration_dialog::update_slot_details(slot_id_type slot)
@@ -148,14 +140,14 @@ void configuration_dialog::update_slot_details(slot_id_type slot)
148140
gSlotUiElementIds[slot].edit_box_id,
149141
WM_SETTEXT,
150142
0,
151-
reinterpret_cast<LPARAM>(mpi_.slot_label(slot).c_str()));
143+
reinterpret_cast<LPARAM>(mpi_slot_label(slot).c_str()));
152144

153145
SendDlgItemMessage(
154146
dialog_handle_,
155147
gSlotUiElementIds[slot].insert_button_id,
156148
WM_SETTEXT,
157149
0,
158-
reinterpret_cast<LPARAM>(mpi_.empty(slot) ? ">" : "X"));
150+
reinterpret_cast<LPARAM>(mpi_empty(slot) ? ">" : "X"));
159151
}
160152

161153

@@ -175,9 +167,9 @@ void configuration_dialog::eject_or_select_new_cartridge(slot_id_type slot)
175167
}
176168

177169

178-
if (!mpi_.empty(slot))
170+
if (!mpi_empty(slot))
179171
{
180-
mpi_.eject_cartridge(slot);
172+
mpi_eject_cartridge(slot);
181173
configuration_.slot_cartridge_path(slot, {});
182174

183175
}
@@ -194,7 +186,7 @@ void configuration_dialog::eject_or_select_new_cartridge(slot_id_type slot)
194186
display_slot_description(slot);
195187
}
196188

197-
mpi_.build_menu();
189+
mpi_build_menu();
198190
}
199191

200192
INT_PTR CALLBACK configuration_dialog::callback_procedure(
@@ -236,7 +228,7 @@ INT_PTR configuration_dialog::process_message(
236228
update_slot_details(slot);
237229
}
238230

239-
set_selected_slot(mpi_.selected_switch_slot());
231+
set_selected_slot(mpi_selected_switch_slot());
240232
return TRUE;
241233

242234
case WM_COMMAND:

mpi/configuration_dialog.h

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,60 +21,17 @@
2121
#include <Windows.h>
2222

2323

24-
class multipak_controller
25-
{
26-
public:
27-
28-
using context_type = ::vcc::bus::cartridge_context;
29-
using mount_status_type = ::vcc::utils::cartridge_loader_status;
30-
using slot_id_type = ::multipak_configuration::slot_id_type;
31-
using path_type = ::multipak_configuration::path_type;
32-
using label_type = ::std::string;
33-
using description_type = ::std::string;
34-
35-
36-
public:
37-
38-
virtual ~multipak_controller() = default;
39-
40-
virtual label_type slot_label(slot_id_type slot) const = 0;
41-
virtual description_type slot_description(slot_id_type slot) const = 0;
42-
43-
virtual bool empty(slot_id_type slot) const = 0;
44-
45-
virtual void eject_cartridge(slot_id_type slot) = 0;
46-
virtual mount_status_type mount_cartridge(slot_id_type slot, const path_type& filename) = 0;
47-
48-
virtual void switch_to_slot(slot_id_type slot) = 0;
49-
virtual slot_id_type selected_switch_slot() const = 0;
50-
virtual slot_id_type selected_scs_slot() const = 0;
51-
52-
virtual void build_menu() = 0;
53-
};
54-
55-
5624
class configuration_dialog
5725
{
5826
public:
5927

60-
configuration_dialog(
61-
HINSTANCE module_handle,
62-
multipak_configuration& configuration,
63-
multipak_controller& mpi);
64-
65-
configuration_dialog(const configuration_dialog&) = delete;
66-
configuration_dialog(configuration_dialog&&) = delete;
67-
68-
configuration_dialog& operator=(const configuration_dialog&) = delete;
69-
configuration_dialog& operator=(configuration_dialog&&) = delete;
70-
7128
void open();
7229
void close();
7330

7431

7532
private:
7633

77-
using slot_id_type = ::multipak_controller::slot_id_type;
34+
using slot_id_type = std::size_t;
7835

7936
void select_new_cartridge(slot_id_type slot);
8037
void set_selected_slot(slot_id_type slot);
@@ -95,9 +52,6 @@ class configuration_dialog
9552

9653
private:
9754

98-
const HINSTANCE module_handle_;
99-
multipak_configuration& configuration_;
100-
multipak_controller& mpi_;
10155
HWND dialog_handle_ = nullptr;
10256
HWND parent_handle_ = nullptr;
10357
};

mpi/mpi.cpp

Lines changed: 0 additions & 57 deletions
This file was deleted.

mpi/mpi.vcxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,13 @@
9595
<ItemGroup>
9696
<ClCompile Include="cartridge_slot.cpp" />
9797
<ClCompile Include="configuration_dialog.cpp" />
98-
<ClCompile Include="mpi.cpp" />
9998
<ClCompile Include="multipak_cartridge.cpp" />
10099
<ClCompile Include="multipak_configuration.cpp" />
101100
</ItemGroup>
102101
<ItemGroup>
103102
<ClInclude Include="cartridge_slot.h" />
104103
<ClInclude Include="multipak_cartridge.h" />
105104
<ClInclude Include="configuration_dialog.h" />
106-
<ClInclude Include="multipak_cartridge_context.h" />
107105
<ClInclude Include="multipak_configuration.h" />
108106
<ClInclude Include="resource.h" />
109107
</ItemGroup>

mpi/mpi.vcxproj.filters

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
<ClCompile Include="configuration_dialog.cpp">
88
<Filter>Source Files</Filter>
99
</ClCompile>
10-
<ClCompile Include="mpi.cpp">
11-
<Filter>Source Files</Filter>
12-
</ClCompile>
1310
<ClCompile Include="multipak_cartridge.cpp">
1411
<Filter>Source Files</Filter>
1512
</ClCompile>
@@ -30,9 +27,6 @@
3027
<ClInclude Include="configuration_dialog.h">
3128
<Filter>Header Files</Filter>
3229
</ClInclude>
33-
<ClInclude Include="multipak_cartridge_context.h">
34-
<Filter>Header Files</Filter>
35-
</ClInclude>
3630
<ClInclude Include="multipak_configuration.h">
3731
<Filter>Header Files</Filter>
3832
</ClInclude>

0 commit comments

Comments
 (0)