TFactory (anche detta ClassForSO): caricare una classe da file a Run-Time in C++...
L’idea mi é venuta durante lo sviluppo di MGS: sapevo che alcuni miei colleghi (SbatMan, o’Troll, Sax) avevano fatto una cosa in questa direzione per il loro progetto di OOP.
In particolare loro avevano realizzato una Template Factory: molto intelligente come approccio, dato che questo svincolava da una semplice Factory di Classi ad una ben più astratta Factory Parametrizzata.
C’era però un limite legato ad alcune restrizioni sulle Gerarchie (alcuni typedef
obbligatori per gestire gli handler delle SO) che una Classe che si voleva istanziare a Run-Time doveva rispettare: ho eliminato il tutto approfondendo un pò l’argomento:
# man dlsym
Avendo studiato il loro codice per benino (come fanno i programmatori seri…;-)), il risultato é stato una leggera trasformazione del Template che ora permette di:
<ul> <li>Caricare una classe da una SO (Shared Object Library) a Run-Time (come prima);</li> <li>Assegnare l’oggetto istanziato tramite UP-Casting ad una Super-Classe (come prima);</li> <li>Nessuna restrizione sulle Gerarchie (unica differenza con il lavoro dei miei colleghi).</li> </ul> Cosa ho fatto quindi io di nuovo? La mia versione della TFactory
(così il nome della Classe) può essere portata ovunque continuando a funzionare sempre.
Prossimamente posterò il codice completo o un link allo stesso.
Da notare che, al momeno, il sito ufficiale non é stato ancora aggiornato.
<div style="clear:both; padding-bottom: 0.25em;"></div>