From 3cd180b262db4490f811aaa2f19ef7a4d00ce24f Mon Sep 17 00:00:00 2001 From: jaortega Date: Thu, 1 Mar 2001 23:56:08 +0000 Subject: mix device operations handled via a vtable --- mixlib/mix_vm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mixlib/mix_vm.c') diff --git a/mixlib/mix_vm.c b/mixlib/mix_vm.c index 979d558..6da21e2 100644 --- a/mixlib/mix_vm.c +++ b/mixlib/mix_vm.c @@ -87,6 +87,8 @@ mix_vm_delete (mix_vm_t * vm) { int i; + g_return_if_fail (vm != NULL); + if (vm->line_table != NULL) g_tree_destroy (vm->line_table); if (vm->address_table != NULL) g_tree_destroy (vm->address_table); if (vm->symbol_table != NULL) mix_symbol_table_delete (vm->symbol_table); @@ -97,6 +99,23 @@ mix_vm_delete (mix_vm_t * vm) g_free (vm); } +/* connect devices to a virtual machine */ +mix_device_t * +mix_vm_connect_device (mix_vm_t *vm, mix_device_t *device) +{ + mix_device_t *old; + mix_device_type_t type; + + g_return_val_if_fail (vm != NULL, NULL); + g_return_val_if_fail (device != NULL, NULL); + + type = mix_device_type (device); + old = vm->devices[type]; + vm->devices[type] = device; + + return old; +} + /* Reset a vm (set state as of a newly created one) */ void mix_vm_reset (mix_vm_t * vm) -- cgit v1.2.3