Bonjour à tous,
Voilà je bloque sur un problème de conception et je me dis que peut-être les talents présents sur le forum vont pouvoir m'aider
Je programme un émulateur donc la rapidité du code est quand même important même si je privilégie la lisibilité du code.
Je gère 2 Interfaces :
On a ensuite les devices qui implémente telle ou telle interface.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Class IWordReadable { u32 readWord(u32 addr); u8 readUpperByte(u32 addr); // typedef ReadByteFunction : u8 (*f) (u32) u8 readLowerByte(u32 addr); // typedef ReadByteFunction : u8 (*f) (u32) } Class IByteReadable { u8 readByte(u32 addr); // typedef ReadByteFunction : u8 (*f) (u32) }
Je voudrais ensuite par rapport à une adresse donnée aller taper directement la fonction ReadByteFunction correspondante.
Biensûr la seule solution que j'ai trouvé est de passer par les pointeurs de fonctions de la sorte :
J'aurai voulu éviter de passer par des pointeurs de fonctions et mettre dans le tableau directement des pointeurs sur objets mais le problème c'est que pour une device implémentant IWordReadable il y'a 2 fonctions readBytes possible ce qui m'oblige à pointer à un niveau plus fin soit au niveau de la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //device 1 implemente IWordReadable //device 2 implemente IByteReadable adressSpace[0x00000] = &device1->readUpperByte; adressSpace[0x00001] = &device1->readLowerByte; adressSpace[0x00002] = &device2->readByte; adressSpace[0x00003] = &device2->readByte;
Partager