The Dark Side of Hardware Upgrade Forum

...bringing out the worst in you since 2003...
Oggi è sab ott 10, 2026 1:37 pm

Tutti gli orari sono UTC +1 ora


-->
-->

Apri un nuovo argomento Rispondi all’argomento  [ 1 messaggio ] 
Autore Messaggio
 Oggetto del messaggio: Plugins
MessaggioInviato: lun ott 25, 2010 12:01 pm 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Non mi sembra il forum giusto ma ci provo.

Ho creato un DGC (dynamic gui creator) usando qt. È un sistema per creare gui qt senza dover scrivere tutto il codice ma solo xml files per gli oggetti e un plugin c++ per le azioni. Funziona benissimo ma adesso lo sto migliorando.
Dovendo scrivere 2 volte lo stesso identico codice per gestire un phonebook in 2 diverse gui, ho pensato bene di creare un plugin phonebook.
Avendoci preso gusto, ho scritto altri plugins per gestire altre cose ed ora ho il seguente problema:
il plugin che gestisce l'update della risposta di un server ha bisogno di informazioni dal phonebook così come altri plugins hanno bisogno di info da parte di altri plugins. Insomma i plugins dovrebbero comunicare tra loro in qualche modo.

Ho teoricamente (non l'ho ancora scritto perchè sto lavorando anche su altro) risolto in questo modo:
- ho creato un prototipo di funzione che tutti i plugins dovranno usare (definito nell'interfaccia dei plugins - pure abstract class).
Codice:
typedef boost::function< QStringList (QStringList&) > DGCPluginFunc;

- ho creato una mappa nome-funz/funz
Codice:
typedef std::map<QString, DGCPluginFunc> MapDGCPluginFunc;

- ogni plugin una volta istanziato deve chiamare la SetAvailableFunctions passando via mappa le proprie funzioni pubbliche.
- ogni plugin una volta istanziato deve chiamare la SetNeededFunctions passando via mappa le funzioni di cui ha bisogno.

Il plugin loader, finito il caricamento dei plugins, dovrà controllare che ci siano tutte le funzioni, univoche, di cui i vari plugins hanno bisogno.
Se tutto è a posto, passa la mappa completa di tutte le funzioni ai plugins ed il programma può continuare.
Quando un plugin deve chiamare una funzione, la esegue via mappa (es. mapFunz["NOME_FUNZ"](params); )


Boh, è la prima volta che lavoro con comunicazione tra plugins, qualcuno ha qualche dritta da darmi ?
ho come la sensazione che ci sia qualche soluzione migliore...
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 1 messaggio ] 
-->

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Vai a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it