diff options
author | jaortega <jaortega> | 2001-03-01 23:56:08 +0000 |
---|---|---|
committer | jaortega <jaortega> | 2001-03-01 23:56:08 +0000 |
commit | 3cd180b262db4490f811aaa2f19ef7a4d00ce24f (patch) | |
tree | 95bba17660bd67204609f4916a64cb6c86f9122b /mixlib/mix_vm.c | |
parent | f20d7ac8e744fde911545618e96d52c26f008910 (diff) | |
download | mdk-3cd180b262db4490f811aaa2f19ef7a4d00ce24f.tar.gz mdk-3cd180b262db4490f811aaa2f19ef7a4d00ce24f.tar.bz2 |
mix device operations handled via a vtable
Diffstat (limited to 'mixlib/mix_vm.c')
-rw-r--r-- | mixlib/mix_vm.c | 19 |
1 files changed, 19 insertions, 0 deletions
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) |