Bon, di recente mi sto mettendo a sviluppare in modo serio (Con tutti i controlli del caso a prova di utente idiota e seguendo le linee guida) librerie che si adattano a diversi scopi. Principalmente, per mero esercizio, quelle relative alle diverse basi di dato o adt.
Nonostante ritenga di aver fatto ottimi passi avanti da alcuni anni a quest parte, c'è ancora una cosa che non mi piace nelle librerie che sviluppo.
Per quanto siano generiche e adattabili, dipendono comunque sempre da una seconda libreria che definisca un tipo item_t e relative funzioni di base per richiamarne i campi o altre procedure di servizio in merito.
Ma se io volessi fare in modo che la libreria sia indipendente dai dati?
PEr spiegarmi meglio... di recente ho creato una sorta di Hashmap che funzioni in modo simile all'hashmap del java e risponda a metodi simili
però nel mio caso, ora come ora, la hashmap da me creata accetta solo oggetti da inserire di tipo item_t. Se un utente la volesse usare per inserire altri tipi di oggetti o, peggio, se in uno stesso programma ci fosse necessità di usarla per diversi tipi di oggetti, sarebbe problematico.
Ricordo che quando feci, l'anno scorso, l'esame di algoritmi di programmazione avanzata, il professore ci fornì un implementazione di hashmap che funzionava in modo indifferente da quali oggetti vi andassero inseriti. Ricordo che il tutto fu creato tramite l'uso di puntatori a void (E credo sia un metodo molto utilizzato), ma non ci fu spiegato a fondo perché non faceva parte degli obiettivi del corso in questione.
Qualcuno potrebbe gentilmente illuminarmi in merito o fornirmi qualche guida, anche in inglese ovviamente, che spieghi ciò a cui sono interessato?