Costruzione di una classe derivata da TAG

Trasformare una qualunque classe precedente in tag è molto semplice; consideriamo il caso della classe DocumentSize, in uso da molti anni in Colibrì; nella dichiarazione della classe DocumentSize (DocumentSize.h) é stato sufficiente affermare la sua discendenza da TAG  ed aggiungere alla fine la macro  __use_tag_funcs.

La dichiarazione :public TAGS::TAG indica la presenza dell’interfaccia TAG.  La macro __use_tag_funcs posta alla fine della classe indica la presenza delle funzioni virtuali Read, Write e New, che dovranno essere scritte nel file sorgente cpp della classe;

Modifiche nel file DocumenSize.cpp: Nella funzione del costruttore è stata aggiunta la macro _tag_register  per la registrazione della classe nell’applicazione; la stringa, che  definisce l’id assegnato, può essere una qualunque sequenza alfanumerica, ma è opportuno assegnargli un valore mnemonico;

Aggiunta delle funzioni virtuali:  le funzioni Read e Write erano già presenti in DocSize, e non sono state modificate; La funzione New è stata aggiunta mediante una macro in testa al codice sorgente. Di seguito si riporta il frammento di codice relativo alle due funzioni:

Le macro BEGIN_READ .. END_READBEGIN_WRITE .. END_WRITE corrispondono alle classiche funzioni di lettura e scrittura della classe su file, e si rimanda all’articolo specifico sulla progettazione delle classi di Colibri.

La macro _new_tag_func è stata inserita dopo il blocco di dichiarazioni posto  in testa al file DocumentSize.cpp e definisce la funzione New() della classe

Con queste modifiche la classe potrà ora essere inserita in una tag_list; notare che le modifiche non ne hanno alterato l’utilizzabilità con i precedenti metodi, hanno però  aggiunto le nuove funzionalità richieste per l’utilizzo come tag.

Pages: 1 2 3 4
%d bloggers like this:
Skip to toolbar