#include "device.h" #include #include #include static device_vtable_t const device_vtable = { device_read, device_write, #ifdef WITH_GUI device_draw, #endif device_deinit }; void device_init( device_t *device, const char *name ) { device->name = strdup( name ); device->vtable = &device_vtable; } void device_copy( device_t *to, device_t *from ) { memcpy( to, from, sizeof( device_t ) ); to->name = strdup( from->name ); } uint8_t device_read( void *obj, uint16_t addr ) { device_t *device = (device_t *)obj; fprintf( stderr, "WARN: read access on abstract device '%s' on address %04X\n", device->name, addr ); return 0; } void device_write( void *obj, uint16_t addr, uint8_t data ) { device_t *device = (device_t *)obj; fprintf( stderr, "WARN: write access on abstract device '%s' on address %04X\n", device->name, addr ); } #ifdef WITH_GUI void device_draw( void *obj, SDL_Renderer *renderer ) { // ignore rendering of abstract device } #endif void device_deinit( void *obj ) { device_t *device = (device_t *)obj; free( device->name ); }